第七週呢主要是對SVM的介紹ide
ng首先從之前講過的logistic regression入手函數
將logistic regression的兩個log(h(x))和log(1-h(x))改變成以下圖的兩個cost函數spa
最後整理獲得的SVM的假設是:教程
除了cost處和logistic regression有一點差距以外,還有一個參數C,至關於logistic regression裏面的1/λ,做用相差不大get
接下來說了margin的概念和爲何有人稱SVM稱爲large margin algorithm it
其實一句話來講就是分類後全部點到分類的超平面的距離之和最短io
放在二維座標裏來講就是用一條直線分類後,兩部分重最靠近該boundary的點之間的距離最長class
接下來是核函數的說明
andrew ng講得十分巧妙,至少比我在網上找的一個SVM教程講的清楚多了
仍是在平面來講,
要肯定這個boundary,可能須要一個很複雜的polynomial,通常是很難肯定到底須要多少次方的polynomial,而另外一個很好的技術就是肯定一些不共線的點(landmark),每一個點視爲一個參數,這樣也能夠表示平面上的全部點,並且假設中的多項式只有選取的點的個數那麼多。
爲了肯定其餘點到這個點的距離用來衡量參數好壞,須要有一個函數來給出一個點和另外一個點的距離,這就是核函數
視頻給了一個比較經常使用的核函數,高斯核函數:
這個核函數的圖像大概是以下(最高處是選擇的l點),函數值(0,1],並且較好地區分了點的距離,除此以外還有其餘許多核函數,應視具體狀況選擇使用
如何選取點呢,那就是選擇全部的example,簡單而粗暴
注意核函數中有一個參數 σ,隨着 σ的增大,函數圖像會愈來愈尖細
對於large σ:higher bias,lower variance
small σ:lower bias,larger variance
事實上這周的課程除了將了一下SVM的原理以外,並無要求實現一個SVM
而是告訴咱們去使用一些軟件包,比較好的有libliner和libsvm,練習中也是使用的libsvm,若是有時間能夠去看看libsvm的源代碼