什麽樣的機器學習演算法可以做是非題?
流程回顧:
模型:
上圖公式中 w 是這個維度的重要性。h 表示的是所有可能的公式。sign 指的是取正負號 。
把要思考的資料 x 想成一個多維度的向量,每一個維度都有一個評分,這個評分影響著我們最終輸出結果 y 。給所有的維度值一個綜合的分數,這個分數如果超過某一個標準,y 為正向,如果沒有超過標準,y 為負 。
進一步簡化:
圖形化表示 h (綫性分類器) :
- 圖片中所有點的位置表示 input 資料 x 。
- 在位置資料上標記 X 和 O,表示得到的 output y。
- 圖中的分割綫就是今天我們找到的 h 。不同的 h 會在這個範例中畫出不同的區塊。
問題1:
2 的單詞中會被當成是垃圾郵件的 weight 比較高。
如何得到最好的 g 。
我們希望得到最好的結果就是 g 無限接近 f 。
那麽,我們通過 g 找到的 y 就應該盡可能的與已知資料的結果是接近,最好是相同的。
遇到的困難是 H 是無限大的。
思路:我們可以先得到一條綫,不斷的修復它。
PLA演算法:
PLA 演算法的觀念是找到一個結果,讓這個結果跟已知的結果進行比較,之後不斷的修正,直到所有已知的結果都沒有錯誤爲止。
如圖片中所描述的,我們先得到 h 算出的結果,可能為 + 可能為 - 。
如果今天我的結果是 + ,然後已知的結果是 - ,那麽説明我得到的結果跟已知結果的角度過大了,就需要把已知的結果加上現有的 h。
如果今天我的結果是 +,然後已知的結果是 - ,那麽説明我得到的結果跟已知結果的角度過小了,就需要把已知的結果減去現有的 h。
A fault confessed is half redressed.(知錯就改)
如何來判斷是否還存在有錯誤:
Cyclic PLA : 從第一個點到最后一個點進行循環糾錯,如果全部都沒有問題,那就表示修正成功。
但是如果一直存在錯誤,這個演算法可能不會停下來。
儅我們需要知道PLA演算法會不會正常停下來的時候,其中必要條件就是有一個可以分割的資料,我們稱這些可以通過一條綫分割的資料爲綫性可分(linear separable)。
假設今天我們的資料是 linear separable,那麽我們使用 PLA 能不能找到這一條綫呢?
假定我們處理的資料是 linear separable ,分割綫為 Wt,我們定義一個 Wf ,認爲 Wf 就是我們找到的目標。
Wf 的特性一定是滿足我們的需求。它完美的分開了 data 。
既然有了 Wf ,那麽接下來需要考慮的就是我們定義的這個 Wf 跟真實的 Wt 會不會是接近的關係。
判斷兩個向量是否接近的方法,這裏使用的是看向量内積。
有上圖可知,兩個向量的内積會越來越大,但是并不能完全證明 Wf 跟 Wt 越來越接近(因爲兩個向量的内積的決定因素是角度以及兩個向量的長度)。
如果能確定 Wf 跟 Wt 内積增大的原因是因爲角度的話,就可以表明他們之間越來越接近。因此我們需要討論 Wf 每次修正后跟 Wt 長度之間的變化情況。
論證 2 中的 T ,表示的是 PAL 執行的次數的上限。
練習:
由之前的推論可以得到一個結果就是,Wf 跟 Wt 完全一致的時候,我們可以得到最大的 cosθ 的值為 1 。
所以也就有了上面那個答案的結論。
總結PLA:
Pocket Algorithm:
儅今天我們沒辦法預測說能不能準確的通過 PLA 演算法找到我們要的 Wt,因而我們可以選用一些改變的演算法,例如說 Pocket Algorithm 。它跟 PLA 類似,但是多一條規則,就是先存下來第一次找到的綫,之後的綫都跟存下來的綫進行比較,比較說哪一個更好,最終留下更好的。
學習視頻:機器學習基石(6~9)