感知機是乙個線性二分類模型,該模型是svm和神經網路的基礎。假設輸入空間為x特徵向量,輸出空間為y=,從輸入空間到輸出空間函式可以表示為:
f (x
)=si
gn(w
t+b)
f(x)=sign(w^t+b)
f(x)=s
ign(
wt+b
)對於分類錯誤的點(xe
,ye)
(x_e,y_e)
(xe,y
e)有:
− ye
(wtx
e+b)
>
0-y_e(w^tx_e+b)>0
−ye(w
txe
+b)>
0該點到分割平面的距離可以表示為:
1 ∣∣
∣w∣∣
ye(w
txe+
b)\fracy_e(w^tx_e+b)
∣∣∣w∣∣
1ye
(wt
xe+
b)將所有判斷錯誤的點到分割面距離和作為損失函式:
1 ∣∣
∣w∣∣
∑i=0
kyi(
wtxi
+b)\frac\sum_^ky_i(w^tx_i+b)
∣∣∣w∣∣
1i=
0∑k
yi(
wtxi
+b)
上述損失函式可以採用梯度下降法進行求解。
import numpy as np
import matplotlib.pyplot as plt
defgradientmethod
(errorlist,w_t,b_t,traing)
: b_t=b_t+traing*
(errorlist[1]
)for k in
range
(x_range)
: w_t[k]
=w_t[k]
+traing*
((errorlist[0]
[k]*errorlist[1]
))return w_t,b_t
defmain
(trainnum,test,x_range,w,b,trainingrat)
:for z in
range
(trainnum)
:for i in test:
y_test=
0 sum_test=
0for j in
range
(x_range)
: sum_test+=i[0]
[j]*w[j,0]
y_test=sum_test+b
if y_test*i[1]
<=0:
w,b=gradientmethod(i,w,b,trainingrat)
return w,b
if __name__==
"__main__"
:#測試資料
test=[[
(3,3
),1]
,[(4
,3,)
,1],
[(1,
1,),
-1]]
x_range=
len(test[0]
[0])
# 初始化
w=np.zeros(
(x_range,1)
) b=
0 trainingrat=
1 trainnum=
int(
input
("輸入迭代次數"))
w,b=main(trainnum,test,x_range,w,b,trainingrat)
#結果視覺化
內容參考了《統計學習方法》
感知機 模型與策略
看到模型和策略,應該很快聯想到了李航的 統計學習方法 統計學習方法的三要素定義為 模型 策略 演算法。感知機是二分類的線性分類模型,輸入為例項的特徵向量,輸出為例項的類別 取 1和 1 感知機對應於輸入空間中將例項劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面匯入了基於誤分類的損失函式...
感知機模型
這裡介紹機器學習中最簡單的一種分類方法 感知機模型。感知機模型 其中sign是符號函式,w和b是引數,x是輸入特徵向量,f x 返回決策結果。分離超平面s 對於二類線性可分問題,分離超平面將兩類樣本分在s兩側。空間中一點x0到s的距離 損失函式 定義損失函式的意義是所有誤分類的點到分離超平面的距離之...
感知機模型
參考 感知機模型是理解svm和神經網路的基礎。在這裡我們可以從感知機模型上看到神經網路的影子,通過簡單的堆疊就可以成為mlp 神經網路的一種 在損失函式上看到svm的影子。那到底什麼是感知機呢?定義 在機器學習中,感知機 perceptron 是二分類的線性分類模型,屬於監督學習演算法。輸入為例項的...