機器學習五 -- 機器學習的「Hello World」,感知機算法
感知機是二類分類的線性分類模型,是神經網絡和支持向量機的基礎。其輸入爲實例的特徵向量,輸出爲實例的類別,取+1和-1二值之一,即二類分類。感知機對應於輸入空間(特徵空間)將實例劃分爲正負兩類的分離超平面,屬於判別模型。咱們對於感知機的學習旨在求出將訓練數據進行線性劃分的分離超平面,爲此目標,咱們須要導入基於誤分類的損失函數,利用後文所提到的梯度降低法對損失函數進行極小化,求得感知機模型。網絡
感知機模型機器學習
對此咱們都知道了什麼叫感知機了。這裏給出一個比較數理化的定義:假設輸入空間(特徵空間)是XєRn,輸出空間是Y={+1,-1}。輸入xєX表示實例的特徵向量,對應於輸入空間的點,輸出yєY表示實例的類別。由輸入空間到輸出空間的以下函數函數
f(x)=sign(w*x+b) 學習
稱爲感知機。其中,w和b爲感知機模型參數,wєRn叫作權值或權值向量,bєR叫作偏置,w·x表示w和x的內積,sign是符號函數,即爲優化
感知機有如下幾何解釋:線性方程w·x+b=0對應於特徵空間Rn的一個超平面S,其中w是超平面的法向量,b是超平面的截距。這個超平面將特徵空間劃分爲兩個部分,位於兩部分的點分別被稱爲正、負兩類。所以,超平面S即被稱爲分離超平面。spa
感知機學習策略blog
給定一個數據集合T={(x1,y1),(x2,y2),……,(xn,yn)},其中xiєX=Rn,yiєY={+1,-1},i=1,2,3,,,,n,若是存在某個超平面S:w·x+b=0可以將數據集的正實例點和負實例點徹底正確的劃分到超平面的兩側,即對全部yi=+1的實例點,有w·xi+b>0,對全部yi=-1的實例點,有w·xi+b<0,則稱數據集T爲線性可分數據集;不然,稱數據集T爲線性不可分。基礎
剛纔咱們有提到,咱們感知機學習的目標就是求得一個可以將訓練集正實例和負實例點徹底正確分開,爲了找到這樣一個分離超平面,咱們須要定義損失函數並將損失函數極小化。神經網絡
給定一個數據集合T={(x1,y1),(x2,y2),……,(xn,yn)},其中xiєX=Rn,yiєY={+1,-1},i=1,2,3,,,,n,感知機sign(w·x+b)學習的損失函數定義爲
L(w,b) = -∑yi(w·xi+b)(xiєM)
其中M爲誤分類點的集合。這個損失函數就是感知機學習的經驗風險函數。
想想:是否是能夠確定損失函數L(w,b)是非負的,爲何?
感知機學習算法
感知機學習算法轉化爲求解損失函數式子的最優化問題,下面簡單介紹一下兩個具體的算法:原始形式和對偶形式。
感知機學習的原始形式
感知機學習算法是誤分類驅動的,若是咱們人類逼格夠高,給出任意一個線性可分數據集,能夠立刻腦補出一個將其數據集徹底正確分類的模型,那麼就用不着感知機學習算法了。因此,咱們須要用算法來儘量的優化函數來達到指望目標。其方法具體採用了隨機梯度降低法。首先,任意選取一個超平面w0,b0,而後用梯度降低法不斷的極小化目標函數,極小化過程當中不是一次使M中全部誤分類點的梯度降低,而是一次隨機選取一個誤分類點使其降低。
輸入:訓練數據集T={(x1,y1),(x2,y2),……,(xn,yn)},其中xiєX=Rn,yiєY={+1,-1},i=1,2,3,,,,n;學習率η(0<η<=1);
輸出:w,b;感知機模型f(x)=sign(w·x+b)。
(1)選取初值w0,b0;
(2)在訓練集中選取數據(xi,yi)
(3)若是yi(w·xi+b)<=0
w ← w+ηyixi b ← b+ηyi
(4)轉至(2),直至訓練集中沒有誤分類點
感知機學習的對偶形式
對偶形式的基本想法是:將w和b表示爲實例xi和標記yi的線性組合的形式,經過求解其係數而求得w和b。
剛纔說到若是yi(w·xi+b)<=0,那麼w ← w+ηyixi b ← b+ηyi
假設修改了n次,則w,b關於(xi,yi)的增量分別是αiyixi和αiyi,這裏αi=niη。
輸入:訓練數據集T={(x1,y1),(x2,y2),……,(xn,yn)},其中xiєX=Rn,yiєY={+1,-1},i=1,2,3,,,,n;學習率η(0<η<=1);
輸出:α,b:感知機模型f(x)=sign{∑αjyjxj·x+b}(1<=j<=N)
其中α=(α1,α2,,,αn)T
(1)α ← 0 , b←0
(2)在訓練集中選取數據(xi,yi)
(3)若是yi(∑αjyjxj·x+b(1<=j<=N))<=0
ai ← ai+η b ← b+ηyi
(4)轉至(2)直到沒有誤分類數據。