机器学习模型之逻辑回归
1、逻辑回归模型
关于逻辑回归,可以看做是感知机的加强版本,感知机是线性的分类器,逻辑回归在感知机的基础上加上了一个sigmoid函数,将其变成了一个非线性的分类器,其效果要优于感知机。逻辑回归公式如下
\[ f(x) = \frac {1} {1 + \exp -(wx+b)} \tag{1}
\]
其中\(w\)和\(x\)均为向量。\(f(x)\)可以理解为范围在[0,1]的概率值,若\(f(x) > 0.5\)那么可以将这个类归为正类,若\(f(x) < 0.5\)那么,将这个类归为负类。
2、逻辑回归策略
那么逻辑回归的损失函数是什么呢?逻辑回归公式如下
\[ \prod_{i=1}^{n} f(x_{i}) ^ {y_{i}} (1 - f(x_{i}))^{1-y_{i}} \tag{2}
\]
其中\(f(x_{i})\)为预测值,\(y_{i}\)为真实值,当真实值为\(y_{i} = 1\)时,我们就最大化\(f(x_{i})\),即我们希望这个输出值变大,当真实值为\(y_{i} = 0\)时,我们希望最大化\(1 - f(x_{i})\),即我们希望将\(f(x_{i})\)的输出值尽可能变小。
3、逻辑回归算法
我们的目标是最大化式子(2),那么我们可以对他进行转换,最小化式子(2)的负数,并取\(\log\)
\[ L(w,b) = - \log \prod_{i=1}^{n} f(x_{i}) ^ {y_{i}} (1 - f(x_{i}))^{1-y_{i}} \\
= - \log \sum\limits_{i=1}^{n} y_{i} f(x_{i}) + (1-y_{i})(1-f(x_{i})) \tag{3}
\]
首先给出sigmoid的求导公式
\[ \frac {\partial sigmoid (x)}{\partial x} = sigmoid (x) * (1- sigmoid (x)) \tag{4}
\]
接下来,我们利用优化公式对\(L(w,b)\)进行求导,首先对\(w\)进行求导
\[ \frac {\partial L(w,b)}{\partial w} = \sum\limits_{i=1}^{n} y_{i} * \frac {1}{f(x_{i})} * f(x_{i}) * (1 - f(x_{i})) * x_{i} - (1-y_{i}) * \frac {1} {1-f(x_{i})} * f(x_{i}) * (1 - f(x_{i})) * x_{i} \\
= \sum\limits_{i=1}^{n} x_{i}y_{i}(1-f(x_{i})) - x_{i}(1-y_{i})*f(x_{i}) \\
= \sum\limits_{i=1}^{n} x_{i}y_{i} - x_{i}y_{i}f(x_{i}) - x_{i}f(x_{i}) + x_{i}y_{i}f(x_{i}) \\
= \sum\limits_{i=1}^{n} (y_{i} - f(x_{i})) * x_{i} \tag{5}
\]
接下来对\(b\)求导,公式基本上和(5)相类似,这里,我们直接给出结果。
\[ \frac {\partial L(w,b)}{\partial b} = \sum\limits_{i=1}^{n} y_{i} - f(x_{i}) \tag{6}
\]
最后,我们可以进行参数更新。
\[ w^{*} = w - \alpha \frac {\partial L(w,b)}{\partial w} \\
b^{*} = b - \alpha \frac {\partial L(w,b)}{\partial b}
\]