機器學習(Coursera吳恩達)(六)

機器學習(Coursera吳恩達)(六)

標籤(空格分隔): 機器學習 SVM 聚類


支持向量機

從邏輯迴歸推出SVM。
1lr.png-91.1kB

邏輯迴歸:如果有一個1樣本,希望得到的hθ(x) 趨近於1,這就要求θTx 應遠大於0。反之如果y=0,就需要遠小於0。

現在修改代價函數。

2代價函數替換.png-194.6kB

然後用替換之後的兩個代價函數cost1(z),cost2(z) 構建支持向量機。

3svm.png-216.2kB

4svmJ.png-35.4kB
這裏有需要注意的點:
1. 去除了1/m這一項,因爲這就是個常數項,在svm的通常習慣中不用這一項。
2. 在SVM中用C作爲常量,刪除了正則化項中的λ 。可以把C考慮成1λ 之類的東西。
3. 邏輯迴歸中假設函數h輸出的是可能概率。SVM則直接輸出1或0。

最大間距(margen)

SVM是爲了獲取最大的間距分類器。將二分類樣本分開。
C如果設置太大,會因爲一個異常值的影響,導致整體性能的改變。也就是類似λ 設置的太小,導致過擬合。

範數??

核函數

對於無法用直線進行分類的問題。使用核函數計算與地表landmark的結果。
利用一系列新的特徵替換模型中的原特徵。例如f1=x1,f2=x2,f3=x1x2...... 這樣使用原始特徵作爲新特徵。
那麼現在需要一個新的方法,來尋找新特徵,而不是用原始特徵的組合。也就是利用核函數計算得到新特徵。
首先利用x的各個特徵與我們預先設定的地標(landmark)l1l2l3,的近似程度來選取新的特徵f1f2f3。
例如高斯核函數:
5gaussiankernel.png-58.6kB

也就是可以說使用核函數,計算與地標的近似程度,將landmark設置爲某一類的幾個中心,然後計算與I個核函數的值,用這I個值作爲新的特徵值,因此hθ(x)=θ0+θ1f1+θ2f2+θ3f3
6svmprodiction1.png-74.2kB

這樣的話可以得到分類爲1的範圍,和拒絕1的範圍。得到分類的線。

接下來就是如何選擇landmark。
通常是根據訓練集的數量選擇地標的數量,即如果訓練集中有m個實例,則我們選取m個地標,並且令l(1)=x(1),l(2)=x(2)l(3)=x(3),...,l(m)=x(m) 。這樣的好處在於:現在我們得到的新特徵是建立在原有特徵與訓練集中所有其他特徵之間距離的基礎之上。

7landmark.png-239.4kB

下面我們將核函數運用到SVM中:
* 修改假設:
給定x,計算新特徵f,當\thetaf>=0 時,預測y=1 ,否則反之。
相應的修改代價函數爲:j=1n=mθj2=θTθ ,minCi=1m[y(i)cost1(θTf(i))+(1y(i))cost0(θTf(i))]+12j=1n=mθj2
我們還需要對最後的正則化項進行未調整,在計算j=1n=mθj2=θTθ 時,我們用θTMθ 進行代替,其中M 是根據選擇的核函數而不同的一個矩陣。

C和δ 的影響:
C=1/λ
C較大時,相當於λ 較小,可能會導致過擬合,高方差;
C較小時,。。。。。。。。。。,。。。。。欠擬合,高偏差。
δ 較大:可能導致低方差,高偏差。
δ 較小:可能導致低偏差,高方差。

聚類

聚類是無監督學習的一種。

K-means

是最普及的聚類算法,是一個迭代算法,假設我們想要將數據分爲n個組:
1. 首先選擇K個隨機的點,成爲聚類中心
2. 對於數據集中的每一個數據,按照距離K箇中心點的距離,將其與距離最近的中心點關聯起來,與同一個中心點關聯的所有點聚成一類。。
3. 計算每一個組的平均值,將該組所關聯的中心點一道平均值的位置。
4. 重複以上幾步至中心點不再變化。
1聚類.png-114.6kB

僞代碼
3僞代碼.png-22.5kB

優化目標

k-means的代價函數(又稱畸變函數distortion function):
2代價函數.png-88.3kB

選擇聚類數

“肘部法則”, 我們需要做的是改變K值,也就是聚類的類別數。
4elbow.png-68.6kB

向上面這個圖就應該選K=3。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章