PYTHON 機器學習基石 LS-PLA

Perceptron Learning Algorithm (PLA)

根據林軒田教授的機器學習基石課程,實作一下這個基礎的機器學習演算法

討論這個問題,用到的學習大架構(Supervised learning),它也是所謂的YES/NO問題。

Perceptron⇔ linear (Binary) Classifiers

EP_PLA1

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

EP_PLA2

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

這方法只適用於 linear separable PLA

EP_PLA3

除了上面這些以外,當資料中有雜訊也無法使用這個方式,目前在線性問題上較好的解是用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)的資料方式

EP_PLA4

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

EP_PLA5

最終結果

EP_PLA6

 

Pocket PLA

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

My GitHub

 



發表留言