標籤:類型 class res die http gradient size ssi 不用
線性迴歸 ( Linear Regression )
定義:在監督學習中,學習樣本為 D = { (x(i), y(i));i =1, . . . , m } ,預測的結果y(i)為連續值變數,需要學習映射 f:X → Y ,並且假定輸入X和輸出Y之間有線性相關關係。
給出一組資料:
其中x是實數域中的二維向量。比如,xi1是第i個房子的居住面積,xi2是這個房子的房間數。
為了執行監督學習,我們需要決定怎樣在電腦中表示我們的函數/假設。我們可以近似地使用線性函數來表示。
(矩陣形式)
現在,有了訓練資料,我們怎麼挑選,或者說得知θ的值呢?一個可信的方法是使得h(x)與y更加接近,至少對於我們訓練的例子來說是這樣的。
於是,我們定義一個損失函數 / 成本函數( loss function / cost function ):
我們把 x 到 y 的映射函數 f 記作 θ 的函數 hθ(x)
損失函數有很多種類型,根據需求進行選擇。
然後進行最小化損失函數,將函數最佳化成凸函數 (往往只會有一個全域最優解,不用過多擔心演算法收斂到局部最優解) 。
梯度下降 ( Gradient Descent algorithm )
最快的速度最小化損失函數,比作如何最快地下山,也就是每一步都應該往坡度最陡的方嚮往下走,而坡度最陡的方向就是損失函數相應的偏導數。
因此演算法迭代的規則是:
假設現在有n個特徵、或者變數xj (j=1…n)
其中α是演算法的參數learning rate,α越大每一步下降的幅度越大,速度也會越快,但過大有可能反覆震蕩,導致演算法不準確。
欠擬合與過擬合(Underfitting and Overfitting)
欠擬合問題:特徵值少,模型過於簡單不足與支撐。
過擬合問題:有非常多特徵,模型很複雜, 我們的假設函數曲線可以對未經處理資料擬合得非常好, 但喪失了一般性, 從而導致對新給的待預測樣本,預測效果差。
正則項、正則化
通過正則項控制參數幅度。
正則項有多種方式選擇,常採用的有:
L1正則:|θj|
L2正則:θj2
Logistic 迴歸(Logistic Regression)
採用線性迴歸解決分類問題時,往往會遇到模型健壯性低,遇到雜訊時,受幹擾嚴重。
我們可以對舊的線性迴歸演算法來進行適當的修改來得到我們想要的函數。
引入sigmoid 函數:
對原函數hθ(x)進行改寫得到:
觀察函數映像發現:當x大於0時,y的值大於0.5,根據這特性可以將線性迴歸得到的預測值壓縮在0~1範圍內。
1.線性判定邊界:
假設線性函數為:,
當 hθ(x) > 0 時,g(hθ(x)) 的值為大於 0.5;
當 hθ(x) < 0 時,g(hθ(x)) 的值為小於 0.5;
2.非線性判定邊界:
假設函數為:
當θ0=0,θ1=0,θ2=0,θ3=1,θ4=1,得到函數g(x12+x22-1),邊界為一個圓,圓內點的值小於0
定義損失函數:
該函數為非凸函數,有局部最小值,應選擇其他函數。
定義損失函數為:
該函數的映像如下:
我們可以發現該函數在:
y=1的正樣本中,hθ(x)趨向於0.99~9 ,此時我們希望得到的代價越小,而當得到的預測值是0.00~1時,我們希望它的代價越大;
y=0的負樣本中,hθ(x)趨向於0.00~1 ,此時我們希望得到的代價越小,而當得到的預測值是0.99~9時,我們希望它的代價越大;
損失函數可以改寫成:
加入正則項:
二分類與多分類
one vs one
one vs rest
方法一:
1.先對三角形與叉叉進行分類,得到分類器C1,以及機率值Pc1(x) 和 1-Pc1(x)
2.然後對三角形與正方形進行分類,得到分類器C2,以及機率值Pc2(x) 和 1-Pc2(x)
3.最後對正方形與叉叉進行分類,得到分類器C3,以及機率值Pc3(x) 和 1-Pc3(x)
得到通過3個分類器,6個機率值,機率值最大的判斷為相應的類型!
方法二:
1.先對三角形進行分類,判斷是否為三角形,得到分類器C1,以及機率值Pc1(x)
2.然後對正方形進行分類,判斷是否為正方形,得到分類器C2,以及機率值Pc2(x)
3.最後對叉叉叉進行分類,判斷是否為叉叉叉,得到分類器C3,以及機率值Pc3(x)
得到3個分類器,3個機率值,機率值最大的判斷為相應的類型!
應用:
待續.....
【Python資料採礦】迴歸模型與應用