regression
單變量線性回歸univariate linear regression
代價函數square error cost function : \(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)
\(2m\)的\(2\)是為了消去后續求導時的\(2\)
其中單變量時 \(h_{\theta}(x) =\theta_0 + \theta_1 x\) (h是hypothesis的意思)
上標(i)是指第i組訓練數據
梯度下降法gradient decent:
腦補一個三維圖像:\(\theta_0,\theta_1,J(\theta)\)
\(\theta_i -= \alpha \frac{\partial}{\partial \theta_i}h(\theta)\)
(導為正數時,\(\theta\)應減小;導為負數時,\(\theta\)應增大。 陡的時候快,緩的時候慢)
隨著過程的執行, 可以讓\(\alpha\)遞減去更好的接近(不過即使\(\alpha\)是定值也能走到局部最優點)
只要 \(\alpha\)不會過大 (過大時J可能甚至越大,腦補一個人在盆地兩邊跳來跳去越跳越高)
無論單變量還是多變量,這種線性回歸代價函數一定是bowl shape
當J經過一次迭代后變化不超過原來的\(10^-3\)時認為converage(如果是陡完平一段繼續陡怎么辦?)
多變量線性回歸multivariate linear regression
\(h_{\theta} = \theta_0 x_0 + \theta_1 x_1 + \theta_2 x_2 + \cdots + \theta_n x_n\) 其中\(x_0 = 1\)
\(J(\theta)=\frac{1}{2m}\sum_{i=1}^{m} (h_{\theta}(x^{(i)}) - y^{(i)})^2\)
\(\theta_j\) -= \(\alpha \frac{\partial}{\partial \theta_j}h(\theta) = \alpha \frac 1 m \sum_{i=1}^m (h_{\theta}(x^{(i)})-y^{(i)})x^{(i)}_j\) (展開h,求偏導)
\(x^{(i)}_j\)表示第i組訓練數據的第j個feature
(腦補表格:每列一個特征,最左添加一列\(x_0=1\),最后一列是標準值y,每行一個example)
令\(X\)為\(m\times(n+1)\)矩陣,\(Y\)為\(m\times1\)列向量
令\(theta\) 為\((n+1)\times1\)列向量,\(H\)為\(m\times1\)列向量
為便于觀察并減少迭代次數,我們需要對特征進行縮放,使其范圍不至于過大,也不至于過小
例如\(\alpha\frac{x-min}{max-min}\), \(\alpha\frac{x-mean}{max-min}\) 具體情況而定
注意縮放后,predict時的特征也要對應用同種方式縮放
注意不要一個for循環過去把\(x_0\)也改了(另外注意octave是從一開始存的)
線性回歸其他函數設計
如給定房子的長和寬和房價,特征不應是長和寬兩個,而應該是占地面積
如給定數據點明顯不是直線,可以考慮\(\theta_0 + \theta_1 x + \theta_2 x^2\)之類的,x是同一個feature, 令\(x_i\)為\(x^i\)轉多變量問題
根號和ln其實長得很像
正規方程normal equation
公式:\(\theta = (X^TX)^{-1}X^TY\) (why?)
其中\(X\)為\(m*(n+1)\), \(Y\)為\(m*1\)
求逆即使是偽逆也能算對
使用時建議\(m>n\)
優勢:不必要縮放features,不需要跑多次調整\(\alpha\)
效率比較:梯度下降(省去重復運算)是\(n*m*iter\),這個是\(n^3+n^2m\)。
n大的時候這個方法肯定不行。但一般來說n應該不大?m比較大?
轉載于:https://www.cnblogs.com/acha/p/11028892.html
總結
以上是生活随笔為你收集整理的regression的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET CORE 入门教程(附源
- 下一篇: 连接数据库时常用的工具类(一)-----