分類和迴歸的區別:
分類,我們預測一個狀態,
迴歸,我們預測一個值。
線性迴歸是:通過已有的數據,擬合出一條符合它的直線,用來預測其他可能出現的值。
如何擬合一條好的直線呢?
就是是如何使一條直線更加的靠近一個點呢?
技巧方法
- 絕對值技巧:
先隨機生成一條直線,w1是斜率,w2是截距,我們通過調整這兩個參數來使這條直線逐漸靠近一個原始的點(p,q)。
如何慢慢調整這兩個參數呢?
我們把,(特定的一種調整手段),直線調整方程爲:後來發現這樣改變直線移動的幅度還是很大,我們想到設置一個變量控制w1和w2的變化,就是:
把原來的w1變爲:,
把原來的w2變爲:。
直線調整方程爲:,這樣直線的變化幅度就會變小很多。
這裏的p就是座標值的p,我們改變直線斜率的時候可以不用考慮正負問題,因爲p的正負決定了斜率的正負。我們給他起了個名字,叫學習率。
- 平方技巧:
上面講的絕對值技巧只涉及到p也就是一個點的橫座標,如果把縱座標的變化也加進去會移動的更加精確.
點到直線的縱座標距離爲:
把原來的w1變爲:,
把原來的w2變爲:。
直線調整方程爲:,這樣直線的變化就會更加精確。
最小化函數值方法
- 梯度下降
我們想繼續尋找一條最合適的直線來擬合很多個點,這裏會有另一個問題,衡量直線好壞的標準(誤差越小。擬合的越好)。我們用所有點到直線的誤差和(第4和第5個知識點)表示(誤差函數)。
那梯度下降又是幹啥用的?
我們可以把它理解爲一種方法,這個方法可以幫助我們找到一個函數的最值。
我們找誰的最值呢?
找誤差函數的最值,而且是最小值。我們使用梯度下降的方法不斷的求誤差函數值,直到誤差函數達到最小值。
誤差值函數如下圖所示:
我們選擇下降最快的方向調整綠色線的曲率,也就是。進行此操作直到error取值到達最小值附近。
逐個地在每個數據點應用平方(或絕對)誤差,並重復這一流程很多次。叫做隨機梯度下降法。
同時在每個數據點應用平方(或絕對)誤差,並重復這一流程很多次。叫做批量梯度下降法。
-
平均絕對誤差
所有點到直線垂直距離和是:,
除以點的個數m,就是平均絕對誤差了:
這個公式就是我們上圖的誤差函數的一個具體表示,我們可以使用梯度下降的方法求得這個公式的最小值。 -
平方誤差
爲了不計算絕對值,我們採取對距離求平方的方法,使得誤差函數依然能夠衡量誤差大小且不用求絕對值。
那麼所有點到直線垂直距離和誤差就被改成了:,
這時除以的個數就被改爲2m了(這裏爲什麼是2m?求導所得,至於爲什麼求導看第6點),均方誤差就爲:
我們依然可以使用梯度下降的方法求得這個公式的最小值。 -
最小化誤差函數
如果看具體的例子,我們就能發現,上面講的兩個技巧方法就是平均絕對誤差和均方誤差的一個特例。他們講的是同一個東西。具體推到過程可以自己嘗試。 -
絕對值誤差 VS 平方誤差
有時候只用一種誤差計算方法是判斷不出來誤差好壞的,如下圖所示
這幅圖的平均絕對誤差ABC三條直線都一樣,但是計算其平方誤差時,發現B的平方誤差較小。因爲均方誤差是個2次函數。
-
高緯度
當輸入的數據有兩個,輸出結果爲一個時,我們在進行預測的時候就不是直線的關係了,繪出圖來就是三維的,兩個輸入一個輸出,預測的方程也由直線方程變爲了平面方程。有三個可變參數。
同理,更高維的輸入輸出我們或許用圖形表示不了,但依然可以用公式表示。 -
解方程
知道方程之後,我們就可以用對方程求偏導的方式求得最值了。
此時使用方程求解依舊會出現相關問題,當方程個數很多時,求解就會變慢。
我們甚至需要用矩陣來求解。 -
線性迴歸注意事項
- 有些訓練的數據不是線性關係,不適合線性迴歸
- 如果數據集中存在異常值,最終的結果會有偏差
-
對於明顯不是直線的數據集,我們可以用多項式來擬合。
-
正則化
現在我們看另外一種狀況,下圖是兩種擬合線,一種是線性擬合線,一種是多項式擬合。
第一種有錯誤,第二種沒錯誤,也就是第二種的誤差更小。
但是,如果按照劃分來看,第二種明顯是過擬合,不可取。
如何在誤差函數中體現過擬合呢?
我們可以看到,第一種的參數很小,第二種的參數很多很大,所有把參數的的複雜度也算作是誤差,這樣簡單的模型就會比複雜的模型更好了。
又如果,我們需要手動調節模型的複雜程度,這該怎麼辦呢?
設置一個乘以參數的值,越小懲罰力度越小,越又可能是複雜的模型。
這叫正則化。 -
神經網絡迴歸
假設我們使用分段函數來擬合數據集
就可以類比於神經網絡的例子了。
此神經網絡最後的Sigmoid是把原來的值轉換到0到1之間使之達到分類的效果,如果不使用Sigmoid函數,就是預測值的作用了。