[ML筆記] Coursera 機器學習基石(上) Week2

Coursera 機器學習基石(上) Week2 筆記


使用機器學習來做是非題的問題


延續上次提到的信用卡同意評估系統
這次我們要探討 H 定義的內容



Perceptron:感知器
定義很多評估條件,乘上 weight 加總
有的條件是正面影響,有的是負面影響,最後加權加總後,檢調門檻值,去看最後的總分是正的還是負的,正的就核卡,負的就不核卡


把剛剛的式子符號簡化為 wTx


h(x) 在幾何上是一條線,把空間分割成兩個區域


當我們知道 H 在幾何上是一條線之後,H 裡面有無限多條線的可能,下一個問題就是,我們如何得到一條好線,可以成功地把不同的資料點區分出來,這條線就是 g


想法:先從一條現有的線出發,不斷地修正學習,讓他越來越好
一開始的線我們叫它 w0
PLA 演算法:
從一開始的 w 出發,遇到正確的點,就把方向修正近一點
遇到犯錯的點,就把方向修正遠一點,以此方式計算修正的方向,不斷修正直到都沒有犯錯為止,最後得到的 w 稱為 wPLA
依序看所有的點,去計算更新方向

Perceptron Learning Algorithm (PLA)
一開始從原點 (中心點),隨機找一個點 x1 畫出一條線,我們找到的點剛好是對的,預設分類成對的(藍色區塊),下一回合畫出的線就以原點到 x1 當作法向量。
如圖,目前我們的線大致都對,但是 x9 是圈圈被誤判到了,所以我們把目前的法向量跟原點到 x9 向量相加,得到紫色線,當作下一回合新分割線的法向量
這次的分割線所分割的兩區域中,仍然有許多誤判,隨機挑一個誤判點,假設我們挑到 x14 這個點,因為他是叉叉被誤判到藍色區了,所以這次我們法向量的更新策略,要與原點到x14 向量的反方向做相加
以 PLA algorithm 持續更新我們的分割線,直到沒有錯誤為止

經過了若干回合的修正後,當我們的分割線不再有任何誤判情形時,演算法就可以停下來,得到我們在目前的資料集當中,最好的一條分割線




PLA 演算法能確保一定會停下來嗎? No!!







Linear Sperable
因為 PLA 的終止條件為,找一條線,分割的兩區域內,完全沒有誤判的狀況!
也就是我們的資料集要確保線性可分,PLA 才保證可停下來


證明:如果我們資料集存在有一條線 wf 可分割,則 PLA 可以停下來
我們定義 wf 當作 perfect 的那條向量
wt 代表我們在 PLA 演算法過程中第 t 次時候的向量
由上式得知 wf 與 wt 的內積結果,會越來越大,兩向量內積越來越大,代表他們越來越靠近
但是造成內積越來越大也有可能是向量長度所影響
關於向量長度的議題,見以下的分析
由於 wt 向量長度的增加,影響的因素關鍵在於誤判點,由上式的推導,可知 wt 向量長度方面的成長空間是有上限的,故綜合以上兩個結論,我們證明 PLA 演算法在線性可分割資料集,是可以停下來的 (也就是更新次數有上限) !


但實務上,我們並不知道資料是否為線性可分
也就是不知道 wf 就算證明 PLA 在有限的回合可以停下來,缺少 wf 已知,也無法計算出到底需要幾回合才停得下來




所以實務上,我們沒有辦法找到一條完美的線,那我們至少要找一條 “最好的線”,犯的錯誤最小的線 g


在 “如何找到一條最佳的 wg” 這個問題的解法上,已經被證明是 NP-hard
因此目前並不存在最佳解
但是電腦科學家還是有提出許多還不錯的解法
以下介紹其中一種方法 Pocket Algorithm
Pocket PLA 由於要檢查目前手中的線跟其他的比較起來是否較優,所以會花費額外的時間以及空間,跑起來比普通的 PLA 慢



留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking