很多人可能听过大名鼎鼎的SVM,这里介绍的正是SVM算法的基础——感知机,感知机是一种适用于二类线性分类问题的算法
原理
问题的输入与输出:
X = { x1,x2,...,xn x 1 , x 2 , . . . , x n }
Y = {+1, -1}模型:
感知机的目的是找到一个可以正确分类数据的超平面S: ω⋅x+b=0 ω ⋅ x + b = 0 , 其中 ω ω 是超平面的法向量,b是截距,得到感知机模型 f(x)=sign(ω⋅x+b) f ( x ) = s i g n ( ω ⋅ x + b ) ,其中 ω⋅x+b>0 ω ⋅ x + b > 0 为正类, ω⋅x+b<0 ω ⋅ x + b < 0 为负类策略:
接下来的问题就是如何找到最优模型,简单说就是定义损失函数并将损失函数最小化。损失函数需要是关于ω,b的连续可导函数,这里采用的正是误分类点离超平面的距离。
∵ ∵ 输入空间任意一点 xi x i 到超平面的距离为 1||ω|||ω⋅xi+b| 1 | | ω | | | ω ⋅ x i + b | ,
∵ ∵ 对于任意误分类的点: −yi(ω⋅xi+b)>0 − y i ( ω ⋅ x i + b ) > 0
∴ ∴ 点到超平面的距离可以表示为 −1||ω||yi(ω⋅xi+b) − 1 | | ω | | y i ( ω ⋅ x i + b )
∴ ∴ 所有误分类的点到超平面的距离之和为: 1||ω||∑xi∈Myi(ω⋅xi+b) 1 | | ω | | ∑ x i ∈ M y i ( ω ⋅ x i + b ) ,其中M表示所有误分类的点的集合
∴ ∴ 不考虑 1||ω|| 1 | | ω | | , 损失函数可以写成 L(ω,b)=∑xi∈Myi(ω⋅xi+b) L ( ω , b ) = ∑ x i ∈ M y i ( ω ⋅ x i + b )
感知机学习的策略就是寻找 minL(ω,b)=∑xi∈Myi(ω⋅xi+b) m i n L ( ω , b ) = ∑ x i ∈ M y i ( ω ⋅ x i + b ) 的 ω,b ω , b算法:
直观的说,当有一个实例点被误分类时,实例点在分类超平面的错误一侧,调整 ω ω 和 b 的值,使得分离超平面向该点移动,以减少点到分类超平面的距离,直到越过改点使其正确分类
1.原始形式
∵ ∵