A-01 最小二乘法

更新、更全的《機器學習》的更新網站,更有python、go、數據結構與算法、爬蟲、人工智能教學等着你:http://www.javashuo.com/article/p-vozphyqp-cm.htmlpython

最小二乘法

最小二乘法,能夠理解爲最小平方和,即偏差的最小平方和,在線性迴歸中,\(偏差=真實值-預測值\)。最小二乘法的核心思想就是——經過最小化偏差的平方和,使得擬合對象無限接近目標對象,最小二乘法通常解決線性問題。算法

1、最小二乘法——代數法

假設線性迴歸的假設函數爲
\[ \begin{align} h_\omega(x_0,x_1,\cdots,x_n) & = \omega_0x_0+\omega_1x_1+\cdots+\omega_nx_n \\ & = \sum_{i=0}^n \omega_ix_i \end{align} \]
其中\(n-1\)是特徵數。若是針對全部的\(\omega_i\quad(i=1,2,\cdots,n)\)而言,假設函數是非線性的,可是針對某一個\(\omega_i\)的話,因爲變量只剩下一個\(\omega_i\),假設函數就是線性的,既可使用最小二乘法求解。數據結構

經過線性迴歸的假設函數既能夠獲得目標函數爲
\[ \begin{align} J(\omega_0,\omega_1,\cdots,\omega_n) & = \sum_{j=1}^m (h_\omega(x^{(j)})-y^{(j)})^2 \\ & = \sum_{j=1}^m(\sum_{i=0}^n \omega_ix_i^{(j)} - y^{(j)})^2 \end{align} \]
其中\(m\)爲樣本數。機器學習

利用目標函數分別對\(\omega_i\)求偏導,而且令導數爲0,即
\[ \sum_{j=1}^m \sum_{i=0}^n (\omega_ix_i^{(j)} - y^{(j)})x_i^{(j)} = 0 \]
經過求解上式,能夠獲得\(n+1\)元一次方程組,經過求解這個方程組就能夠的獲得全部的\(\omega_i\)函數

2、最小二乘法——矩陣法

最小二乘法矩陣法比代數法簡單很多。咱們把代數法中線性迴歸的假設函數能夠寫成
\[ h_\omega(X) = X\omega \]
其中\(h_\omega(X)\)\(m*1\)維的向量,\(X\)\(m*n\)維的矩陣,\(\omega\)\(n*1\)維的向量,\(m\)爲樣本數,\(n\)爲特徵數。學習

經過上述矩陣形式的假設函數能夠獲得矩陣形式的目標函數爲
\[ J(\omega)={\frac{1}{2}}(X\omega-Y)^T(X\omega-Y) \]
其中\({\frac{1}{2}}\)只是爲了方便計算。優化

目標函數對\(\omega\)求導取0,能夠得
\[ \nabla_\omega{J(\omega)} = X^T(X\omega-Y) =0 \]
上述求偏導使用了矩陣求導鏈式法則和兩個矩陣求導的公式
\[ \begin{align} & \nabla_X(X^TX) = 2X \\ & \nabla_Xf(AX+B) = A^T\nabla_{AX+B}f \end{align} \]
經過對上述式子整理可得
\[ \begin{align} & X^TX\omega=X^TX\quad{兩邊同時乘}(X^TX)^{-1} \\ & \omega = (X^TX)^{-1}X^TY \end{align} \]
經過上述的化簡能夠直接對向量\(\omega\)求導,而不須要對\(\omega\)中的每個元素求偏導。網站

3、最小二乘法優缺點

3.1 優勢

  1. 簡潔高效,比梯度降低法方便

3.2 缺點

  1. 最小二乘法須要計算\(X^TX\)的逆矩陣,可能\(X^TX\)沒有逆矩陣(通常須要考慮使用其餘的優化算法,或者從新處理數據讓\(X^TX\)有逆矩陣)
  2. 當特徵數\(n\)很是大的時候,\(X^TX\)的計算量很是大(使用隨機梯度降低法或使用降維算法下降特徵維度)
  3. 最小二乘法只有擬合函數爲線性的時候纔可使用(想辦法經過某些機巧讓擬合函數轉化爲線性的)
相關文章
相關標籤/搜索