標籤:

機器學習--感知機科普入門

在正式介紹感知機之前,我們先來舉一個小栗子~

假設,在一個平面直角坐標系中,有若干點,和一條直線,如下圖:

圖 1—直線與點的關係

由高中關於直線部分所學,易知,圖1中,處於紅色直線S: ax+by+c=0 將整個平面劃分為三個區域,表現為,直線以上部分直線上直線以下部分(直觀而言,豎直直線,另外討論);怎麼理解呢?

過圖1中的一點T1,垂直於x軸作虛線,可知,T1位於虛線與紅色直線S交點的上方(比較坐標點的y值)。T2恰好也在所作的虛線上,T2就在紅色直線S交點的下方。

除了作垂直於x軸的虛線的圖形方法外,關於直線還有一個代數性質,就是將坐標點T1 T1(x_1, y_1) 代入紅色直線S表達式(直線的一般式)的左式 ax+by+c 中,通過判斷 ax+by+c 的正負性,就能判斷直線的上下方;

先令 f(x,y)=ax+by+c ; 使得 f(x,y)>0 的點就在紅色直線S: ax+by+c=0 的上方;使得 f(x,y)=0 的點就在紅色直線S: ax+by+c=0 上;使得 f(x,y)<0 的點就在紅色直線S: ax+by+c=0 的下方。

有了這個基礎,就引出了二維數據中的感知機的模型: f(x,y)=sign(ax+by+c)

其中, sign(r) 是一個取符號函數r>0 時, sign(r)=+1 ; r<0 時, sign(r)=-1 ; r=0 時, sign(r) = +1 or -1 (按實際情況)。

所以,在二維數據中,感知機模型就是通過確定一條合適的直線將兩種特定的類別確定分離出來。所以,感知機是一種二分類模型。

那麼怎麼去確定出這條直線,進而確定一個實用的感知機模型呢?

接著看下面這個栗子~


感知機的學習策略

現在,我們在二維數據的情況下,一步步模擬感知機的大致的學習策略。

假設有若干點,分為兩種類別,如圖2所示,圈點和叉點分別表示兩種不同的類別。為了確定一個合適的直線s使之能夠將這兩類點正確的區分出來,先初始化直線 如下圖2的形式:

圖2--初始直線與兩類點

我們看到,隨機初始化的直線 並不能把所有的點都正確區分開來。由於在初始直線以上部分,叉點多於圈點,故令叉點為正類,圈點為負類。那麼,圖中標紅的圈點和叉點就稱為誤分類點。那麼將這些誤分類點正確分類後,就能得到一條直線S能將所有的點正確分類。

接下來,開始模擬,直線 S_0: ax+by+c=0 的變化過程。

先根據T1點,去調整參數 a,b,c ,更新直線S,如下圖,得到更新後的直線 S_1

圖3--直線第1次更新

然後根據T2點,調整參數 a,b,c ,更新直線S,如下圖,得到更新後的直線 S_2

圖4--直線第2次更新

同理,繼續根據圖中的誤分類點,依次調整參數 a,b,c ,得到最終更新的直線S .

圖5--直線第3次更新

圖6--直線的最終更新形式

如圖6所示,根據圖中所有的誤分類點,通過不斷調整參數更新直線S,使得S能逐步將越來越多的點正確分類直至將所有的點都正確區分。最終得到的直線S就是感知機模型中所用到的形式。

於是最終的感知機模型: f(x,y)=sign(a_4 x+b_4 y+c_4)

小拓展

上述是在二維空間里的感知機模型,推廣到n維空間中: f(X) = sign(W cdot X +b )

W=(w_1, w_2,...,w_n), X=(x_1, x_2,..., x_n) 其中, W 稱為係數向量,類比二維空間中的x,y的係數 (a,b)

參考: 李航《統計學習方法》


推薦閱讀:

Python · 神經網路(六)· 拓展
One-Page AlphaGo -- 10分鐘看懂AlphaGo的核心演算法
跟我學做菜吧!sklearn快速上手!用樸素貝葉斯/SVM分析新聞主題

TAG:机器学习 |