在逻辑回归中
假如真实值y=1,我们想要预测值接近于1,那么在逻辑回归中也就是θT*x远大于0
图像中,横轴为z也就是θT*x,纵轴为损失函数。这也证明了左图,当θT*x越大时损失函数越小。(我们想要预测值接近于1,那么在逻辑回归中也就是θT*x远大于0)
假如y=1时,后面(1-y)log(1-hθ(x))为0。画出图像如左面所示。其中蓝色线,为支持向量机算法y=1时的曲线。
1.支持向量机中去掉了逻辑回归中的1/m(因为1/m 在逻辑回归中是为了方便求导)
且乘上1/m与不乘1/m对于最小化后的值没有改变。
2.支持向量机中对于正则项,λ的位置放在了前面A公式部分。故可以看成C(即支持向量机的惩罚系数)等于1/λ。
在逻辑回归中λ越大,惩罚越大。而支持向量机中C越大,惩罚越小。
支持向量机公式:
练习题:
选择(C)
解释:
C可以看成1/λ
支持向量机算法hθ(x)
通常,我们将支持向量机叫做大间距分类器(large margin classifiers)
Large Margin Intuition大边界的直观理解
其含义就是对于个别的异常值,更不容易影响其分类结果。(C合适大小的时候)
首先我们将惩罚因子c设置为很大的一个值
对于前面的那一项A最小化代价函数,那么最理想当然是为0。所以这就变成了:
这样的决策边界会导致什么结果呢?
黑色线分开了两个样本,其中蓝色线与黑色线中间的距离叫做margin(边界)。
假如我们有一个数据集是这样的,可以看出,这是线性可分的。但是有时候我们的决策边界就好像图中绿色线或者粉红色线一样,这样的决策边界看起来都不是特别好的选择。支持向量机就会选择黑色这一条决策边界。黑色这条边界相比之前跟正负样本有更大的距离,而这个距离就叫做间距(margin)。这也是为什么我们将支持向量机叫做大间距分类器的原因。至于为什么会有这样的效果我们后面会有解释。
训练题:
选择(B)
很明显,为了让两个样本间间距最大。曲线应该是x1=3,则x1-3=0。
如果C很大的时候,相当于1/λ很小,也就是惩罚项很小,会产生粉色的线段。对异常值更敏感,即更容易过拟合。
如果C很合适的时候,相当于1/λ很大,也就是惩罚项很大,会产生黑色线段。对异常值不是很敏感,即偏向于欠拟合方向。
Mathematics Behind Large Margin Classification大边界背后的数学
Vector Inner Product向量内积
uTv = p*||u|| =u1v1+u2v2
代表了向量v在向量u上的投影p。
如果u,v之间的夹角大于90度,那么p的值为负值。
如果u,v之间的夹角小于90度,那么p的值为正值。
有个这个概念之后,将其应用到支持向量机的决策范围内,这里我们为了容易理解和可视化,我们简化到二维的,使:
,也就是说其决策边界的判断条件
之前我们的最小化函数为:
,因为只有二维所以可以化简为:
也就是说要最小化向量 θ的模的值。那么θ的值什么时候最小呢?
没错,垂直的时候是最小的。这就解释了为什么支持向量机的决策边界不会选择左图绿色那条。因为方便理解所以θ0=0
,这就意味着决策边界要经过原点。然后我们可以看到在垂直于决策边界的 θ和x(i)的关系(红色投影和粉红色投影),可以看到其投影 p(i)的值都比较小,这也就意味着要 ||θ||2的值很大。这显然是与最小化公式
1/2||θ||2矛盾的。所以支持向量机的决策边界会使 p(i)在 θ的投影尽量大。这就是为什么决策边界会是右图的原因,也就是为什么支持向量机能有效地产生最大间距分类的原因。
练习题:
选择(B)
根据论坛中的FAQ中的解答如下:
应该先求出p(i),也就是从0点做一条x轴正方向的直线。其长度为2。之后代入蓝色方框中的公式中,p(i)·||θ|| >=1,故||θ||=1\p(i)=1/2
上面的SVM都是线性的,下面我们要是SVM支持非线性的分类。故我们引入了新的Kernels核函数的概念。
对于polynomials项,有没有好的方法来选择出使用那些f1,f2,f3的组合。
为了简单理解,我们这里只建立三个特征变量。首先我们在 x1,x2坐标轴上手动选择3个不同的点: l(1), l(2), l(3)
然后我们将第一个特征量定义为:
,可以看做是样本x和第一个标记l(1) 的相似度。
其中可以用这个公式表达这种关系:
(exp:自然常数e为底的指数函数)
类似的有:
这个表达式我们称之为核函数(Kernels),在这里我们选用的核函数是高斯核函数(Gaussian Kernels)(有没有发现跟概率论里面的高斯分布的表达很像呗)。
那么高斯核函数与相似性又有什么关系呢?
我们先来看第一个特征量 f1,
假如样本x非常接近 l(1),即x≈ l(1),那么:
假如样本x离 l(1)非常远,即 x远大于 l(1),那么:
可视化就是这样的:
从图中可以看到越接近 l(1), f1的值越大。(越接近 l(1),图像越高)
这里顺带说一下 σ2这个高斯核函数的参数对函数的影响。从图中可以看到,减小或者增加只会对图像的肥瘦产生影响,也就是影响增加或者减小的速度而已。
练习题:
选择(C)
如果σ2增大,其曲线下降速度会变慢,故锁定A,C。但是曲线的的顶点的值仍然不变,所以还是顶点在(5,1)
我们看到粉色点离l(1)近,离l(2),l(3)远,故f1≈1,f2≈0,f3≈0,此时代入公式=-0.5+1=0.5≥0此时为正例。
蓝色点离l(1)远,离l(2),l(3)远,此时f1,f2,f3都约等于0,此时代入公式为负例。
那么,离 l(1),l(2),l(3)相对比较近的红色区域,其预测的输出将是 y=1,
,而不是这个区域其预测输出将是 y=0 。
我们正是通过标记点以及核函数,训练出非常复杂的非线性判别边界。
那么, l(1),l(2),l(3)这些点是怎么来的?
我们可以抽取部分训练样本的点作为我们的标记点。也就是:
结合上面所学的支持向量机,首先我们算出每一个 f(i),然后根据
在其他算法,如线性回归中也可以使用高斯核算法。
计算出 θ。根据 θTf作为决策边界进行预测。
SVM参数调整
参数C太大会造成低偏差,高方差,也就是过拟合。
参数C太小会造成高偏差,低方差,也就是欠拟合。(结合前面逻辑回归的 λ很容易理解)
高斯参数 σ2太大的话,也就是图像会变得很胖,函数就比较平滑,因为高斯函数相对平滑,那么我们所得到的模型也会变化缓慢,极端例子就是直接一条直线了,这就会导致高偏差,低方差(欠拟合)。反之太小的话,会导致低偏差,高方差(过拟合)。
练习题:
选择(B,C)
过拟合,我们一般增加惩罚项,因为C可以看成1/λ,故减少C的值。增加σ2的值,来让曲线更平缓。更容易欠拟合,来缓解过拟合。
使用SVM
需要制定的参数:
惩罚项(的倒数)C
核函数
如果不使用任何核函数,我们叫做线性核。
使用高斯核之前,需要使用feature scaling标准化。
因为我们需要计算||x-l||2的模,展开(x1-l1)2+(x2-l2)2,如果不使用feature scaling,其x1值的范围很大,会导致(x1-l1)2的值也很大。最后其值大的占据主导地位。
不是所有的相似函数可以变成有效的核函数,故我们需要使用默瑟定理(Mercer’s Theorem)来保证SVM的优化函数正确的运行。
Polynomial Kernel 多项式核:通常它只用于X和L都严格非负的数据,这样可以确保这些内部产品永远不会是负的。
String kernel字符串核:例如,如果你想做某种文本分类问题,输入x是一个字符串,那么也许我们想用字符串内核找到两个字符串之间的相似性
练习题:
选择(B)
选择在交叉验证集中表现最好的那一个。
很多SVM包中已经集成了多分类函数。
如果没有,将问题转换为一对多的分类,然后选择每一种分类中最大的(θ(i))Tx
1.特征数 很大,训练样本数 很小,使用没有核函数的 逻辑回归 或者 SVM(没有核函数叫做线性核)
2.特征数 很小,训练样本数 适中,使用带高斯核的SVM
3.特征数 很小,训练样本数 很大,增加一些新的特征,然后使用逻辑回归 或者 不带核函数的SVM算法。
神经网络更能很好的符合这些条件,但是神经网络可能训练很慢。
测试题:
选择(C)
本图中显示为过拟合,故应该增加惩罚项,也就是减少C。并且增加高斯参数 σ2,使曲线变得更平滑。
选择(D)
D.这张图显示了一个“更窄”的高斯核,位于同一位置,这是减小σ2的效果。
选择(A,C)
SVM的特征如此,熟记。
选择(A,C)
A.当前为欠拟合状态,故增加更多的特征可以缓解欠拟合。
C.使用高斯核,其模型更复杂,可以使曲线更好的拟合数据,故能缓解欠拟合。
选择(B,C)
B.没有核的支持向量机(即线性核)只根据θtx预测输出,因此它给出了线性/直线决策边界,就像逻辑回归一样。
C.对于高斯核来说,其最大值为1