Perceptron Learning Algorithm (PLA)
根據林軒田教授的機器學習基石課程,實作一下這個基礎的機器學習演算法
討論這個問題,用到的學習大架構(Supervised learning),它也是所謂的YES/NO問題。
Perceptron⇔ linear (Binary) Classifiers

我們有一組訓練資料D,裡面包含著數據Xn和對應的Yn(在這裡就是1,-1);Hypothesis set H代表這全部的解(無限多條線),經過演算法A,從H找到一個可能的g和我們的目標函數f相近。

這個演算法的主要兩大步驟;找到錯誤的點,向量修正它,詳細課程可以看教授的仔細講解!!naive cycle是常用的作法
這方法只適用於 linear separable PLA

除了上面這些以外,當資料中有雜訊也無法使用這個方式,目前在線性問題上較好的解是用Pocket PLA
Linear separable PLA
首先整理一下資料
把[‘x0\ty0\tz0\nx1\ty1\tz1\nx2\ty2\tz2\n….’]
變成arrar([[(x0, y0), z0],[(x1, y1), z1],[(x2, y2), z2]…..])的格式
如同前幾張圖片(x1,y1),(x2,y2)的資料方式

NAIVE PLA ,畫線則是用 ax + by = 0

最終結果

Pocket PLA
Pocket PLA 是一個貪婪演算法,把好的握在手上繼續往下算,每次都會比較看有沒有比手上的好,停止方式則是讓它跑到一定數量,或是多久沒有變更好等等的;這裡就不寫了。
發表留言