کاربرد جبر خطی در علم داده‌ها و یادگیری ماشین — بخش دوم

۱۴۴۱ بازدید
آخرین به‌روزرسانی: ۳۰ اردیبهشت ۱۴۰۲
زمان مطالعه: ۱۴ دقیقه
دانلود PDF مقاله
کاربرد جبر خطی در علم داده‌ها و یادگیری ماشین — بخش دوم

در بخش اول مفاهیم جبر خطی را مورد بررسی قرار دادیم. در بخش دوم مبحث کاربرد جبر خطی در علم داده‌ها، به آموزش روش حل معادلات به کمک ماتریس‌ها می پردازیم و مفاهیم پیشرفته جبر خطی و کاربرد آنها در علم داده‌ها را مورد بررسی قرار خواهیم داد. در ابتدا، دو روش حل معادلات ماتریسی را توضیح می دهیم.

997696

4- حل مسئله

برای حل معادلات ماتریسی، از دو روش «فرم سطری پلکانی» و «معکوس ماتریس» استفاده خواهیم کرد.

1-4- ایجاد ماتریس سطری پلکانی

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

  1. تغییرات باید راه‌حل را حفظ کنند؛ یعنی تغییرات نباید باعث عوض شدن راه‌حل شوند.
  2. تغییرات باید قابل برگشت باشند.

تغییرات مجاز:

  1. می‌توان مرتبه معادلات را جابجا کرد.
  2. می‌توان هر دو سمت معادلات را در یک عدد ثابت غیر صفر (مانند c) ضرب کرد.
  3. می‌توان یک معادله را در یک عدد ثابت غیر صفر ضرب کرد و سپس آن را به معادله اضافه کرد.

با اجرا و تمرین این الگوریتم، نکات بالا برای شما واضح‌تر خواهند شد. ایده اصلی این روش، حذف پی‌درپی متغیرهای موجود در معادلات است تا زمانی که یک ماتریس بالا مثلثی تشکیل شود. حال با دانستن همه‌ی پیش‌نیازهای لازم، می‌توانیم حل یک معادله ماتریسی را شروع کنیم.

ماتریس‌های A و Z از مثال قبل را در نظر بگیرید. (در تصویر زیر مشخص است)

1- یک ماتریس الحاقی متشکل از ماتریس‌های A و Z بسازید.

برای این کار، تنها باید دو ماتریس را به هم متصل کنید. ماتریس الحاقی بیان می‌کند که درایه‌های یک سطر، ضرایب «x»، «y» و «z» هستند و درایه آخر بیانگر عدد سمت راست یک معادله است.

2- سطر (1) را ضرب در 2 کرده و نتیجه آن را از سطر (2) کم کنید. به همین صورت، سطر (1) را ضرب در 5 کرده و نتیجه آن را از سطر (3) کم کنید.

3- برای ساخت یک ماتریس بالا مثلثی، سطر (2) را ضرب در 2 کرده و نتیجه آن را از سطر (3) کم کنید.

به خاطر داشته باشید که همه‌ی ضرایب مبنا (ستون آخر)، باید برابر با 1 باشند. برای این کار، سطر (2) را در عدد 1- ضرب کنید. اگر سطری تنها دارای درایه‌های صفر بود، باید آن را در پایین هر سطرهایی با درایه غیر صفر قرار داد. شکل ماتریس به‌دست‌آمده را «فرم سطری پلکانی» می‌گویند. توجه داشته باشید که صفحات معرف معادلات جدید که از تغییرات اعمال‌شده به دست آمده‌اند، معادل یکدیگر نیستند. با انجام این مراحل، راه‌حل معادلات را حفظ کردیم و سعی در به دست آوردن آن داریم.

4- حال که کارمان ساده‌تر شد، معادلات اصلاح‌شده را حل خواهیم کرد. از ساده‌ترین معادله شروع می‌کنیم. این معادله، دارای کمترین تعداد متغیر است. با انجام مراحل نشان داده‌شده، ساده‌ترین معادله همیشه در سطر آخر خواهد بود.

(0 * x) + (0 * y) + (1 * z) = 1

z = 1

حاصل z را در معادله (2) قرار دهید تا مقدار y به دست آید. همین کار را برای معادله (1) انجام دهید تا مقدار x به دست آید. مسائلی که با آن‌ها روبه‌رو می‌شوید، مانند مثال بالا نخواهند بود. امکان مواجه با حالت‌های دیگر نیز وجود دارد. در ادامه این حالت‌ها را معرفی می‌کنیم:

1- در حالت اول، ما به یک راه‌حل منحصربه‌فرد (مانند مثال بالا) دست خواهیم یافت. این مسئله نشان می‌دهد که تمام صفحات، در یک نقطه تقاطع دارند.

2- امکان مواجه با حالت زیر نیز وجود دارد:

دقت کنید در معادله آخر، 0=0 است و به نظر می‌رسد که ما فقط دو معادله داریم. یکی از معادلات ما زائد است. در خیلی از موارد، امکان وجود بیش از یک معادله زائد نیز هست. در این مثال، تعداد راه‌حل‌های مسئله، بی‌نهایت است.

3- حالت دیگری نیز وجود دارد که در آن، ماتریس پلکانی به شکل زیر است:

اگر معادله آخر را حل کنیم به عبارت زیر می‌رسیم:

(0 * x) + (0 * y) + (0 * z) = 4

0 = 4

تساوی بالا غیرممکن است و نشان می‌دهد که هیچ راه‌حلی برای مسئله وجود ندارد. اگر بخواهیم معادل چنین حالتی را در تقاطع صفحات پیدا کنیم، حالتی خواهد بود که صفحات هیچ تقاطعی با هم ندارند. توجه داشته باشید که این روش، برای یک مجموعه پنج یا شش معادله‌ای کارآمد خواهد بود. اگر تعداد مجموعه معادلات بزرگ‌تر شود، تعداد دفعات مورد نیاز برای تغییر معادلات نیز به‌شدت افزایش می‌یابد و روش کارآمدی خود را از دست می‌دهد.

رتبه ماتریس:

رتبه ماتریس برابر با حداکثر تعداد بردارهای مستقل خطی در یک ماتریس است. مجموعه‌ای از بردارها زمانی دارای وابستگی خطی خواهد بود که بتوانیم حداقل یکی از بردارها را به صورت ترکیب خطی باقی بردارهای مجموعه بیان کنیم.

2-4- معکوس ماتریس

برای حل تعداد زیادی از معادلات به صورت یکجا، از معکوس ماتریس استفاده می‌شود. اگر با این مفهوم آشنایی ندارید، جای نگرانی نیست. ما تمام مفاهیم مورد نیاز برای ساخت معکوس یک ماتریس را توضیح خواهیم داد.

دترمینان: مفهوم دترمینان، تنها برای ماتریس‌های مربعی قابل اطلاق است. توضیح دترمینان را به صورت مرحله‌به‌مرحله ارائه می‌کنیم. اگر یک ماتریس 2*2 به نام «A» داشته باشیم:

دترمینان آن، به صورت زیر خواهد بود:

det(A) = (a * d) - (b * c)

(det(A، نماد استاندارد دترمینان است. دقت کنید که تمام کاری که باید برای به دست آوردن دترمینان کنید (البته در این مثال)، ضرب درایه‌های قطر و قرار دادن علامت مثبت یا منفی در بین آن‌ها است. برای تعیین علامت بین ضرب‌ها، باید نمایه‌های یک درایه خاص را با هم جمع کنید. اگر جمع نمایه‌ها زوج شد، علامت قبل از ضرب آن مثبت است. اگر جمع نمایه‌ها فرد شد، علامت قبل از ضرب آن منفی است. برای مثال، جمع نمایه‌های «a11»، دو می‌شود. به همین شکل، جمع نمایه‌های «d»، چهار می‌شود؛ بنابراین، قبل از عبارت اول در محاسبه دترمینان، علامت مثبت می‌گذاریم. همین کار را برای عبارت دوم نیز انجام می‌دهیم (علامت پیش از عبارت منفی می‌شود).

در مثال بعدی، یک ماتریس 3*3 به نام «B» را در نظر می‌گیریم:

در ابتدا عبارات محاسبه دترمینان برای این ماتریس را می‌نویسیم و سپس آن را مرحله‌به‌مرحله توضیح می‌دهیم.

هر عبارت دارای دو بخش است: یک زیرماتریس و یک ضریب. اول باید یک عدد ثابت انتخاب کنید. دقت داشته باشید که ضرایب انتخابی در محاسبه دترمینان، از سطر اول گرفته شده‌اند. برای شروع، ما اولین درایه سطر اول را انتخاب کردیم. شما می‌توانید محاسبات خود را با هر درایه دلخواهی شروع کنید. بعد از انتخاب ضریب، تمام درایه‌های موجود در سطر و ستون مربوط به ضریب انتخابی را حذف کنید. سپس، از درایه‌های باقی‌مانده، یک ماتریس جدید بسازید. تمام درایه‌ها باید در جای قبلی خود قرار داشته باشند.

حال، دترمینان این زیرماتریس را محاسبه کنید. این فرآیند را برای تمام درایه‌های موجود در سطر اول تکرار کنید. برای تعیین علامت هر عبارت، از جمع نمایه‌های هر ضریب استفاده کنید. اگر جمع نمایه‌ها زوج بود، علامت مثبت و اگر فرد بود، علامت منفی را پیش از عبارت مخصوص به آن ضریب اضافه کنید. در انتها، تمام عبارت را با هم جمع کنید تا نتیجه دترمینان به دست بیاید. در مثال زیر، تعمیم محاسبه دترمینان برای یک ماتریس با مرتبه بالاتر را مشاهده می‌کنید.

کدنویسی دترمینان در پایتون:

import numpy as np
#create a 4*4 matrix
arr = np.arange(100,116).reshape(4,4)

array([[100, 101, 102, 103],
[104, 105, 106, 107],
[108, 109, 110, 111],
[112, 113, 114, 115]])

#find the determinant
np.linalg.det(arr)

-2.9582283945788078e-31

کهاد ماتریس:

ماتریس مربعی A را در نظر بگیرید. کهاد مربوط به درایه (A(ij، دترمینان زیرماتریس حاصل از حذف سطر i ام و ستون j ام ماتریس A است. احتمالاً، متوجه ارتباط بین این تعریف با محاسبات دترمینان در بخش قبلی شده‌اید. به مثال زیر دقت کنید:

برای یافتن کهاد درایه Aij، سطر اول و ستون اول را حذف کنید تا زیرماتریس مورد نظر به دست آید.

دترمینان این زیرماتریس را محاسبه کنید. اگر کهاد را با M نشان دهیم، داریم:

M11 = 4

شما می‌توانید این کار را برای دیگر درایه‌ها نیز انجام دهید.

همسازه یک ماتریس:

اگر در مبحث کهاد، علامت عبارات کهاد را در نظر بگیریم، همسازه ماتریس ایجاد می‌شود. برای اختصاص علامت‌ها، کافی است که نمایه‌های مربوط به هر المان را با هم جمع کنید. اگر نتیجه زوج بود، علامت مثبت و در غیر این صورت، علامت منفی را اختصاص دهید. همسازه را با «C» نشان دهیم و می‌خواهیم مقدار آن برای درایه (A(11 را به دست بیاوریم. جمع نمایه‌های درایه A(11)، 2 می‌شود (علامت مثبت) و مقدار کهاد متناظر با این درایه نیز 4 است؛ بنابراین داریم:

C11 = 4

برای تمرین، می‌توانید باقی همسازه‌ها را به دست بیاورید.

ماتریس همسازه:

همسازه متناظر با هر درایه را به دست آورید. درایه‌های ماتریس اصلی را با همسازه‌های متناظر آن جایگزین کنید. به این ماتریس، «ماتریس همسازه» می‌گویند. به عنوان مثال، ماتریس A را در نظر بگیرید (از مثال بالا). اگر همسازه متناظر با هر درایه را به دست آورید و آن‌ها را با درایه‌های ماتریس اصلی جایگزین کنید، ماتریس همسازه زیر به دست می‌آید:

ماتریس الحاقی:

در انتهای مسیر محاسبه معکوس یک ماتریس قرار داریم و آخرین مفهومی که به شما آموزش خواهم داد، ماتریس الحاقی است. فرض کنید می‌خواهیم ماتریس الحاقی ماتریس A را به دست بیاوریم. در مرحله اول، باید همسازه ماتریس A را محاسبه کنیم. در مرحله دوم، ترانهاده ماتریس را به دست آورید. نتیجه کار، ماتریس الحاقی ماتریس اصلی خواهد شد. برای ماتریس A، ماتریس همسازه را از مراحل قبل به دست آورده‌ایم و تنها کافی است آن را ترانهاده کنیم. نتیجه کار به صورت زیر درمی‌آید:

بالاخره در قسمت بعدی، نحوه ساخت معکوس یک ماتریس را آموزش خواهیم داد.

1-2-4- یافتن معکوس ماتریس

آیا مفهوم معکوس یک عدد در ریاضیات پایه را به خاطر دارید؟ اگر دو عدد وجود داشته باشند که حاصل‌ضرب آن‌ها، عدد 1 شود، آن دو معکوس یکدیگرند. به طور مشابه در جبر خطی، اگر دو ماتریس وجود داشته باشند که حاصل‌ضرب آن‌ها، یک ماتریس همانی شود، آن دو معکوس یکدیگرند. برای این کار، دو مرحله وجود دارد:

مرحله اول: پیدا کردن ماتریس الحاقی مربوط به ماتریس A با استفاده از مراحلی که در قسمت‌های قبل توضیح داده شد.

مرحله دوم: ضرب ماتریس الحاقی در معکوس دترمینان ماتریس A. نتیجه این کار، معکوس ماتریس A خواهد بود.

ماتریس A از مثال بالا را در نظر بگیرید و معکوس آن را به دست بیاورید. ماتریس الحاقی را از قبل داریم. دترمینان A نیز (2-) است. با توجه به تعریف معکوس ماتریس داریم:

حال فرض کنید، دترمینان ماتریس شما صفر شده باشد. در این صورت، معکوس دترمینان (1/0) تعریف‌نشده خواهد بود. این مسئله مشخص می‌کند که امکان یافتن معکوس چنین ماتریسی وجود ندارد. این ماتریس، معکوس ناپذیر است و به آن، ماتریس منفرد می‌گویند.

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

2-2-4- قدرت ماتریس‌ها: حل معادلات در یک مرحله

اگر عددی را در 1 ضرب کنیم، چه اتفاقی می‌افتد؟ مشخصاً، آن عدد تغییری نخواهد کرد. همین موضوع در مورد ماتریس همانی صادق است.

اگر شما یک ماتریس را در یک ماتریس همانی با مرتبه یکسان ضرب کنید، نتیجه تغییری نمی‌کند. می‌خواهیم مثال قبل را با کمک ماتریس‌ها حل کنیم. مسئله اولیه ما به صورت زیر نمایش داده شده است:

AX = Z

اگر هر دو سمت معادله را در معکوس ماتریس ضرایب ضرب کنیم، خواهیم داشت:

A-1 A X =A-1 Z

می‌توان ضرب بالا را به صورت زیر نوشت:

(A-1 A) X = A-1 Z

می‌دانیم که ضرب یک ماتریس در معکوسش می‌شود ماتریس همانی؛ بنابراین:

I X = A-1 Z

که I در آن، ماتریس همانی با مرتبه یکسان است. می‌دانیم که ضرب X در ماتریس همانی، آن را تغییر نمی‌دهد. پس معادله به شکل زیر درمی‌آید:

X = A-1 Z

برای حل معادله، تنها باید معکوس ماتریس را به دست بیاوریم. این کار را می‌توان با استفاده از چند خط کد، به راحتی انجام داد.

کد معکوس ماتریس در پایتون:

import numpy as np
#create an array arr1
arr1 = np.arange(5,21).reshape(4,4)

#find the inverse
np.linalg.inv(arr1)

3-2-4- استفاده از معکوس ماتریس در علم داده‌ها

از معکوس ماتریس، برای محاسبه بردار پارامتر توسط معادله نرمال در معادله خطی استفاده می‌شود. فرض کنید، مجموعه داده‌های زیر را داشته باشیم:

این جدول، متغیرهای مختلف تیم‌های مختلف بیس‌بال برای پیش‌بینی پیروزی یا شکست آن‌ها را نشان می‌دهد. فعلاً برای اینکه این مسئله را به یک مسئله رگرسیونی تبدیل کنیم، فرض کنید ما به دنبال متغیر «OOBP» هستیم و این متغیر، متغیر هدف ما است. برای حل این مسئله با رگرسیون خطی، باید بردار پارامتر را پیدا کنیم. اگر با روش معادله نرمال آشنایی داشته باشید، متوجه خواهید شد که باید از ماتریس‌ها استفاده کنیم. بگذارید کمی جلوتر برویم و متغیرهای مستقل خود را به صورت ماتریس «X» دربیاوریم؛ بنابراین X برابر است با:

برای پیدا کردن بردار پارامتر نهایی (θ)، با فرض اینکه تابع اولیه ما توسط θ و X به صورت پارامتری درآمده است، باید معکوس «XTX» را به دست بیاوریم. این کار، با استفاده از کد ارائه‌شده در قسمت زیر، به راحتی قابل انجام است.

بگذارید درک فرموله سازی رگرسیون خطی را برایتان ساده‌تر کنیم.

fθ (X)= θT X

θ، پارامتری است که قصد محاسبه آن را داریم و X، بردار ستونی ویژگی‌ها با متغیرهای مستقل است.

import pandas as pd
import numpy as np

#you don’t need to bother about the following. It just #transforms the data from original source into matrix

Df = pd.read_csv( "../baseball.csv”)
Df1 = df.head(14)

# We are just taking 6 features to calculate θ.
X = Df1[[‘RS’, ‘RA’, ‘W’, ‘OBP’,'SLG','BA']]
Y=Df1['OOBP']

#Converting X to matrix
X = np.asmatrix(X)

#taking transpose of X and assigning it to x
x= np.transpose(X)

#finding multiplication
T= x.dot(X)

#inverse of T - provided it is invertible otherwise we use pseudoinverse
inv=np.linalg.inv(T)

#calculating θ
theta=(inv.dot(X.T)).dot(Y)

تصور کنید که مجبور بودید این دستگاه معادلات را بدون استفاده از جبر خطی حل کنید. باید توجه داشت که مجموعه داده بررسی‌شده در این مثال، تنها یک درصد از مجموعه داده اصلی را شامل می‌شد. حال تصور کنید که مجبور به پیدا کردن بردار پارامتر، بدون استفاده از جبر خطی بودید. حل مسئله بدون استفاده از جبر خطی، نیاز به زمان و توان بسیار زیادی دارد و گاهی اوقات این کار غیرممکن می‌شود.

یکی از معایب روش معادله نرمال در مواقع زیاد بودن تعداد ویژگی‌ها، هزینه‌بر بودن محاسبات است. محاسبه هزینه ماتریس (XTX) با n ویژگی و مرتبه n*n، به صورت (O(n*n*n انجام می‌شود. معمولاً، زمانی از روش معادله نرمال استفاده می‌شود که تعداد ویژگی‌ها حدود 1,000 یا 10,000 باشد. در صورت زیاد بودن تعداد ویژگی‌ها، از روشی به نام «گرادیان کاهشی» استفاده می‌شود.

در ادامه، به تعریف یکی از مفاهیم پیشرفته جبر خطی به نام «بردار ویژه» می‌پردازیم.

5- بردارهای ویژه و مقادیر ویژه

بردارهای ویژه، کاربردهای بسیار زیادی در زمینه‌های مختلفی مانند «بینایی رایانه‌ای» (Computer Vision)، فیزیک و یادگیری ماشین دارند. اگر در مورد یادگیری ماشین مطالعه کرده و با الگوریتم تحلیل مؤلفه‌های اصلی (PCA) آشنا باشید، حتماً از اهمیت این الگوریتم در هنگام کنترل یک مجموعه داده بزرگ باخبر هستید. تا به حال فکر کرده‌اید که چه عملیاتی در پس این الگوریتم نهفته است؟ در واقع، مفهوم بردارهای ویژه، ستون فقرات این الگوریتم است. برای درک بهتر مفاهیم بردارهای ویژه و مقادیر ویژه، مثال زیر را در نظر بگیرید.

می‌خواهیم یک بردار دوبعدی را ضرب در یک ماتریس 2*2 کنیم. نتیجه این ضرب به صورت زیر است:

به چنین عملیاتی بر روی یک بردار، تبدیل خطی گفته می‌شود. دقت کنید که جهت بردارهای ورودی و خروجی، متفاوت است. ماتریس ستونی در این مثال، نشان‌دهنده بردار است. برای درک این نکته، به تصاویر زیر دقت کنید.

در تصویر بالا، دو نوع بردار با رنگ‌های قرمز و زرد وجود دارند. این تصویر، تغییر بردارها پس از تبدیل خطی را نشان می‌دهد. اگر دقت کنید، خواهید دید که جهت بردار زرد بعد از اعمال تبدیل خطی تغییر می‌کند اما جهت بردار قرمز تغییری نکرده و ثابت مانده است. بردار قرمز، نمونه‌ای از بردار ویژه است.

برای یک ماتریس بخصوص، بردارهایی که جهتشان پس از اعمال تبدیل خطی با آن ماتریس تغییری نکند، بردارهای ویژه آن ماتریس هستند. مفاهیم بردار ویژه و مقدار ویژه، تنها برای ماتریس‌های مربعی به کار برده می‌شوند. مسئله دیگر این است که با اینکه ما از بردارهای دوبعدی استفاده کردیم، مفهوم بردار ویژه می‌تواند برای هر تعداد بعد استفاده شود.

1-5- یافتن بردارهای ویژه یک ماتریس

فرض کنید، یک ماتریس (A) و یک بردار ویژه (x) مربوط به آن ماتریس را داریم. همان‌طور که پیش از این نیز گفته شد، جهت x پس از ضرب تغییر نمی‌کند و تنها تغییر در مقادیر مجاز است. معادله‌ای را به صورت زیر می‌نویسیم:

A x = c x

(1) (A - c) x = 0

توجه کنید که «c» در عبارت (A - c)، نشان‌دهنده ماتریس همانی هم‌مرتبه با A است که در عدد ثابت c ضرب شده است. در اینجا، ما دو متغیر مجهول (c و x) و یک معادله داریم. در معادله (1)، منطقی نیست که بردار x را برابر با صفر قرار دهیم. تنها راه این است که عبارت (A-c) را به عنوان یک ماتریس منفرد در نظر بگیریم. دترمینان یک ماتریس منفرد، برابر با صفر است. از این خاصیت استفاده کرده و مقدار ثابت c را پیدا می‌کنیم.

Det(A - c) = 0

هنگامی‌که دترمینان (A-c) را محاسبه کردید، آن را برابر با صفر قرار دهید. معادله‌ای هم‌مرتبه با ماتریس A و برحسب مجهول c به دست می‌آید. تنها کاری که باید انجام دهید، پیدا کردن جواب معادله است. فرض کنید، جواب‌های «c1» و «c2» و ... را برای این معادله پیدا کردیم. c1 را در معادله (1) قرار دهید تا بردار «x1» مربوط به c1 به دست آید. بردار x1، بردار ویژه ماتریس A است. همین فرآیند را برای «c1» و «c2» و ... انجام دهید.

کد یافتن بردار ویژه در پایتون:

import  numpy as np

#create an array
arr = np.arange(1,10).reshape(3,3)

#finding the Eigenvalue and Eigenvectors of arr
np.linalg.eig(arr)

2-5- استفاده از بردارهای ویژه در علم داده‌ها

مفهوم بردار ویژه در زمینه یادگیری ماشین، برای الگوریتم تحلیل مؤلفه‌های اصلی به کار برده می‌شود. فرض کنید داده‌ای با ویژگی‌های زیاد دارید (ابعاد بسیار زیاد در داده). امکان وجود ویژگی‌های اضافی در داده وجود دارد. به غیر از این، تعداد بسیار زیاد ویژگی‌ها، باعث کاهش کارآمدی و فضای دیسک بیشتر می‌شود. کار که تحلیل مؤلفه‌های اصلی انجام می‌دهد، کنار گذاشتن ویژگی‌های کم‌اهمیت و بدردنخور است. برای مشخص کردن ویژگی‌های قابل حذف نیز می‌توان از بردارهای ویژه استفاده کرد. در ادامه، مراحل الگوریتم تحلیل مؤلفه‌های اصلی را توضیح می‌دهیم.

فرض کنید، یک داده‌ی n بعدی داریم و می‌خواهیم ابعاد آن را به k بعد کاهش دهیم. باید مراحل زیر را دنبال کنیم:

مرحله اول: داده‌ها را نرمال کرده و به صورت استاندارد درمی‌آوریم.

مرحله دوم: ماتریس کوواریانس مجموعه داده‌های خود را پیدا می‌کنیم.

ما قصد داریم تعداد ویژگی‌های داده خود را کاهش دهیم اما کاهش ویژگی‌ها، به معنی از دست رفتن اطلاعات است. برای به حداقل رساندن از دست رفتن اطلاعات (حداکثر کردن واریانس)، باید جهت‌هایی را که دارای واریانس حداکثر هستند را بیابیم. برای این کار، از مراحل بعدی استفاده می‌کنیم.

مرحله سوم: بردارهای ویژه ماتریس کوواریانس را پیدا می‌کنیم. لازم نیست فکر خود را مشغول مفهوم ماتریس کوواریانس کنید. این ماتریس، یکی از مفاهیم پیشرفته آماری است. از آنجایی که ما یک ماتریس n بعدی داریم، n بردار ویژه مربوط به n مقدار ویژه را به دست خواهیم آورد.

مرحله چهارم: k بردار ویژه مربوط به k تا از بزرگ‌ترین مقادیر ویژه را انتخاب می‌کنیم. هر یک از بردارهای ویژه، یک ستون را تشکیل خواهند داد. به این ماتریس، ماتریس U می‌گوییم.

اکنون زمان یافتن نقاط داده‌ای کاهش‌یافته است. فرض کنید که می‌خواهید نقطه داده «a» را در یک مجموعه داده، به k بعد کاهش دهید. برای انجام این کار، باید ماتریس U را ترانهاده کرده و در بردار a ضرب کنید. شما بردار مورد نیاز خود را در k بعد به دست خواهید آورد.

کار ما با بردارهای ویژه تمام شد. به سراغ یکی دیگر از مفاهیم پیشرفته و بسیار پرکاربرد در جبر خطی می‌رویم. این مفهوم، «تجزیه مقدارهای منفرد» (Singular value decomposition) نام دارد که به اختصار به آن SVD گفته می‌شود. درک کامل این مفهوم، نیاز به مطالعه‌ی دقیق جبر خطی دارد. در واقع، SVD می‌تواند یک پست کامل را به خود اختصاص دهد. در ادامه، به بررسی اجمالی کاربرد SVD در علم داده‌ها می‌پردازیم.

6- تجزیۀ مقدارهای منفرد

فرض کنید ماتریس ویژگی (A) به شما داده شده است. همان‌طور که از اسم روش مشخص است، باید ماتریس A را برای هدف خاصی به سه ماتریس تقسیم کنید. گاهی اوقات گفته می‌شود که SVD، تعمیمی از روش تجزیه مقدار ویژه است. در اینجا، مبانی ریاضی SVD را به دلایلی که پیش‌تر توضیح داده شد بیان نخواهیم کرد و تنها به کاربرد آن در علوم داده‌ها می‌پردازیم.

کاربرد SVD، حذف ویژگی‌های اضافی در یک مجموعه داده است. فرض کنید مجموعه داده‌ای متشکل از 100 ویژگی دارید. قطعاً، هر مجموعه داده واقعی با این تعداد ویژگی، ویژگی‌های اضافی و زائد نیز خواهد داشت. اگر با زبان ML کار کرده باشید، باید بدانید که وجود ویژگی‌های اضافی، باعث ایجاد مشکل در اجرای الگوریتم‌های یادگیری ماشین می‌شود. به علاوه، اجرای یک الگوریتم با استفاده از مجموعه داده‌ی اصلی، نیاز به زمان و حافظه‌ی مموری زیادی دارد.

به تصویر زیر نگاه کنید.

ما می‌توانیم این ببر را سیاه‌سفید کرده و آن را به صورت یک ماتریس در نظر بگیریم که هرکدام از درایه‌هایی آن معرف شدت پیکسل در محل مربوطه هستند. به زبان ساده‌تر، این ماتریس، شامل اطلاعات شدت پیکسل تصویر به صورت سطر و ستون خواهد بود. سوالاتی که پیش می‌آید این است که «آیا به همه‌ی ستون‌ها در ماتریس نیاز است؟» یا «می‌توان ببر موجود در تصویر را با اطلاعات کمتری به نمایش درآورد؟» تصویر زیر، نکته مد نظر ما را مشخص می‌کند. در این تصویر، تصاویر متفاوت با توجه به داده‌ها و کیفیت‌های متفاوت نشان داده شده است. فرض کنید، تصویر دارای بالاترین رتبه (تصویر بالا چپ)، بیشترین اطلاعات را در مورد شدت پیکسل را ارائه می‌کند.

واضح است که می‌توانیم با استفاده از رتبه‌های 20 یا 30 به جای 100 یا 200، به کیفیت تقریباً مناسبی دست پیدا کنیم. این تمام چیزی است که قصد داریم در مورد مجموعه داده‌هایی با ویژگی‌های اضافی انجام دهیم. منظور ما از همه‌ی این مثال‌ها این است که نیازی به استفاده از تمام اطلاعات موجود در مجموعه داده اصلی نیست. با این حال، برخی از ویژگی‌ها باعث ایجاد مشکل در دستیابی به بهترین الگوریتم می‌شوند. به عنوان مثال، برخی از ویژگی‌ها به اندازه کافی مهم و قابل توجه نیستند. نادیده گرفتن چنین ویژگی‌هایی، به پیدا کردن بهترین و مناسب‌ترین الگوریتم با زمان اجرای بهتر و حافظه مموری مورد نیاز کمتر کمک می‌کند. روش تجزیه مقدارهای منفرد، برای خلاص شدن از ویژگی‌های اضافی موجود در داده‌ها است.

7- سخن پایانی

ما در این مقاله، جنبه‌های متفاوتی از جبر خطی و کاربرد آن در علم داده‌ها را پوشش دادیم. تلاش ما بر این بود که اطلاعات کافی و مناسبی در مورد این موضوع ارائه شود و شما با مطالعه این مطالب، قادر به درک راحت مفاهیم و انجام محاسبات ضروری شوید. امیدواریم این مقاله برای شما مفید واقع شده باشد. با ارسال نظرات خود، ما را در بهبود کیفیت مطالب یاری کنید.

#

بر اساس رای ۱۸ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
analyticsvidhya
نظر شما چیست؟

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