感知機(perceptron)是一種二類分類的線性分類模型,也就是說,使用於將資料分成兩類的,並且資料要線性可分的情況。線性可分是指存在乙個超平面能夠將空間分成兩部分,每一部分為一類,感知機的目的就在於找這樣的乙個超平面。
假設輸入資料形式為x = (x1,x2....xn),即所謂的特徵向量。y代表輸入資料的類別,為,感知機的形式為f(x) = sign(w*x+b),當w*x+b>=0時,f(x)=+1,當w*x+b<0時,f(x)=-1.
f(x)就是我們對輸入資料的分類,感知機的目的就在於找到合適的w和b,使得f(x)能正確分類。w是和x維數相同的向量(乙個是行向量,乙個是列向量),w是我們求的超平面的法向量,b是超平面的截距。
定義損失函式:誤分類點到超平面的總距離(不定成誤分類的點的個數是因為這樣損失函式對w,b不是連續可導,不易優化),假設誤分類點為0,那麼總距離為0.
空間中任意一點到超平面的距離為|w*x+b|/(||w||),我們只要使得分子部分變成0就行。
對於誤分類點(xi,yi)來說,如果w*xi+b>=0,本應該為+1,但是誤分類的話yi=-1,如果w*xi+b<0,本應該為-1,但是誤分類的話yi=+1,這樣我們就能得到-yi(w*xi+b)>0,即我們可以使對誤分類點的-yi(w*xi+b)求和,使之最小化,當然這裡是指變成0.
那麼具體是如何求w,b的呢?(下面是感知機演算法的原始形式)
(1)首先任意選乙個超平面w0,b0(w是向量,裡面元素都為0)
(2)然後採用梯度下降法不斷的極小化目標函式,在這裡具體來說就是每次取乙個誤分類的點(xi,yi),令w = w+nyixi,b = b+nyi, 可以這麼理解,每當有乙個誤分類點,我們就把平面往這個誤分類點的方向移動一些,使得它能夠被正確分類,0(3)重複步驟2,直至沒有誤分類點,即損失函式為0.
當資料是線性可分的時候,可以證明感知機學習演算法是收斂的,不過證明方面一直看不懂= =。。。
分類學習 支援向量機(Scikit learn)
手寫體數字識別 1 手寫體資料讀取 from sklearn.datasets import load digits digits load digits 獲得的手寫體資料儲存在digits變數中 print digits.data.shape 2 資料分割 from sklearn.cross v...
多分類學習
多分類學習的基本思路是拆解法,即將多個二分類任務拆為若干個二分類任務求解。具體地就是,先對問題進行拆分,然後為每個拆分的二分類任務訓練乙個分類器 在測試時,對這些分類器的 結果進行整合以獲得最終的多分類結果。關鍵 多分類任務如何拆分。經典的為 一對一 one vs one,ovo 一對多 one v...
IP分類學習
0.0.0.0 代表的是所有網段也是作為保留網段的。a類 10.0.0.0 to 10.255.255.255 b類 172.16.0.0 to 172.31.255.255 c類 192.168.0.0 to 192.168.255.255 總結如下 a類位址255.0.0.0 8 1 a類位址第...