機器學習基石第二講:learn to answer yes/no
剛剛完成了機器學習基石的第二講,主要介紹了機器學習的定義,PLA演算法和pocket PLA演算法。下面將筆記整理在下面。
Perceptron Hypothesis Set
延續前面的信用卡發放問題。銀行已有的使用者資料可能包括使用者的年齡、年薪、工作時長、債務情況等特徵資訊,我們分別用
對於這樣的hypothesis,我們稱之為感知機(perceptron)。
我們將上式向量化,並將閾值加到前面的求和中,就變成了下面這樣:
此時,x和權值向量w均為d+1維。下面給出一個二維平面上的perceptron hypothesis的例子,我們的perceptron要做的就是將圖中的圈圈和叉叉給分開。
我們看到perceptron在二維平面上就是一條直線,其在更高維的空間呢應該以個超平面,所以我們說感知機是一個線性分類器。
下面是關於垃圾郵件分類的一個小測試:
perceptron Learning Algorithm(PLA)
現在我們知道了hypothesis是什麼樣的,那麼我們怎樣從H = all possible perceptrons中選擇一條最好的呢?怎麼去判斷hypothesis的好壞呢,我們的思路是用這個hypothesis去處理已有的資料集,該hypothesis對已有資料的處理結果越正確則越好。就是說,如果又一個hypothesis對銀行使用者資訊的處理結果與銀行之前作出的信用卡發放決定都一致的話,那這個hypothesis就是好的。
hypothesis有無窮多個,那我們怎麼去遍歷呢?我們的思路是從某一條hypothesis出發,不斷的去修正它,使其一次比一次變得好。修正的方法是這樣的:對於一個hypothesis,對應其由一個
也就是說該hypothesis在資料點
持續進行這樣的修正,直至hypothesis在所有的資料點上均不出現錯誤(或者在儘可能少的點上有錯誤),知識我們就得到了一個比較好的hypotesis。
我們將這個演算法稱為PLA。下圖是PLA演算法的一個偽演算法(當然還有對資料點的其他遍歷方法):
然後視訊中作了一個修正hypothesis的演示,這裡省略。
前面我們說當hypothesis在任何資料點上都不犯錯誤的時候,演算法就會停下來,那演算法一定會停下來嗎?就算演算法會停下來,那我們最終得到的g肯定會很接近目標函式f嗎?這是本小節遺留的兩個問題,以後會介紹。
最後是小測試(對修正公式等號兩邊均左乘
Guarantee of PLA
對於一個數據集中的兩類資料點(一組是圈圈,一組是叉叉),當存在一條直線(或超平面)能夠將圈圈和叉叉完全分開時,我們稱這樣的資料集時線性可分的(linear separable)。下圖中給出了線性可分資料集和非線性可分的資料集。
對於線性可分的資料集D,存在一個完美的
通過上圖中的推導,我們得到了
我們說hypothesis只有在犯錯的時候才更新,才有