1. 程式人生 > >臺大林軒田機器學習課程筆記----機器學習初探及PLA演算法

臺大林軒田機器學習課程筆記----機器學習初探及PLA演算法

機器學習初探

1、什麼是機器學習
學習指的是一個人在觀察事物的過程中所提煉出的技能,相比於學習,機器學習指的就是讓計算機在一堆資料中通過觀察獲得某些經驗(即數學模型),從而提升某些方面(例如推薦系統的精度)的效能(可測量的)。
2、機器學習使用的條件
需要有規則可以學習
有事先準備好的資料
程式設計很難做到
3、機器學習所組成的元素
輸入X 輸出 Y 目標函式f:X->Y 資料(訓練集):D={(x1,y1),(x2,y2),….(xn,yn)}假設(skill):g:X->Y
4、如何使用機器學習
機器學習流程
通過兩個輸入:訓練資料集和假設集合(),運用恰當的學習演算法,最後得到最終的假設模型g儘量與目標函式f相一致。

PLA演算法

課程講授思路:

  • 先舉一個案例,是否對客戶發放信用卡,引入PLA演算法
  • 對問題進行數學抽象,得到目標函式
  • 詳細解釋PLA的學習過程
  • 證明PLA是否收斂
  • 指出PLA的優勢和缺陷並引入PA演算法

PLA就是一個線性分類器,對所給的結果集進行接受or拒絕劃分
對於信用卡申請問題,數學抽象及模型如下:
信用卡問題數學抽象及模型
第一個表示式是信用卡申請問題的數學抽象,即給定客戶的特徵向量,計算出權重得分,設定一個threshold(即閾值),若特徵向量的加權求和得分結果超過閾值,則接受信用卡申請,反之,則拒絕。
第二個表示式則是由此抽象出的數學模型,設定數學符號函式h(x),對特徵向量加權求和得分與閾值做差,若大於0,則接受,小於0,則拒絕,最後忽略0
將模型寫成點積的形式得:
PLA模型點積形式


接下來就是PLA的學習過程:
PLA學習原理及過程
該演算法簡單可以概括為,通過不斷地修正權重向量W最終找到一條可以將兩類結果完全分開的直線,即假設模型g,模型修正方法為:
利用向量相乘的規則,若我們想要的結果為正,而W與X恰巧相反,則我們需要使W接近X,於是使得Wt加上一個正數;若我們想要的結果為負,而Wt與X恰巧接近,則我們需要調整W使得W遠離X。
這裡有個問題,通過不斷地調整W是否會最終找到一個Wt可以將兩類結果完全分開,即PLA演算法是否會終止,是否是收斂的。
PLA終止的條件為:
PLA終止條件

滿足這個問題的條件是現有的資料是否線性可分,該課程並未證明這個條件,而是直接證明:linear separable D<=>exists perfect Wf

證明假設模型與目標模型是否接近

上圖證明Wf與Wt之間是否接近,即將兩個向量做了內積,則內積的值越大,表明兩個向量越接近或者向量的長度越長,下面要處理向量的長度問題。
證明PLA演算法收斂

利用PLA的“有錯才更新”的性質,在犯錯誤的情況下,通過以上推導,最終得到的結論是,Wt長度的平方在每次更新以後最多增長Xn最長長度的平方。
再利用第一個證明的結論推導得出,推導過程如下:
證明的三個條件
上述為已知的三個條件,有兩點需要說明:
1)由於向量夾角的值小於1,所要證明的式子小於1,因此我們只需要證明T也是有邊界的,就可以說明該演算法是收斂的
2)上式左側的夾角變得越來越小,即越來越接近,因此我們在使用解決問題的正確方法

PLA收斂證明過程1
PLA收斂證明過程2
PLA的優缺點:
優點:實現簡單,快速,可以在任何維度中實現
缺點:1)需要假設資料是線性可分的
2)不能確定演算法會迭代多少次
我們利用貪心演算法來解決這個問題,它的本質是逐個對比,取較好的那個結果,實現如下:
PA演算法
臺大林軒田老師的講授技巧很棒,但是這些演算法還是要自己去推導才能真正理解。第一次寫這類技術部落格,很多內容參考的HappyAngel的部落格,在此感謝。

*參考資料:
1 Coursera臺大機器學習基石
2 HappyAngel部落格—-《機器學習定義及PLA演算法》*