Skip to main content

Lineārā regresija

Atjaunināts vietnē September 06, 2024 4 minūtes lasīt


Ievads

Dota datu kopa D={(X1,Y2),,(XN,YN)}D = \{(X_{1}, Y_{2}), \dots,(X_{N}, Y_{N})\}, piemēram, XiX_{i} un YiY_{i } ir nepārtraukti, “Lineārās regresijas” mērķis ir atrast labāko līniju, kas atbilst šiem datiem.

Citiem vārdiem sakot, mēs vēlamies izveidot modeli:

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

kur pp ir mainīgā XX izmēru skaits.

Šajā rakstā mēs redzēsim, kā atrisināt šo problēmu trīs scenārijos:

  • Ja X ir viendimensionāls, t.i., p=1p=1.

  • Ja X ir daudzdimensionāls, t.i., p>1p>1.

  • Izmantojot gradienta nolaišanos.

XX ir viendimensijas (parastais mazākais kvadrāts)

Modelim, kuru vēlamies izveidot, ir šāda forma:

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

Atcerieties, ka lineārās regresijas mērķis ir atrast līniju, kas vislabāk atbilst datiem. Citiem vārdiem sakot, mums ir jāsamazina attālums starp datu punktiem un līniju.

(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

Liekam:

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

Lai atrastu minimumu, mums jāatrisina šādi vienādojumi:

{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}

Mēs sākam, izstrādājot pirmo vienādojumu:

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}

Mēs aizvietojam otrajā vienādojumā:

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)}

Mēs aizstājam atpakaļ 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 ir daudzdimensionāls (parastais mazākais kvadrāts)

Šajā gadījumā XiX_{i} vairs nav reāls skaitlis, bet gan pp izmēra vektors:

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

Tātad modelis ir uzrakstīts šādi:

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

vai arī to var rakstīt matricas formātā:

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

kur:

  • YY ir (N,1)(N, 1) formā.

  • XX ir (N,p)(N, p) formā.

  • WW ir formas (p,1)(p, 1): šis ir parametru vektors (w1,w2,,wp)(w_{1}, w_{2}, \dots, w_{p}).

Līdzīgi kā pirmajā gadījumā, mūsu mērķis ir samazināt šādu daudzumu:

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

Atkal liksim:

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

Tā kā mēs vēlamies samazināt LL attiecībā pret WW, mēs varam ignorēt pirmo terminu "YTYY^TY", jo tas nav atkarīgs no WW, un atrisināsim šādu vienādojumu:

(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

Izmantojot gradienta nolaišanos

Šeit ir gradienta nolaišanās algoritma formulējums:

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

Tagad viss, kas mums jādara, ir jāpiemēro diviem parametriem a0a_{0} un a1a_{1} (viena mainīgā XX gadījumā):

{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}

un mēs zinām, ka:

{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}

Pēc aizstāšanas:

{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}

Viktorīna

  • Kāda ir optimālo parametru vektora formula daudzdimensiju lineārās regresijas gadījumā:

  • 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 "pareizi"

  • Kāpēc atvasinājumu liekam uz 0?

  • Lai atrastu ekstrēmu. "pareizi"

  • Lai samazinātu atvasinājumu.

  • Paturēt tikai atvasinājuma reālo daļu.

  • Kāds ir lineārās regresijas mērķis?

  • Lai atrastu līniju, kas iet gar visiem punktiem.

- Lai atrastu rindiņu, kas vislabāk raksturo datus."pareizi"

  • Lai atrastu līniju, kas vislabāk atdala datus.
Mācieties tehniskās prasmes tiešsaistē ar Code Labs Academy

Mācieties tehniskās prasmes tiešsaistē ar Code Labs Academy

Pievienojieties mūsu atbalstošajai kopienai, atbloķējiet savu potenciālu un uzsāciet atalgojošu karjeras ceļu.