توابع از دست دادن واگرایی بتا در Scikit Learn

موسسه پایاپروژه به عنوان متصدی انجام پروژه های پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.

در انجام این پروژه پایتون، نحوه استفاده از Scikit Learn را برای تجسم توابع مختلف از دست دادن واگرایی بتا خواهیم آموخت. ابتدا متوجه خواهیم شد که توابع از دست دادن واگرایی بتا چیست و سپس پیاده سازی آن را در پایتون با استفاده از تابع _beta_divergence کتابخانه sklearn.decomposition._nmf در کتابخانه یادگیری scikit بررسی خواهیم کرد.

پروژه پایتون scikit learn

تابع از دست دادن واگرایی بتا در پروژه پایتون

توابع زیان واگرایی بتا نوعی تابع ضرر هستند که برای اندازه گیری تفاوت بین دو توزیع احتمال استفاده می شود . واگرایی با مقایسه نقاط دو توزیع اندازه گیری می شود.

از این فاصله می توان برای بهینه سازی تطابق توزیع ها و تعیین بهترین مدل برازش استفاده کرد. این برای کارهایی مانند یادگیری بدون نظارت ، که در آن توزیع‌های احتمال برای نمایش داده‌ها استفاده می‌شود، مفید است. واگرایی بتا به توابع زیان دیگری مانند واگرایی کول بک-لایبلر و فاصله متغیر کل مربوط می شود.

تابع تلفات واگرایی بتا معمولاً در فاکتورسازی ماتریس غیرمنفی NMF استفاده می شود. در NMF، هدف این است که یک ماتریس غیر منفی را به دو ماتریس غیر منفی با رتبه پایین تر تبدیل کنیم، که معمولا به عنوان ماتریس پایه و ماتریس ضریب نامیده می شود.

تابع تلفات واگرایی بتا به عنوان یک تابع هدف برای بهینه سازی فرآیند فاکتورسازی با به حداقل رساندن اختلاف بین ماتریس هدف و ماتریس بازسازی شده استفاده می شود. این توابع ترجیح داده می شوند زیرا نسبت به سایر توابع از دست دادن برای NMF انعطاف پذیرتر هستند و می توان آنها را روی داده هایی استفاده کرد که کاملاً غیر منفی نیستند و دارای طیف گسترده ای از مقادیر هستند.

برخی از موارد استفاده از این توابع در پروژه های پایتون از دست دادن شامل خوشه بندی، تشخیص ناهنجاری، تقسیم بندی تصویر، پردازش زبان طبیعی، تجزیه و تحلیل سری های زمانی و سیستم های توصیه می شود.

فرمول کاهش واگرایی بتا را می توان به صورت زیر بیان کرد:

معرفی علائم:

X و Y ماتریس ها هستند.

xiو  yiعناصر X و Y هستند.

β فراپارامتری است که درجه واگرایی را کنترل می کند.

واگرایی بتا تعمیم سایر معیارهای واگرایی مانند واگرایی  Kullback-Leibler (KL) و فاصله کل تنوعTV  است. شکل خاص واگرایی بتا به انتخاب یک پارامتر بستگی دارد که معمولاً به عنوان β نشان داده می شود. وقتی β روی 1 تنظیم می شود، با واگرایی KL مطابقت دارد، و زمانی که β به بی نهایت تمایل دارد، فاصله تلویزیون را تقریب می زند.

بر اساس مقادیر مختلف β ما می توانیم توابع از دست دادن واگرایی بتا متفاوتی را دریافت کنیم. برخی از توابع از دست دادن واگرایی بتا عبارتند از:

واگرایی Itakura-Saito: این تابع واگرایی با β=0 این به عنوان تعریف شده است.

واگرایی  :Kullback-Leiblerاین تابع واگرایی با β=1 این واگرایی برای اندازه گیری تفاوت بین دو توزیع احتمال استفاده می شود.

هنجار Frobenius: این تابع واگرایی با β=2 این اساساً فاصله بین دو ماتریس ( خطای میانگین مربع ) را محاسبه می کند.

تابع تلفات واگرایی بتا که برای یک برنامه خاص است به ویژگی های داده بستگی دارد. به طور کلی، تابع از دست دادن هنجار Frobenius انتخاب خوبی برای داده هایی است که کاملاً غیر منفی هستند. واگرایی Kullback-Leibler انتخاب خوبی برای داده هایی است که کاملاً غیر منفی نیستند. واگرایی Itakura-Saito انتخاب خوبی برای داده هایی است که دارای طیف وسیعی از مقادیر هستند.

 

پیاده سازی کد

برای پیاده سازی و انجام این پروژه پایتون، ابتدا کتابخانه های مورد نیاز را وارد می کنیم.

 

 Importing the libraries#

import numpy as np

import matplotlib.pyplot as plt

from sklearn.decomposition._nmf import _beta_divergence

 

مقایسه توابع:

اکنون، توابع مختلف از دست دادن واگرایی بتا را رسم و مقایسه خواهیم کرد.

 Plotting and comparing the beta divergence for different values of bet#  

 Declaring the x and y variables#

x = np.linspace(0, 5, 100)

y = np.zeros(x.shape)

  

 beta <= 0: Itakura-Saito divergence#

 beta = 1: Kullback-Leibler divergence#

 beta = 2: Frobenius norm (Euclidean distance)#

beta_loss = [‘Itakura-Saito’, ‘Kullback-Leibler’, ‘Frobenius norm’]

beta = [0.0, 1.0, 2.0]

  

 Plotting the graph#

for j, beta in enumerate(beta):    

    for i, xi in enumerate(x):

         Computing the beta divergence#

        y[i] = _beta_divergence(1, xi, 1, beta)

      

     Setting beta loss name with the corresponding value of beta#

    name = f’beta = {beta}: {beta_loss[j]}’

  

    Plotting the graph#

    plt.plot(x, y, label=name)

  

 Setting the graph parameters#

plt.xlabel(“x”)

plt.ylabel(“D(1, x)”)

plt.title(“Beta-Divergence(1, x)”)

plt.legend(loc=’upper center’)

plt.grid(True)

plt.axis([0, 4, 0, 3])

  

 Displaying the graph#

()plt.show

 

خروجی:

خروجی توابع از دست دادن واگرایی بتا

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این زمینه را پر کنید
این زمینه را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

20 − شانزده =

سفارش پروژه