摘要:在回歸分析中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析如果回歸分析中包括兩個及以上個自變量,且因變量和自變量直接是線性關系,則稱之為多元線性回歸分析。參考斯坦福大學機器學習公開課
定義
假設函數與代價函數(損失函數)
特征量放縮
最小化代價函數
收斂判定
1.什么是線性回歸在統計學中,線性回歸是利用被稱為線性回歸方程的最小平方函數對一個或多個自變量和因變量之間的關系進行建模的一種回歸分析。在回歸分析中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析;如果回歸分析中包括兩個及以上個自變量,且因變量和自變量直接是線性關系,則稱之為多元線性回歸分析。
2.假設函數與代價函數在這里依然使用經典的例子——房價預測
房屋面積(平方英尺) | 房間數 | 價格(千美元) |
---|---|---|
2104 | 3 | 400 |
1600 | 3 | 330 |
2400 | 3 | 369 |
1416 | 2 | 232 |
3000 | 4 | 540 |
因為存在兩個自變量,所以這是一個多元線性回歸的例子(如果只有面積或房間數則是一元線性回歸),由此我們可以寫出假設函數:$$h_{Theta}(x)=Theta_{0}+Theta_{1}x_{1}+Theta_{2}x_{2}$$
可分析得出,對于任意n元線性回歸的假設函數可統一于如下表示:$$h_{Theta}(x)=sum_{i=1}^{m}Theta_{i}x_{i}$$
上式中$x_{0}=1$。對于線性方程的求解,實質上就是對參數θ的求解。
建立模型后,我們需要對假設函數的準確性進行判優,其實就是去衡量θ的選取是否最優,我們引入代價函數:$$J(Theta_{0},Theta_{1}...Theta_{n})=frac{1}{2}sum_{i=1}^{m}(h_{Theta}(x^{(i)})-y^{(i)})^2$$
函數前面的1/2是為了在后面的求導過程中使式子簡化。因此,我們現在的任務就是:求解代價函數的最小值,從而得出最優θ。
在實際的數據集中,每個自變量的范圍可能相差特別大,為了加速求解,我們需要將數據進行放縮,以此使得算法能夠更加快速的收斂,特征量放縮的方法可以采用如下公式:$$x_{i}=frac{x_{i}-overline{x}}{max(x_{i})-min(x_{i})}$$
4.最小化代價函數4.1最小二乘法(正規方程)
將訓練特征量表示為X矩陣,訓練集對應的結果值為y向量(注:本方法公式中y都是指向量y),即:
$$X=egin{bmatrix}1 & 2104&3 1& 1600 & 3 1& 2400&3 1& 1416 & 2 1& 3000& 4end{bmatrix};y=egin{bmatrix}400 330 369 232 540end{bmatrix}$$
其中,第一列對應x0,且x0恒為1,所以假設函數就可以表示為:
$$h_{Theta}(x)=XTheta$$
代價函數可以表示為:$$J(Theta)=frac{1}{2}(h_{Theta}(x^{(i)})-y^{(i)})^2=frac{1}{2}(XTheta-y)^{T}(XTheta-y)$$
由高等數學的知識,可以知道求代價函數的最優值,就是對每一個θ求偏導,令其為0。對上式進行求導展開:$$frac{partial }{partial Theta }J(Theta)=frac{1}{2}frac{partial }{partial Theta }(Theta^{T}X^{T}XTheta-Theta^{T}X^{T}y-y^{T}XTheta+y^{T}y)$$
由于θ轉置是1*3,X轉置是3*5,X是5*3,θ是3*1,所以上式第一項是1*1,即一個單一量方陣,同理可以得到其他的都是1*1方陣,所以上式又可以寫成:$$frac{partial }{partial Theta }J(Theta)=frac{1}{2}frac{partial }{partial Theta }tr(Theta^{T}X^{T}XTheta-Theta^{T}X^{T}y-y^{T}XTheta)$$
最后可以變形為:$$frac{partial }{partial Theta }J(Theta)=X^{T}XTheta-X^{T}y$$
令上式為0,最終可得θ為:$$Theta=(X^{T}X)^{-1}X^{T}y$$
在這種情況下,需要X的轉置乘以X可逆,如果不可逆,可能的原因可能是:
1.特征量矩陣中存在兩種特征數據線性相關;
2.特征數遠大于數據集的個數,這時可以嘗試著刪除某些不是那么重要的特征數據;
這種方法對于求解問題相當的暴力簡單,不需要迭代,不需要選擇學習速率參數,但是當n的個數大于10,000時,這種方法的計算速度就非常之慢了。
4.2 梯度下降法
4.2.1 批量梯度下降(BGD)
在曲面上方向導數的最大值方向就代表了梯度方向,因此在我們在進行梯度下降時選擇梯度的方向進行值更新,就可以找到最優解,θ的按照如下方法進行更新,其中α稱為學習速率:$$Theta_{j}:=Theta_{j}-alphafrac{partial }{partial Theta }J(Theta)$$
首先假設假設函數只有一個參數,我們可輔以Ng課上的一張圖片加以理解:
對于學習速率α的選擇,如果太大,每次變化太大則容易超過最小值,太小則迭代次數過多。同時,當選定了學習速率時,我們不用再每次θ更新時也更新α,因為當我們接近局部最小或全局最小值時,梯度會自動的減小,直至為0,因此我們不必重復的去減小α。
當θ為2時,
當求解問題是線性回歸時,代價函數就是一個線性最小二乘求解,就已經保證了代價函數是凸函數(如上圖所示類似),所以批量梯度一定能找到全局最優解;而當其他問題,非線性時,代價函數就可能變成非凸函數,批量梯度找到的就可能是局部最優,如圖:
梯度下降類似于在山的某一點環顧四周,計算出下降最快的方向(多維),然后踏出一步,這屬于一次迭代,同步更新一次值(所有θ必須是同步更新,不能更新了θ1,就用θ1更新后的值計算θ2,要所有的都計算完之后同步更新);實際算法中并沒有“環視四周”的步驟,因為當我們進行梯度計算時,就已經代表我們在朝著最小值方向前進。之所以稱之為“批量梯度下降”是因為每一次迭代計算θ時都使用了整個樣本集。但是,現在機器學習所處理的數據量相當的大,每次迭代都要遍歷整個樣本集無疑會耗費大量時間。算法描述如下:
4.2.2 隨機梯度下降(SGD)
隨機梯度的思路是:每次只使用一個樣本來確定梯度,循環m次,這樣就能得到一個十分逼近最優解的值。算法描述如下:
原始的隨機梯度下降(SGD)適合于低精度的任務,而梯度下降算法適合用于高精度的任務。
如果接受一個比較低的精度(應用問題中往往不要求高精度),那么由于SGD每次只利用一個或部分樣本的梯度做更新,所以前期迭代較快,導致前期一段時間內比梯度下降算法下降得多。
但是由于原始的SGD算法在目標函數強凸的情況下依舊無法做到線性收斂,所以當執行的時候足夠長的時候SGD的精度會被梯度下降算法趕超,因為梯度下降算法可以在目標函數強凸的時候有線性收斂速(本段摘自:https://www.zhihu.com/questio...)
具體的收斂判定方法,待解決。
注:關于最小二乘法中得到矩陣形式的詳細證明請參考本人其他相關文章,CSDN太難用了。
參考:
1.http://cs229.stanford.edu/sec...
2.http://lib.csdn.net/article/m...
3.http://open.163.com/movie/200...
4.CourseRa-斯坦福大學機器學習公開課
5.http://keson96.github.io/2016...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41417.html
閱讀 3553·2021-11-25 09:43
閱讀 3134·2021-10-08 10:04
閱讀 1625·2019-08-26 12:20
閱讀 2053·2019-08-26 12:09
閱讀 595·2019-08-23 18:25
閱讀 3573·2019-08-23 17:54
閱讀 2322·2019-08-23 17:50
閱讀 803·2019-08-23 14:33