支持向量机-引入及原理

支持向量机(Support Vector Machines, SVM):是一种监督学习算法。处理二分类

  • 支持向量(Support Vector)就是离分隔超平面最近的那些点。
  • 机(Machine)就是表示一种算法,而不是表示机器。

线性可分数据集:将数据集分隔开的直线称为分隔超平面。我们希望找到离分隔超平面最近的点,确保它们离分隔面的距离尽可能远,这里点到分隔面的距离被称为间隔(margin)。

线性不可分数据集:利用核函数(kernel)将数据映射到高维,转化成线性可分

支持向量机 场景

  • 要给左右两边的点进行分类
  • 明显发现:选择D会比B、C分隔的效果要好很多。

寻找最大间隔

分隔超平面是一条直线,点到超平面的距离 == 点到直线的距离

点到直线的距离公式

理论推导(李航的统计学习方法):

定义拉格朗日函数:

将目标函数有极大转换成求极小,就得到下面与之等价的对偶最优化问题

但是几乎所有数据都不那么“干净”,引入松弛变量,允许数据点可以处于分隔面的错误一侧

此时新的约束条件则变为:

总的来说:

  表示松弛变量

  常量C是 惩罚因子, 表示离群点的权重(用于控制“最大化间隔”和“保证大部分点的函数间隔小于1.0” )

  • C值越大,表示离群点影响越大,就越容易过度拟合;反之有可能欠拟合。
  • 我们看到,目标函数控制了离群点的数目和程度,使大部分样本点仍然遵守限制条件。
  • 例如:正类有10000个样本,而负类只给了100个(C越大表示100个负样本的影响越大,就会出现过度拟合,所以C决定了负样本对模型拟合程度的影响!,C就是一个非常关键的优化点!)

 SVM中的主要工作就是要求解 alpha.

猜你喜欢

转载自www.cnblogs.com/gezhuangzhuang/p/9939865.html