機器學習基石 Lecture2: Learning to Answer Yes/No
機器學習基石 Lecture2: Learning to Answer Yes/No
Perceptron Hypothesis Set
還是關注是否給客戶發信用卡的問題。回顧上節中機器學習的流程,假設已知如下圖中的一些客戶資訊,做出怎樣的假設來得到假設集合
呢?
可以把客戶資訊寫為一個向量
,每個維度都代表客戶的一個特徵。可以假設把這些特徵維度進行加權求和來得到一個分數,如果這個分數超過某個閾值就下發信用卡,否則不下發。即假設h為:
這個假設就叫做感知機(perceptron)模型。
Perceptron Learning Algorithm
可以將上圖等式中的閾值(threshold)也當做一個係數
,對應第0個特徵
。則上述感知機模型可以寫為向量內積的sign函式形式:
於是在二維平面上這個假設函式體現為一條線,一邊被判斷為+1(藍色),另一邊的點被判斷為-1(紅色)。而樣本實際的y為+1時畫為圈,-1時畫為叉。
因此可以看出,感知機實際上是一個線性的二分類器。
有了假設空間 ,如何從中選出一個最接近實際函式 的 呢?可以根據在已有的資料集合上來判斷。因為 需要接近 ,因此在已有資料記錄 上, 的結果需要等於 (必要不充分條件?)。
但是有個問題是假設空間
是無窮大的,所以直接搜尋比較困難。有一個想法是,從一個任意的函式
開始,根據它在資料集
的錯誤來不斷改進自身。於是我們就有了感知機學習演算法(Perceptron Learning Algorithm,PLA):
- 從任意一個引數為 表示的函式 開始,找到一個預測的結果和實際對應的 值不同的樣本。
- 然後根據公式
來對係數進行更新。
直到找不到錯誤的樣本為止,此時的引數 對應的函式就是 。
實際中演算法第一步通常採用遍歷資料集 的方式,因此也叫作Cyclic PLA。
演算法看起來很簡單,但是還有一些遺留問題。比如:演算法如何進行遍歷樣本? 可以是普通遍歷,隨機遍歷等。最後得到的演算法 是否真的約等於 ? 如果在 上沒有錯誤演算法停止了,那麼在 上的效果肯定是近似相等的。但是在資料集 之外的資料上表現如何呢?而且如果演算法不停止更加無法知道 是否與 近似了。所以演算法是否真的能夠保證最終停止而不是無限迴圈呢? 下面會給出演算法確定會停止的證明。
Garrantee of PLA
如果存在一個對應的係數 能夠在資料集 上不犯錯誤,也就是說 中的樣本能夠被一條線性平面正確分隔開。我們說這樣的 具有線性可分性。
假設我們的資料集
是線性可分的,那麼是否PLA演算法一定會停止呢?
線性可分的
一定有一條不會犯錯的分隔面對應的引數
。
- 對於任意的樣本都有 .(因為每個樣本都正確分類)
- 與 的乘積為
- 兩者乘積在變大,但是需要證明並非是因為其長度增加而是夾角變小,這樣才能說明我們的