应该对现有流行并将继续流行下去的分类模型有深刻的了解随机森林和支持向量机(svm)
上篇文章简单介绍了随机森林, 这篇文章简单介绍一下支持向量机(svm) 偏重应用, 轻数学解释推导
线性分类器
一个非常简单的分类问题
用一条直线, 将两种颜色的点分开, 如图所示 (可以有无数条这样的直线) 假如将黑点记作 - 1, 白点 + 1 直线 f(x) = wx+b 这里的 x, w 是向量, 其实也可以写成这种形式 f(x) = w1x1 + w2x2 + ... + wnxn + b(w0x0), 当向量 x 的维度是 2 的时候, f(x) 表示二维空间中的一条直线, 当 x 的维度等于 3 的时候, f(x)表示 3 维空间中的一个平面; 当 x 的维度 n 大于 3 的时候, 表示的是 n 维空间中的 n-1 维超平面 当有一个新的点需要预测分类的时候, 就用 sgn(f(x))sgn 表示符号函数, 当 f(x) > 0, 属于黑点; 否则属于白点
但是, 对于无数条可能的直线, 哪条效果是最好的?
直观感受, 让这条直线到给定样本中最近的点距离最远, 如下图的两种分法, 2 效果好
从直观上来说, 分割的间隙越大越好, 把两个类别的点分得越开越好 在 SVM 中, 成为 Maximum Marginal, 是 svm 的一个理论基础之一 选择是的空隙最大的函数是有很多道理的比如从概率的角度讲, 就使的置信度最小的点置信度最大 上图中被红色和蓝色的线圈出来的点就是所谓的支持向量(support vector)
上图就是对间隙的一个描述 Classifier Boundary 就是 fx, 红蓝线就是 support vertor 所在面红色, 蓝色线之间的间隙就是要最大化的分类间的间隙 直接给出 M 的公式:
另外支持向量位于 wx+b = 1 和 wx+b=-1 的直线上在前面乘上一个该点所属的类别(1 或者 - 1), 就可以得到支持向量的表达式 y(wx+b) =1, 简单的将支持向量表示出来 当确定支持向量后, 分割函数也随之确定, 两个问题等价得到支持向量还有一个作用, 让支持向量后面的那些点不参与计算
省略一堆公式
器学习中的算法 (2)- 支持向量机(SVM) 基础
线性不可分
由于线性可分的情况太少, 下图是一个典型的线性不可分的分类图
要得到这种情况下的分类器, 有两种方式
用图示曲线将其完全分开
另一种还是直线, 不用保证可分性, 包容分错
针对第二种情况, 假如惩罚函数, 使的分错的情况越合理越好可以为分错的点加上一点惩罚, 对一个分错的点的惩罚函数就是这个点到其正确位置的距离:
上图中, 蓝色, 红色的直线分别为支持向量所在的边界, 绿色的线为决策函数紫色的线表示分错的点到其相应的决策面的距离, 这样可以在原函数上加上一个惩罚函数(蓝色部分)
核函数
刚刚提到, 可以使用非线性的方法来完美划分 让空间从原来的线性空间变成一个更高维的空间, 在这个高维的线性空间下, 在用一个超平面进行分割
可以将上图的点映射到一个三维空间(z1, z2, z3), 并对映射后的坐标旋转就可以得到一个线性可分的集
上面就是对 svm 的简单理解, 笔者也不太懂, 只是做个记录, 期待后面有能力填坑
来源: https://juejin.im/post/5a9949e16fb9a028d7000e6a