1.是什么/解决什么问题
二类分类模型,用来做binary classification/regression
2.如何解决多分类问题
a.一对多法:即做k次,每次分成这类和其他;
b.一对一:类之间两两都设计一个分类器,每次来个新样本跑遍所有分类器,比如(A,B)归为A类的话,A权重+1,(A,C)再归为A类的话,权重再加1,最后到底归哪类看最高的权重;
c.层次式的:先分为两类,再对每个子类分类,这样下去。
3.一些定义
问题:找到一个超平面,把数据分为两类,并且最大化两类数据到超平面的最小距离。
看图可知Margin,support vector是什么意思。
3.怎么做
(a)分类标准
常见的是logistic/线性回归。
一个线性分类器的学习目标便是要在n维的数据空间中找到一个超平面,超平面的方程就是 w^T * x + b =0; logistic回归就是在这个函数外面加上Sigmod函数。这个时候,新来一个点,代入方程就能判断是哪一类(函数值-1/1)。
(b)如何求解
问题就是最大化几何间隔(Margin)。
推导比较长,见:SVM求解。
求解的关键步骤:
1.max Margin --> max 2/|w|^2 (或者min |w|^2)。原因:三条线:w^T·x+b=1 / w^T·x+b=0 / w^T·x+b=-1,线直接的距离就是这么算。
2.约束:yi (w^T·xi+b) >=1。这个是和label的关系,yi这里可以是1或者-1。
3.拉格朗日乘子法变成对偶问题,再用用迭代求解对偶问题
4.拓展
(a)核函数
x --> phi(x) , 核矩阵为K = |k(xi,xj)|。
定理:只要是半正定的矩阵,都可以是核矩阵。
核函数常见的是线性(xi^T·xj,就是原SVM)、多项式、sigmoid等等
(b)软间隔
min |w|^2 + C·loss