From 31c62e1df65bdc884d49c1a99fab3d31d4a3953d Mon Sep 17 00:00:00 2001 From: chenyyx Date: Mon, 18 Sep 2017 15:31:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B98.=E5=9B=9E=E5=BD=92.md?= =?UTF-8?q?=E5=92=8C=E9=83=A8=E5=88=86=E4=BF=AE=E6=94=B99.=E6=A0=91?= =?UTF-8?q?=E5=9B=9E=E5=BD=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/8.预测数值型数据:回归.md | 32 +++++++++++++----- docs/9.树回归.md | 17 ++++++++++ images/8.Regression/LinearR_18.png | Bin 0 -> 2433 bytes images/8.Regression/LinearR_19.png | Bin 0 -> 1242 bytes images/8.Regression/LinearR_20.png | Bin 0 -> 1001 bytes images/8.Regression/LinearR_21.png | Bin 0 -> 3488 bytes images/8.Regression/LinearR_22.png | Bin 0 -> 56172 bytes .../regression.py | 14 ++++---- 8 files changed, 49 insertions(+), 14 deletions(-) create mode 100644 images/8.Regression/LinearR_18.png create mode 100644 images/8.Regression/LinearR_19.png create mode 100644 images/8.Regression/LinearR_20.png create mode 100644 images/8.Regression/LinearR_21.png create mode 100644 images/8.Regression/LinearR_22.png diff --git a/docs/8.预测数值型数据:回归.md b/docs/8.预测数值型数据:回归.md index 2465da4e..5c29ab47 100644 --- a/docs/8.预测数值型数据:回归.md +++ b/docs/8.预测数值型数据:回归.md @@ -23,6 +23,16 @@ HorsePower = 0.0015 * annualSalary - 0.99 * hoursListeningToPublicRadio ### 1、线性回归 +我们应该怎样从一大堆数据里求出回归方程呢? 假定输入数据存放在矩阵 x 中,而回归系数存放在向量 w 中。那么对于给定的数据 X1,预测结果将会通过 Y = X1^T w 给出。现在的问题是,手里有一些 X 和对应的 y,怎样才能找到 w 呢?一个常用的方法就是找出使误差最小的 w 。这里的误差是指预测 y 值和真实 y 值之间的差值,使用该误差的简单累加将使得正差值和负差值相互抵消,所以我们采用平方误差。 + +平方误差可以写做: + +![平方误差](../images/8.Regression/LinearR_18.png) + +用矩阵表示还可以写做 ![平方误差_2](../images/8.Regression/LinearR_19.png) 。如果对 w 求导,得到 ![平方误差_3](../images/8.Regression/LinearR_20.png) ,令其等于零,解出 w 如下(具体求导过程为: http://blog.csdn.net/nomadlx53/article/details/50849941 ): + +![回归系数的最佳估计计算公式](../images/8.Regression/LinearR_1.png) + #### 1.1、线性回归 须知概念 ##### 1.1.1、矩阵求逆 @@ -43,7 +53,7 @@ HorsePower = 0.0015 * annualSalary - 0.99 * hoursListeningToPublicRadio #### 1.2、线性回归 工作原理 ``` -读入数据,将数据特征想、特征标签y存储在矩阵x、y中 +读入数据,将数据特征x、特征标签y存储在矩阵x、y中 验证 x^Tx 矩阵是否可逆 使用最小二乘法求得 回归系数 w 的最佳估计 ``` @@ -168,7 +178,11 @@ def regression1(): 线性回归的一个问题是有可能出现欠拟合现象,因为它求的是具有最小均方差的无偏估计。显而易见,如果模型欠拟合将不能取得最好的预测效果。所以有些方法允许在估计中引入一些偏差,从而降低预测的均方误差。 -一个方法是局部加权线性回归(Locally Weighted Linear Regression,LWLR)。在这个算法中,我们给预测点附近的每个点赋予一定的权重,然后与 线性回归 类似,在这个子集上基于最小均方误差来进行普通的回归。与 kNN 一样,这种算法每次预测均需要事先选取出对应的数据子集。该算法解出回归系数 w 的形式如下: +一个方法是局部加权线性回归(Locally Weighted Linear Regression,LWLR)。在这个算法中,我们给预测点附近的每个点赋予一定的权重,然后与 线性回归 类似,在这个子集上基于最小均方误差来进行普通的回归。我们需要最小化的目标函数大致为: + +![局部加权线性回归回归系数公式](../images/8.Regression/LinearR_21.png) + +与 kNN 一样,这种算法每次预测均需要事先选取出对应的数据子集。该算法解出回归系数 w 的形式如下: ![局部加权线性回归回归系数公式](../images/8.Regression/LinearR_4.png) @@ -187,7 +201,7 @@ LWLR 使用 “核”(与支持向量机中的核类似)来对附近的点 #### 2.1、局部加权线性回归 工作原理 ``` -读入数据,将数据特征想、特征标签y存储在矩阵x、y中 +读入数据,将数据特征x、特征标签y存储在矩阵x、y中 利用高斯核构造一个权重矩阵 W,对预测点附近的点施加权重 验证 X^TWX 矩阵是否可逆 使用最小二乘法求得 回归系数 w 的最佳估计 @@ -390,15 +404,15 @@ def abaloneTest(): # 打印出 不同的核预测值 与 新数据集(测试数据集)上的真实值之间的误差大小 newyHat01 = lwlrTest(abX[100:199], abX[0:99], abY[0:99], 0.1) - print "new yHat01 error Size is :" , rssError(abY[0:99], yHat01.T) + print "new yHat01 error Size is :" , rssError(abY[0:99], newyHat01.T) newyHat1 = lwlrTest(abX[100:199], abX[0:99], abY[0:99], 1) - print "new yHat1 error Size is :" , rssError(abY[0:99], yHat1.T) + print "new yHat1 error Size is :" , rssError(abY[0:99], newyHat1.T) newyHat10 = lwlrTest(abX[100:199], abX[0:99], abY[0:99], 10) - print "new yHat10 error Size is :" , rssError(abY[0:99], yHat10.T) + print "new yHat10 error Size is :" , rssError(abY[0:99], newyHat10.T) # 使用简单的 线性回归 进行预测,与上面的计算进行比较 standWs = standRegres(abX[0:99], abY[0:99]) - standyHat = mat(abx[100:199]) * standWs + standyHat = mat(abX[100:199]) * standWs print "standRegress error Size is:", rssError(abY[100:199], standyHat.T.A) ``` @@ -426,9 +440,11 @@ def abaloneTest(): 岭回归最先用来处理特征数多于样本数的情况,现在也用于在估计中加入偏差,从而得到更好的估计。这里通过引入 λ 来限制了所有 w 之和,通过引入该惩罚项,能够减少不重要的参数,这个技术在统计学中也叫作 `缩减(shrinkage)`。 +![岭回归](../images/8.Regression/LinearR_22.png) + 缩减方法可以去掉不重要的参数,因此能更好地理解数据。此外,与简单的线性回归相比,缩减法能取得更好的预测效果。 -这里通过预测误差最小化得到 λ: 数据获取之后,首先抽一部分数据用于测试,生育的作为训练集用于训练参数 w。训练完毕后在测试集上测试预测性能。通过选取不同的 λ 来重复上述测试过程,最终得到一个使预测误差最小的 λ 。 +这里通过预测误差最小化得到 λ: 数据获取之后,首先抽一部分数据用于测试,剩余的作为训练集用于训练参数 w。训练完毕后在测试集上测试预测性能。通过选取不同的 λ 来重复上述测试过程,最终得到一个使预测误差最小的 λ 。 ##### 4.1.1、岭回归 原始代码 diff --git a/docs/9.树回归.md b/docs/9.树回归.md index bd62c137..a79747c4 100644 --- a/docs/9.树回归.md +++ b/docs/9.树回归.md @@ -3,6 +3,23 @@ ![预测数值型数据回归首页](/images/9.TreeRegression/TreeRegression_headPage_xy.png "树回归首页") +## 树回归 概述 + +`我们本章介绍 CART(Classification And Regression Trees, 分类回归树) 的树构建算法。该算法既可以用于分类还可以用于回归。` + +## 树回归 场景 + + + + + + + + + + + + ## CART 算法 > CART 算法简介 diff --git a/images/8.Regression/LinearR_18.png b/images/8.Regression/LinearR_18.png new file mode 100644 index 0000000000000000000000000000000000000000..753fb0119f15e5751564e075e05aff71245feaa4 GIT binary patch literal 2433 zcmV-{34Zp8P)>Vt@MdY4z&Wn>TMBK79C|J$tfc z%N83OyMO=wB}<@JSbnjJbz!le2E?}U%uS5Y11!XzJ$TA$x8Ip zTBS-A#((?v4Q-x0d9ru!-q)^OD_F2#@#4izd_(+EPp!DoDPaDd2x(;GN&AcwVU*RD!Sz%Baod;k9ZyLa#W;gFHX zVlhPKpFe-H#+EHxu3WiNQCdA~wQf}2ym_si|F-AHj~_E;%y{wQMZ<;-Pn|lIJ9qA? zRjVF7dK7bO-n_Y%Y#hf{ty)D!MshkMA|l$hZL2z5QT;(g_Vnq~1q&8%jA+!WS8vgx zMF_ul@7{g;_IXs`V)KRHYrL$+x(*FGUv*^@a#p% z@Jy&yv2wr=j^7 zL4yW?Sj&_tgW?E?CXOUs=g*&i^ytyrwQI?{OmB^kP_jq@tFbdcZFGu1tzEmeB7duF ze#z7?#8bLPzN z-@jYm2BJrbAsZ^QT)A?E${fc|h1i)!Nv*H|VUYWySupm)hYzhxG1%L;Z(IB6p<>Xc zO&ectZHN4mPWE8x)T!gfjq`u|Rn^Kmff~R-G@F>1h!Pc7&KX3|goFg+@dv0A30VdW zEtqYc6sJ$f<~;EVZXADC3&rOe4?ANSB~*Fj$dPK*s$mD#iL`n&)Cyl*73dFNK6&zF z#Vw^;QMYd0Ns}hY)uP`qW5&RTbeqhlQ>RYgK`o&rF?%+5?p(@})2C0rd-v|JVZ(@- z%qR(r4ImdqqWJjup+kpm+_(|TAZA>@ew|_p*cRUk@x6QZXfIs2&^XXTTQ4ZLYuAni z5WZ&3nze4-I+g2|SFc{BrKJJ=WMF;!_HBa(4SMwGv1ZMh`t|EKY0?CZa|k^AxUJxN zf=$}Gbt^cefB*hywn&j8wyY37slP8Z54}1#Fy?XU3{kBXL zJN4Ac+=B-X1|ef{9BmM?>olw!?2dhpTJt5-+k1Yf*?P%Bo< zR^fA@WXRH`OF`qNAIFndl9g!S9N`H>kydYHWhCaLZ`!npsEY>!x&Xr&hz#t9$e=J% zen3g%C=YG-bim3Kp|Mt~MAV0@Z%sXg3m3*B01~X(n6Y3TMT-`tUe~8jA7Nj)a^<3? zDerF};Ai4ydPFtgA()RHJ9gQ!Wt2tG7sY%ND>(`aeg6D8Y{_v%Zim+KnkNE5n^G22~nbF&z|^Grch)H8BS1^`?wboh{Bl_LvX~5#V`@c zxDfVa#dg zDmejs7GVlk2uQR&j2u1kB~lj|$8E_tTvY1tePD9a9e8SLD(8`i;XkD07Z=BevOw+0eJ%vlBbSSS`xd%y)y;`}&!#t@Fi%%}ZTKH^@5|msQrGDE_u_>2O9^_L!Ng09- zd$m#u;PW0z`ed%$MPql=Q)bVeO+8fVh|4u@IH>2#9?<|lP*E;bs+6feq#o_niV~?w z6S6Q#ah9pJ@Xv$Js=>eyA3i*9-aL$&O9XC&jF(r=V>8)XpEUtoB$ZuLRn&Fyn7L3T zfy@6ApX+oPmcXZ4GpxixA(%bD3JTFPvXK7)@S*BO^-Hw300000NkvXXu0mjfuC%Iu literal 0 HcmV?d00001 diff --git a/images/8.Regression/LinearR_19.png b/images/8.Regression/LinearR_19.png new file mode 100644 index 0000000000000000000000000000000000000000..242884ceea0d7e7002ff5adb9e6d878d96017807 GIT binary patch literal 1242 zcmV<01SR{4P)=+aDao!0b|Kn(h!lY?1i!p z2gnkmkZp#+{Jw7A-t~+`%$~TzJB%clgog*obko> zcLrWkqm&1KDP2+F!tU& z(kzyimi_(xk`rZvZ{NP{@9zf$1hC;*Pys_a7e3F=&!wphDp7=`r6t5qRFbNCdV1>X z>$kMDusSp}WNK>a;o(8ADXSQ1g*7oTF`RjPe4K4HH8o@{Jw5%$j~`4sIy!I?A0K~q zcE%Kjrlh1u-a!22%NGj^3wmd5ZB4S5mzU#H5c%n-C`@8vqM@N-Lqh{0E-o%;Z5gs9{@eZn+h8h?cKxjyz*aSWpg!(Y$85b9~y1FWsWS@lj@ZkfDD=8`Aoa{L`IG{br z_}8yrv$M00kB{HKe?K}pDqe4DY6=SrlXazN%*e>d%gd82Pe(O2HkOu_2AG0^0*b+* zP&bGvi|VGKpey&Ky86x3%*+g$P-@NzcYJ(&%+1YVAZem&Xcm6Z1ZfbxKu)PDo9E}} zVJSu^1A}H}W=MKhSJ%qQ%F)pg7O`JbQ&S8cc#8g2yv3EFYHV!O($W&B-o1Nwcz7t> z-bZC+Wd&{dQ0VFD>F(|ZEefEmtu2e{CKm<<2Jj6z5Sz$RL`1~!@bK*H?8L-GWMrhs z8l0EfYG-H1%gc-XWTc{^f_PO`Rh^xks3t}jgw{fn?d@&0fdd43dV0eD*4CB~Y%!I6 z67lWZw|w$Q8mA0Zbab@DcLLEPIFv;N0OGO-W#q6N(80k0sIsVTQiBkXbr>t5B*7>X zx2&(PFRPOM&Hye{R#txe_%S#*I5adAk)j1CBNBsnjf{*CI3y&buCC6`&Q4GO(4^bl z-TjWM`%~Bo?{Fn8JrNbM<>=^GTU+bz?@tDMdwZRoorQB5RHDsz2VE>IER-6X0SDkz zo12@8#yjJ=xj6(I@4C9WgcQ7>6ud>&5ERr0LXjp)B;JKb5NdjQ`i`snQ;6x};v#fi zT74p_si`T7MD$OeJ_Q8@NkVfU)$Mo9;NTz!0F3}a7R$=YU<3mR*0T)gJ8mLzb3N>k z&`3B+DSd6J64h;L2;bJ$CQ^fjlijGOC<^{C`hUC1+4!R2=6d9dXiaNtD>oqfRgCI3 zH4;|P^FhHkE-I6on~OY4OaI|O^{CW1tt4_U1H}yd24{CN7+Zrj1poj507*qoM6N<$ Ef=R?)zW@LL literal 0 HcmV?d00001 diff --git a/images/8.Regression/LinearR_20.png b/images/8.Regression/LinearR_20.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0ab77968e48bd5c82832d01880870e901f6062 GIT binary patch literal 1001 zcmV+9?Px6D2bq+3x@ z@u>jj?d@%9YU8gW+ zgUTV*9UUDtH#g^;kdRPaU9GFDtEZ>e(b0kE`1rV_q~!AQ5?VY93k%-f-uwIef}uWxQ{B&~;s2aXKV2O}jzQy|QR2h{HF?!+-ZK7M(5d3SeLSp@|JZEbCldR0}Gp`l@JZZ5Wx z!n^m!KpPtyPEJmEfIxX~Z;u?{0CbKFWJE;7z`%gyM@P7$xm4HI)^>JwRxm#jjIyVv z=giEE5cTx*6c-mu_v!8JEh;J!cN045#JfPx&(F2BwQX%}B$}C-xw*O7-Q8VRR|g*} zN&vH=p+WNSws$Ewj?T}|*VoromH+I68L;CK!pO+Tqobphl@)CJ`}@<=(^(*d$;rt9 z1}s64P*YPQ^xp*nzW)CHOG``h^Yg>Q!_(8#bl=CvM}jq0cw;X~=BlW4zpSh*JUraq z-oCQ3G9Vzp#l=MgP$yVzrlzLkCzuu%7BMj~)D`?$TU-13`Xb^!zy3TzO(H%G_t;t*tSmTq`LlDJ3Q4;^KlirrnapyEk|B^YddF ztMf^BadEM=wKXj*?Tg*4DG;comSbaMn9t44fmaE~gkbizx3?*T6i%7$;NW0OOACVb z_V$sHk)53#Mw?-xq3SuQ4CHdKI5aeLb#*1App6|2QiWe3QYSP8VrE$CG>t-lY!)p& zlnf^)C(X>v93351e$+vrB~7!K7J*i*xGIy%KGxEMmTEvYIXSthsY&R+Ax6CnU(@_k znwy((ff^tHVQgX(6BD-2*M@&9eSCbR3enNgZ-yfA?-3^_C)wHA{8NA_X#1WM?X7+T XvYr&rOImem00000NkvXXu0mjf1T5@m literal 0 HcmV?d00001 diff --git a/images/8.Regression/LinearR_21.png b/images/8.Regression/LinearR_21.png new file mode 100644 index 0000000000000000000000000000000000000000..da468432caa8232ee42e9a0ceb9da44af375681c GIT binary patch literal 3488 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%0DI>lJ5akjeuxPyE{#TMG30; zlR7^bD_O|#X?kDu`dk=uUe$L!$1j^-Ni8fq2&C&9)A(x_U>XJz&{vCYAl|j-iZ62; zjlaztUM~|l;-JfdCVLM-2yC4P&AiX*Ha@<3%xl~6ust#mY#1ge8{CA2%TcjNgWKvu zPIXA~mZW`KoR+G*BRM~{-z@$q4{bQLtDzzdy}Ro^GXYZaM|D+uvEB>MzVAX*OTmD- z`T?Z!x@|x+VZ0@ysE}~0Y+$G0(*!tjJt_1Pod$um)RKi+9`aN3q)5e;P3;0i zb2_T6JOHlz;+XSCSugnmdS~_JbBY5lE~U9G#sQ_0GDX1OvqIdUC>x)119$*!6F0Do%y_~QB zZ|nA^R}aG8A06(_Iyt}xb=9XAs5e)&n^#BC@EYZkQD2EcuUqDCwpdxbT_j$r%RKyX z+8{H@yz627EXJ1Q8Ww@fis3IY|o`sBf4(|AH9jSCcK!AWX@QIse~Hb0Dmy>H*gd+~1cG b3Nej}l~-0E#WTGId?`OvfAC4(EcAZ>P-9w% literal 0 HcmV?d00001 diff --git a/src/python/8.PredictiveNumericalDataRegression/regression.py b/src/python/8.PredictiveNumericalDataRegression/regression.py index 1e445cf3..5372cdee 100644 --- a/src/python/8.PredictiveNumericalDataRegression/regression.py +++ b/src/python/8.PredictiveNumericalDataRegression/regression.py @@ -539,15 +539,15 @@ def abaloneTest(): # 打印出 不同的核预测值 与 新数据集(测试数据集)上的真实值之间的误差大小 newyHat01 = lwlrTest(abX[100:199], abX[0:99], abY[0:99], 0.1) - print "new yHat01 error Size is :" , rssError(abY[0:99], yHat01.T) + print "new yHat01 error Size is :" , rssError(abY[0:99], newyHat01.T) newyHat1 = lwlrTest(abX[100:199], abX[0:99], abY[0:99], 1) - print "new yHat1 error Size is :" , rssError(abY[0:99], yHat1.T) + print "new yHat1 error Size is :" , rssError(abY[0:99], newyHat1.T) newyHat10 = lwlrTest(abX[100:199], abX[0:99], abY[0:99], 10) - print "new yHat10 error Size is :" , rssError(abY[0:99], yHat10.T) + print "new yHat10 error Size is :" , rssError(abY[0:99], newyHat10.T) # 使用简单的 线性回归 进行预测,与上面的计算进行比较 standWs = standRegres(abX[0:99], abY[0:99]) - standyHat = mat(abx[100:199]) * standWs + standyHat = mat(abX[100:199]) * standWs print "standRegress error Size is:", rssError(abY[100:199], standyHat.T.A) @@ -581,10 +581,12 @@ def regression5(): setDataCollect(lgX, lgY) crossValidation(lgX, lgY, 10) + if __name__ == "__main__": # regression1() # regression2() + # abaloneTest() # regression3() - # regression4() - regression5() \ No newline at end of file + regression4() + # regression5() \ No newline at end of file