总述
感知机是一种线性二分类模型,它属于判别模型。感知机学习旨在求出将训练集进行线性划分的超平面。损失函数采用误分类的损失函数,使用梯度下降算法进行对损失函数最小化。感知机是神经网络与SVM的基础。
刚刚提到判别模型,什么是判别模型?
判别模型&生成模型
判别模型:由数据直接学习决策函数 f(X) 或者条件概率分布 P(Y|X) 作为预测的模型。判别模型关系的是对于给定的输入X,应当预测什么样的Y。判别模型包括:k近邻、感知机、决策树,逻辑回归、最大熵模型、SVM、提升方法、条件随机场
生成模型:由数据学习联合概率分布 P(X,Y) ,然后求出条件概率分布 P(Y|X) 作为预测的模型。生成模型有:朴素贝叶斯、隐马尔科夫模型。
例题实现
正例:(3,3),(4,3)
负例:(1,1)
#coding:utf-8
import numpy as np
#输入数据
X = np.array([[3,3],[4,3],[1,1]])
Y = np.array([1,1,-1])
alpha = 1 #学习率
W = np.array([0,0]) #初始化权重
b = np.array([0]) #初始化偏置
length = len(X)
flag = 0
while True:
for i in range(length):
flag = 1
if ((np.dot(W,X[i].T)+b)*Y[i])<=0:
W = W+alpha*Y[i]*X[i] #梯度下降进行更新权重
b = b+alpha*Y[i]
# print "W",W
# print "b",b
flag = 0
if flag==1:
break #直到所有的样本点均满足条件
print "W",W
print "b",b
>>>
W [1 1]
b [-3]
得到分离超平面:
x(1)+x(2)−3=0
得到的感知机模型为:
f(x)=sign(x(1)+x(2)−3)
其中,
x(1)
表示特征的第一个值,
x(2)
表示特征的第二个值
注意
1、感知机学习有两种形式,一个是原始形式,如上例题,还有一种是对偶形式。
2、当训练集是线性可分的,感知机学习算法的迭代是收敛的,经过有限次搜索就可以找到分离超平面。
3、当训练集线性不可分时,感知机学习算法不收敛。
4、当训练集线性可分时,感知机学习算法存在无穷多个解。解由于初值不同或者迭代顺序不同而有所不同。
参考:统计学习方法–李航