Skip to main content

Tiesinė regresija

Atnaujinta November 15, 20244 Perskaityta minučių


Įvadas

Pateiktas duomenų rinkinys D={(X1,Y2),,(XN,YN)}D = \{(X_{1}, Y_{2}), \dots,(X_{N}, Y_{N})\}, pvz., XiX_{i} ir YiY_{i } yra ištisiniai, „Tiesinės regresijos“ tikslas yra rasti geriausią eilutę, atitinkančią šiuos duomenis.

Kitaip tariant, norime sukurti modelį:

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

kur pp yra kintamojo XX matmenų skaičius.

Šiame straipsnyje pamatysime, kaip išspręsti šią problemą trimis scenarijais:

  • Kai X yra vienmatis, ty p=1p=1.

  • Kai X yra daugiamatis, ty p>1p>1.

  • Naudojant gradiento nusileidimą.

XX yra vieno matmens (įprastas mažiausias kvadratas)

Modelis, kurį norime sukurti, yra formos:

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

Atminkite, kad tiesinės regresijos tikslas yra rasti liniją, kuri geriausiai atitinka duomenis. Kitaip tariant, turime sumažinti atstumą tarp duomenų taškų ir linijos.

(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

Įdėkime:

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

Norėdami rasti minimumą, turime išspręsti šias lygtis:

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

Pradedame kurdami pirmąją lygtį:

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}

Antroje lygtyje pakeičiame:

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

Pakeičiame atgal 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 yra daugiamatis (įprastas mažiausias kvadratas)

Šiuo atveju XiX_{i} nebėra tikrasis skaičius, o yra pp dydžio vektorius:

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

Taigi modelis parašytas taip:

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

arba jis gali būti parašytas matricos formatu:

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

kur:

  • YY yra (N,1)(N, 1) formos.

  • XX yra (N,p)(N, p) formos.

  • WW yra (p,1)(p, 1) formos: tai yra parametrų vektorius (w1,w2,,wp)(w_{1}, w_{2}, \dots, w_{p}).

Panašiai kaip ir pirmuoju atveju, siekiame iki minimumo sumažinti šį kiekį:

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

Dar kartą įdėkime:

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

Kadangi norime sumažinti LL WW atžvilgiu, galime nepaisyti pirmojo termino "YTYY^TY", nes jis nepriklauso nuo WW, ir išspręskime šią lygtį:

(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

Naudojant gradiento nusileidimą

Čia yra gradiento nusileidimo algoritmo formuluotė:

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

Dabar tereikia jį pritaikyti dviem parametrams a0a_{0} ir a1a_{1} (vieno kintamojo XX atveju):

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

ir mes žinome, kad:

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

Keičiant:

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

Viktorina

  • Kokia yra optimalių parametrų vektoriaus formulė daugiamatės tiesinės regresijos atveju:

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

– Kodėl išvestinę dedame į 0?

  • Rasti ekstremumą. "teisingai"

  • Sumažinti išvestinę priemonę.

– Išvesti tik tikrąją išvestinės dalies dalį.

  • Koks yra tiesinės regresijos tikslas?

  • Rasti liniją, kuri eina pro visus taškus.

– Norėdami rasti eilutę, kuri geriausiai apibūdina duomenis."teisingai"

  • Norėdami rasti liniją, kuri geriausiai atskiria duomenis.

Išmokite techninių įgūdžių internete su Code Labs Academy

Išmokite techninių įgūdžių internete su Code Labs Academy

Prisijunkite prie mūsų palaikomosios bendruomenės, atrkite savo galimybes ir pradėkite naudingą karjeros kelią.