概念
定义
假设输入空间是,输出空间是
,x和y分属这两个空间,由输入空间到输出空间的如下函数:
称为感知机。其中,w和b称为感知机模型参数,叫做权值或权值向量,
叫做偏置,w·x表示向量w和x的内积。Sign是符号函数,即
感知机的几何解释:线性方程
对应特征空间中的一个人超平面S,其中,w法向量,b是截距。超平面将特征空间划分为正、负两个部分。因此,超平面S称为分离超平面。
感知机学习策略
数据集的线性可分性
感知机学习策略
为找出这样的超平面,即确定感知机模型参数w,b,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。
感知机sign(w•x+b)学习的损失函数定义为:
其中,M为误分类点的集合。
感知机学习算法
感知机学习问题转化为求解损失函数式的最优化问题最优化的方法是随机梯度下降法。
原始形式
感知机学习算法是对以下最优化问题的算法。求参数w,b,使其极小化的解
算法例子:
Python实现感知机算法代码
import copy # 浅拷贝
training_set = [[(3, 3), 1], [(4, 3), 1], [(1, 1), -1]]
w = [0, 0]
b = 0
history = []
def update(item):
global w, b, history
w[0] += 1 * item[1] * item[0][0]
w[1] += 1 * item[1] * item[0][1]
b += 1 * item[1]
print(w, b)
history.append([copy.copy(w), b])
def cal(item):
res = 0
for i in range(len(item[0])):
res += item[0][i] * w[i]
res += b
res *= item[1]
return res
def check():
flag = False
for item in training_set:
if cal(item) <= 0:
flag = True
update(item)
if not flag:
print("RESULT: w:" + str(w) + "b:"+str(b))
return flag
if __name__ == "__main__":
for i in range(1000):
if not check():
break