Skip to main content

Γραμμικής παλινδρόμησης

Τελευταία ενημέρωση: June 21, 2024 4 λεπτά ανάγνωσης


Εισαγωγή

Δεδομένου ενός συνόλου δεδομένων D={(X1,Y2),,(XN,YN)}D = \{(X_{1}, Y_{2}), \dots,(X_{N}, Y_{N})\} όπως XiX_{i} και YiY_{i } είναι συνεχείς, Ο στόχος της "Γραμμικής παλινδρόμησης" είναι να βρεθεί η καλύτερη γραμμή που ταιριάζει σε αυτά τα δεδομένα.

Με άλλα λόγια, θέλουμε να δημιουργήσουμε το μοντέλο:

y^=a0+a1.x1++ap.x_p\hat{y} = a*{0} + a*{1}.x*{1} + \dots + a*{p}.x\_{p}

όπου pp είναι ο αριθμός των διαστάσεων της μεταβλητής XX.

Σε αυτό το άρθρο θα δούμε πώς να λύσουμε αυτό το πρόβλημα σε τρία σενάρια:

  • Όταν το X είναι μονοδιάστατο, δηλαδή p=1p=1.

  • Όταν το X είναι πολυδιάστατο, δηλαδή p>1p>1.

  • Χρήση κλίσης κατάβασης.

Το ## XX είναι μονοδιάστατο (Κανονικό ελάχιστο τετράγωνο)

Το μοντέλο που θέλουμε να δημιουργήσουμε έχει σχήμα:

y^=a0+a1.x\hat{y} = a*{0} + a*{1}.x

Θυμηθείτε ότι ο στόχος της γραμμικής παλινδρόμησης είναι να βρεθεί η γραμμή που ταιριάζει καλύτερα στα δεδομένα. Με άλλα λόγια, πρέπει να ελαχιστοποιήσουμε την απόσταση μεταξύ των σημείων δεδομένων και της γραμμής.

(a0^,a1^)=argmin(a0,a1)i=1N(yiyi^)2(\hat{a*{0}}, \hat{a*{1}}) = \underset{(a*{0}, a*{1})}{\operatorname{argmin}} \sum\limits*{i=1}^{N} (y*{i} - \hat{y*{i}})^2

=argmin(a0,a1)i=1N(yi(a0+a1.xi))2= \underset{(a*{0}, a*{1})}{\operatorname{argmin}} \sum\limits*{i=1}^{N} (y*{i} - (a*{0} + a*{1}.x*{i}))^2

Ας βάλουμε:

L=i=1N(yi(a0+a1.x_i))2L = \sum\limits*{i=1}^{N} (y*{i} - (a*{0} + a*{1}.x\_{i}))^2

Για να βρούμε το ελάχιστο, πρέπει να λύσουμε τις παρακάτω εξισώσεις:

{La0=0La1=0\begin{cases} \frac{\partial L}{\partial a_{0}} = 0\\ \frac{\partial L}{\partial a_{1}} = 0 \end{cases} {i=1N2(yi(a0+a1.xi))=0i=1N2xi(yi(a0+a1.xi))=0\begin{cases} \sum\limits_{i=1}^{N} -2(y_{i} - (a_{0} + a_{1}.x_{i})) = 0\\ \sum\limits_{i=1}^{N} -2x_{i}(y_{i} - (a_{0} + a_{1}.x_{i})) = 0 \end{cases}

Ξεκινάμε αναπτύσσοντας την πρώτη εξίσωση:

i=1Nyii=1Na0+i=1Na1.xi=0\sum\limits_{i=1}^{N} y_{i} - \sum\limits_{i=1}^{N}a_{0} + \sum\limits_{i=1}^{N} a_{1}.x_{i} = 0\\ i=1NyiNa0+i=1Na1.xi=0\sum\limits_{i=1}^{N} y_{i} - Na_{0} + \sum\limits_{i=1}^{N} a_{1}.x_{i} = 0\\ a0=i=1NyiNi=1NxiNa1a_{0} = \frac{\sum\limits_{i=1}^{N} y_{i}}{N} - \frac{\sum\limits_{i=1}^{N} x_{i}}{N}a_{1} a0=YXa1a_{0} = Y - Xa_{1}

Αντικαθιστούμε στη δεύτερη εξίσωση:

i=1Nxi(yiY+Xa1a1xi)=0\sum\limits_{i=1}^{N} x_{i}(y_{i} - Y + Xa_{1} - a_{1}x_{i}) = 0 i=1N(yiY)+a1(Xxi)=0\sum\limits_{i=1}^{N} (y_{i} - Y) + a_{1}(X - x_{i}) = 0 i=1N(yiY)i=1Na1(xiX)=0\sum\limits_{i=1}^{N} (y_{i} - Y) - \sum\limits_{i=1}^{N}a_{1}(x_{i} - X) = 0 a1=i=1N(yiY)i=1N(xiX)=i=1N(yiY)(xiX)i=1N(xiX)2=COV(X,Y)VAR(X)a_{1} = \frac{\sum\limits_{i=1}^{N} (y_{i} - Y)}{\sum\limits_{i=1}^{N}(x_{i} - X)} = \frac{\sum\limits_{i=1}^{N} (y_{i} - Y)(x_{i} - X)}{\sum\limits_{i=1}^{N}(x_{i} - X)^2} = \frac{COV(X, Y)}{VAR(X)}

Αντικαθιστούμε ξανά σε a0a_{0}:

{a0=YXCOV(X,Y)VAR(X)a1=COV(X,Y)VAR(X)\begin{cases} a_{0} = Y - X\frac{COV(X, Y)}{VAR(X)}\\ a_{1} = \frac{COV(X, Y)}{VAR(X)} \end{cases}

Το ## XX είναι πολυδιάστατο (Κανονικό ελάχιστο τετράγωνο)

Σε αυτήν την περίπτωση, το XiX_{i} δεν είναι πλέον πραγματικός αριθμός, αλλά είναι ένα διάνυσμα μεγέθους pp:

Xi=(Xi1,Xi2,,Xip)X*{i} = (X*{i1},X*{i2},\dots,X*{ip})

Έτσι, το μοντέλο γράφεται ως εξής:

y^=a0+a1x1+a2x2++apx_p\hat{y} = a*{0} + a*{1}x*{1} + a*{2}x*{2} + \dots + a*{p}x\_{p}

ή, μπορεί να γραφτεί σε μορφή matrix:

Y^=X.W\hat{Y} = X.W

που:

  • Το YY έχει σχήμα (N,1)(N, 1).

  • Το XX έχει σχήμα (N,p)(N, p).

  • Το WW έχει σχήμα (p,1)(p, 1): αυτό είναι το διάνυσμα παραμέτρων (w1,w2,,wp)(w_{1}, w_{2}, \dots, w_{p}).

Όπως και στην πρώτη περίπτωση, στοχεύουμε να ελαχιστοποιήσουμε την ακόλουθη ποσότητα:

W^=argminWi=1N(yiy_i^)2\hat{W} = \underset{W}{\operatorname{argmin}} \sum\limits*{i=1}^{N} (y*{i} - \hat{y\_{i}})^2

Και πάλι ας βάλουμε:

L=i=1N(yiy_i^)2L = \sum\limits*{i=1}^{N} (y*{i} - \hat{y\_{i}})^2

=(YXW)T(YXW)= (Y-XW)^{T}(Y-XW) =YTYYTXWWTXTY+WTXTXW= Y^TY-Y^TXW-W^TX^TY+W^TX^TXW =YTY2WTXTY+WTXTXW= Y^TY-2W^TX^TY+W^TX^TXW

Εφόσον θέλουμε να ελαχιστοποιήσουμε το LL σε σχέση με το WW, τότε μπορούμε να αγνοήσουμε τον πρώτο όρο "YTYY^TY" επειδή είναι ανεξάρτητος από το WW και ας λύσουμε την ακόλουθη εξίσωση:

(2WTXTY+WTXTXW)W=0\frac{\partial (-2W^TX^TY+W^TX^TXW)}{\partial W} = 0 2XTY+2XTXW^=0-2X^TY+2X^TX\hat{W} = 0 W^=(XTX)1XTY\hat{W} = (X^TX)^{-1}X^TY

Χρήση gradient descent

Εδώ είναι η διατύπωση του αλγόριθμου gradient descent:

wn+1=wnlr×fw_nw*{n+1} = w*{n} - lr \times \frac{\partial f}{\partial w\_{n}}

Τώρα το μόνο που έχουμε να κάνουμε είναι να το εφαρμόσουμε στις δύο παραμέτρους a0a_{0} και a1a_{1} (στην περίπτωση μιας μεταβλητής XX):

{a0(n+1)=a0(n)lr×La0a1(n+1)=a1(n)lr×La1\begin{cases} a_{0}^{(n+1)} = a_{0}^{(n)} - lr \times \frac{\partial L}{\partial a_{0}}\\ a_{1}^{(n+1)} = a_{1}^{(n)} - lr \times \frac{\partial L}{\partial a_{1}} \end{cases}

και ξέρουμε ότι:

{La0=i=1N2(yi(a0+a1.xi))La1=i=1N2xi(yi(a0+a1.xi))\begin{cases} \frac{\partial L}{\partial a_{0}} = \sum\limits_{i=1}^{N} -2(y_{i} - (a_{0} + a_{1}.x_{i}))\\ \frac{\partial L}{\partial a_{1}} = \sum\limits_{i=1}^{N} -2x_{i}(y_{i} - (a_{0} + a_{1}.x_{i})) \end{cases}

Με αντικατάσταση:

{a0(n+1)=a0(n)+2×lr×i=1N(yi(a0(n)+a1(n).xi))a1(n+1)=a1(n)+2×lr×i=1Nxi(yi(a0(n)+a1(n).xi))\begin{cases} a_{0}^{(n+1)} = a_{0}^{(n)} + 2 \times lr \times \sum\limits_{i=1}^{N} (y_{i} - (a_{0}^{(n)} + a_{1}^{(n)}.x_{i}))\\ a_{1}^{(n+1)} = a_{1}^{(n)} + 2 \times lr \times \sum\limits_{i=1}^{N} x_{i}(y_{i} - (a_{0}^{(n)} + a_{1}^{(n)}.x_{i})) \end{cases}

Κουίζ

  • Ποιος είναι ο τύπος του διανύσματος βέλτιστων παραμέτρων στην περίπτωση πολυδιάστατης γραμμικής παλινδρόμησης:

  • COV(X,Y)VAR(Y)\frac{COV(X, Y)}{VAR(Y)}

  • COV(X,Y)VAR(X)\frac{COV(X, Y)}{VAR(X)}

  • (XTX)1XTY(X^TX)^{-1}X^TY "σωστό"

  • Γιατί βάζουμε την παράγωγο στο 0;

  • Να βρω το ακραίο. "σωστός"

  • Για την ελαχιστοποίηση της παραγώγου.

  • Να διατηρείται μόνο το πραγματικό μέρος της παραγώγου.

  • Ποιος είναι ο στόχος της γραμμικής παλινδρόμησης;

  • Να βρείτε τη γραμμή που περνάει από όλα τα σημεία.

  • Για να βρείτε τη γραμμή που περιγράφει καλύτερα τα δεδομένα."σωστό"

  • Για να βρείτε τη γραμμή που διαχωρίζει καλύτερα τα δεδομένα.

Μάθετε τεχνικές δεξιότητες online στα bootcamps της Code Labs Academy

Μάθετε τεχνικές δεξιότητες online στα bootcamps της Code Labs Academy

Γίνετε μέλος της υποστηρικτικής μας κοινότητας, ξεκλειδώστε το δυναμικό σας και ξεκινήστε μια επιτυχημένη καριέρα στην τεχνολογία.