支持向量机算法(SVM)介绍

2020-01-31  本文已影响0人  爱吃鱼的夏侯莲子

在解决复杂的非线性分类问题时,除了逻辑回归和神经网络,还有一种更为强大的算法:叫做支持向量机(Support Vector Machines),简称SVM

代价函数

在分类问题上,常用的激励函数为:
h_\theta(x) = \frac {1}{1+e^{-\theta^Tx}}

逻辑回归的cost函数:
Cost(h_\theta(x), y) = -y \log(h_\theta(x)) - (1-y) \log(1-h_\theta(x))

代入激励函数,得到:
Cost(h_\theta(x), y) = -y \log(\frac{1}{1+e^{-\theta^Tx}}) - (1-y) \log(1-\frac{1}{1+e^{-\theta^Tx}})

上述式子中:
当样本的输出y为1时:Cost(h_\theta(x), y) = -\log(\frac{1}{1+e^{-z}}), z=\theta^Tx

当样本的输出y为0时:Cost(h_\theta(x), y) = -\log(1-\frac{1}{1+e^{-z}}), z=\theta^Tx

该式子的值随着z的变化曲线:

可以看到当y=1时,该式子的值随着z值的增大而减小;当y=0时,该式子的值随着z值的增大而增大。

下面开始构建向量机
将上面的变化曲线做一下简化:

逻辑回归的代价函数为:
J(\theta)=-\frac{1}{m} \sum_{i=1}^m [y^{(i)} \log(h_\theta(x^{(i)})) + (1-y^{(i)}) \log(1-h_\theta(x^{(i)}))] + \frac{\lambda}{2m} \sum_{j=1}^n \theta_j^2

cost_1(z)cost_0(z)代入上述式子:

J(\theta)=-\frac{1}{m} \sum_{i=1}^m [y^{(i)} cost_1(\theta^Tx) + (1-y^{(i)}) cost_0(\theta^Tx)] + \frac{\lambda}{2m} \sum_{j=1}^n \theta_j^2

为了方便计算,将式子乘以m;再将\lambda化去,用C代替:

J(\theta)=-C \sum_{i=1}^m [y^{(i)} cost_1(\theta^Tx) + (1-y^{(i)}) cost_0(\theta^Tx)] + \frac{1}{2} \sum_{j=1}^n \theta_j^2

上述便是SVM的代价函数。
C值是一种控制参数权重的方法,和逻辑分类的\lambda的作用类似。区别是更关心前一个式子的优化还是后一个式子的优化。为了方便,可以简单的把C和\lambda的关系比做C=\frac {1}{\lambda}

通过代价函数 和 cost_1(z)cost_0(z) 的变化曲线,可以得知:

上述条件比起在逻辑回归中,\theta^Tx \geq 0时预测值为1,\theta^Tx < 0预测值为0,支持向量机的要求更加严格。

决策边界

支持向量机在选择决策边界时会选择一个离样本间距最大的边界,因此支持向量机有时被称为大间距分类器

转载自:
https://codeeper.com/2020/01/31/tech/machine_learning/svm_intro.html

上一篇 下一篇

猜你喜欢

热点阅读