我们思考这样一个问题,给两个标签,蓝色和红色点,数据有两个特征(x,y)。我们想要一个分类器,给定一对(x,y),能找到很好的分类边界,判断是蓝色点还是红色点。对于下图的数据,我们如何解决呢。本文通过引入Support Vector Machine(SVM)算法来详解此类问题。
1.SVM损失函数
针对前面介绍的机器学习之线性回归、机器学习之Logistic回归,我们已经了解Cost Function的概念,这里我们利用Logistic Regression的损失函数来引入SVM损失函数。
首先我们先复习下Logistic Regression Function
h θ = 1 1 + e − θ T x h_{\theta}=\frac{1}{1+e^{-\theta^Tx}} hθ=1+e−θTx1
如果 y = 1 y=1 y=1,我们希望 h θ ≈ 1 h_{\theta}\approx1 hθ≈1,那么 θ T x ≫ 0 \theta^Tx\gg0 θTx≫0。如果 y = 0 y=0 y=0,我们希望 h θ ≈ 0 h_{\theta}\approx0 hθ≈0,那么 θ T x ≪ 0 \theta^Tx\ll0 θTx≪0。我们以Logistic Regression为例
L R C o s t E x a m p l e = − ( ( y l o g h θ ( x ) ) + ( 1 − y ) l o g ( 1 − h θ ( x ) ) ) LR Cost Example=-\left( (ylogh_\theta(x))+(1-y)log(1-h_\theta(x))\right) LRCostExample=−((yloghθ(x))+(1−y)log(1−hθ(x)))
= − y l o g 1 1 + e − θ T x − ( 1 − y ) l o g ( 1 − 1 1 + e − θ T x ) =-ylog\frac{1}{1+e^{-\theta^Tx}}-(1-y)log(1-\frac{1}{1+e^{-\theta^Tx}}) =−ylog1+e−θTx1−(1−y)log(1−1+e−θTx1)
- 当 y = 1 y=1 y=1时,此时 θ T x ≫ 0 \theta^Tx\gg0 θTx≫0,上述公式为 − y l o g 1 1 + e − θ T x -ylog\frac{1}{1+e^{-\theta^Tx}} −ylog1+e−θTx1,其中 z = θ T x z=\theta^Tx z=θTx。我们将曲线分为两段,下图中取 z = 1 z=1 z=1点,粉色线部分我们定义为 c o s t 1 ( z ) cost_1(z) cost1(z)。
- 当 y = 0 y=0 y=0时,此时 θ T x ≪ 0 \theta^Tx\ll0 θTx≪0,上述公式为 − ( 1 − y ) l o g ( 1 − 1 1 + e − θ T x ) -(1-y)log(1-\frac{1}{1+e^{-\theta^Tx}}) −(1−y)log(1−1+e−θTx1),其中 z = θ T x z=\theta^Tx z=θTx。我们将曲线分为两段,下图中取 z = − 1 z=-1 z=−1点,粉色线部分我们定义为 c o s t 0 ( z ) cost_0(z) cost0(z)。
- c o s t 1 ( z ) cost_1(z) cost1(z)与 c o s t 0 ( z ) cost_0(z) cost0(z)便是我们希望的Cost Function曲线,和Logistic Function曲线非常接近, c o s t 1 ( z ) cost_1(z) cost1(z)与 c o s t 0 ( z ) cost_0(z) cost0(z)分别代表y=1和y=0时的目标函数定义。
Logistic Regression的损失函数:
m i n θ 1 m [ ∑ i = 1 m y ( i ) ( − l o g h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) ( − l o g ( 1 − h θ ( x ( i ) ) ) ) ] + λ 2 m ∑ j = 1 n θ j 2 min_{\theta}\frac{1}{m}[\sum_{i=1}^{m}y^{(i)}(-logh_{\theta}(x^{(i)}))+(1-y^{(i)})(-log(1-h_{\theta}(x^{(i)})))]+\frac{\lambda}{2m}\sum_{j=1}^{n}\theta_{j}^{2} minθm1[i=1∑my(i)(−loghθ(x(i)))+(1