感知机(perceptron)由Rosenblatt于1957年提出,是之后提出的神经网络和支持向量机的基础。感知机是二分类的线性分类模型,属于监督学习算法。
优点:简单、易于实现。
缺点:不能解决xor等线性无关问题。
感知机分为原始形式和对偶形式。
感知机就是寻找数集的线性划分,,其中sign是符号函数。
具体步骤:
1、采用所有误分类的点到超平面的距离来衡量分类误差的大小。
注:点到平面的公式为:
M为所有分类错误的样本点。误差函数为:
2、用梯度下降法寻找最优的(w,b),来使得损失最小。采用随机梯度下降法:
梯度函数:
更新w,b:
b:=b+ηyi
原代码:
def perceptron(X,Y):
w = np.mat([0.5,0.5])
b = 0.5
m = np.shape(X)
isfind = False
while not isfind:
for i in range(m):
wx = np.dot(w,X[i].T)
if Y[i]*(wx+b) <=0:
w = w + 0.5*Y[i]*X[i]
b = b + 0.5*Y[i]
break
elif i == m-1:
print(w,b)
isfind=True
对偶形式
参考文献:李航《统计学习方法》、Tom Mitchell《机器学习》
本人邮箱 554756767@qq.com 欢迎交流。