預測函式
單變數線性迴歸:\(h{_\theta(x)} = \theta{_0} + \theta{_1}x\);令\(x_0 = 1\);則\(h{_\theta(x)} = \theta{_0}x_0 + \theta{_1}x_1\) ;
多變數線性迴歸:\({{h}_{\theta }}\left( x \right)={{\theta }_{0}}{{x}_{0}}+{{\theta }_{1}}{{x}_{1}}+{{\theta }_{2}}{{x}_{2}}+...+{{\theta }_{n}}{{x}_{n}}\); \(x_0 = 1\);
代價函式
- 損失函式:對於單個樣本而言,指的是一個樣本的誤差;
- 代價函式:範圍是整個訓練集,此處簡單理解為所有樣本誤差的平均;
平方差代價函式:$$J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{{{\left( {{h}_{\theta }}\left( {{x}^{(i)}} \right)-{{y}^{(i)}} \right)}^{2}}}$$
- 額外1/2是因為:用於消除梯度下降時求偏導數所出現的2;
代價函式還有其他種類,如:交叉熵代價函式。
目標:不斷迭代\(\theta\),力爭讓代價函式最小,越小預測結果越準確。
梯度下降
方向導數與梯度
- 導數:在二維平面中,曲線上某一點沿著x軸方向變化率,即函式在該點的斜率;
- 偏導數:在三維空間中,曲面上某一點沿著x軸方向或y軸方向變化率;\(\frac{\partial f}{\partial x}\)、\(\frac{\partial f}{\partial y}\);
- 方向導數:在三維空間中,曲面上某一點沿著任一方向的變化率;
方向導數(是一個數)
二元函式 z = f ( x , y )的方向導數求法:
\(\frac {\partial f} {\partial \overrightarrow l} = \frac{\partial f}{\partial x}\cos\alpha + \frac{\partial f}{\partial y}\cos\beta = \{\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}\}\{\cos\alpha, \cos\beta\}\)
梯度(是一個向量):表示某一函式在該點處的方向導數沿著該方向取得最大值,即函式在該點處沿著該方向(此梯度的方向)變化最快,變化率最大(為該梯度的模)。
- 沿著等高線密集的方向,可以更快到達最低點。
梯度的求法,以 z = f ( x, y ) :$grad f(x, y) = \frac{\partial f}{\partial x}i + \frac{\partial f}{\partial y}j $
梯度的公式中的偏導,和梯度下降公式中的偏導聯絡起來。
梯度下降的直觀理解
假定代價函式只有一個變數,對應多個引數,求偏導時是一樣的效果;
repeat until convergen { \(\theta_1:=\theta_1-\alpha \frac{d}{d\theta_1} J(\theta_1)\) }
- \(\alpha\):學習率,可以理解為下降的步長;
- \(\alpha\)大小可以不用變化,因為隨著\(\theta\)的變化,(偏)導數會不斷減小,因此他們之積也會不斷減小,直到收斂;
- \(\alpha\)取值不易太大或太小,會造成難以收斂的情況;
批量梯度下降
關於批量的解釋:是在梯度下降的每一步中,我們都用到了所有的訓練樣本,從下面公式的求和符號可以明顯看出。另外,也可以這樣理解,每次下降我們要追求的是總損失也就是代價的最小,這是一個整體的最小,而不是單個樣本最小,只擬合到一個點,毫無意義。
迭代核心:
很簡單的求一下偏導,就得到下面結果:
In other words:
特徵放縮
樣本集中的每個特徵的範圍儘可能的接近,更容易收斂。
標準化
均值歸一化
最大-最小值歸一化
正規方程(Normal equation)
正規方程是通過求解下面的方程來找出使得代價函式最小的引數的:\(\frac{\partial }{\partial {{\theta }_{j}}}J\left( {{\theta }_{j}} \right)=0\)。
多元函式求極值,令所有偏導等於0;
正規方程的推導過程:【機器學習】正規方程的推導過程,看完我不信你不懂!_性感博主線上瞎搞的部落格-CSDN部落格_正規方程推導過程
正規方程求解:
梯度下降 | 正規方程 |
---|---|
需要選擇學習率 | 不需要 |
需要多次迭代 | 一次運算得出 |
當特徵數量大時也能較好適用 | 需要計算 如果特徵數量n較大則運算代價大,因為矩陣逆的計算時間複雜度為,通常來說當小於10000 時還是可以接受的 |
適用於各種型別的模型 | 只適用於線性模型,不適合邏輯迴歸模型等其他模型 |
程式碼實戰
以上的所有內容都有程式碼演示,詳情可以檢視:AndrewNg-ML-Exs-by-Python/ML-Exercise1.ipynb at master · KpiHang/AndrewNg-ML-Exs-by-Python (github.com)