一般来说,回归是不用于分类的,因为回归是连续的,受噪声影响较大。为了能够处理分类问题,引入了逻辑回归。
逻辑回归本质上来说还是线性回归,他只是在线性回归的基础上加了一个映射函数。
假设函数:$h_\theta\left(x\right) = g\left(\theta^T x \right) = \frac{1}{1+e^{-\theta^Tx}}$
$g\left(z\right) = \frac{1}{1+e^{-z}}$
这里我们讨论二分类问题,即$y\in{0,1}$,这里假设二值满足伯努利分布。
伯努利试验:在同样的条件下,重复地、相互独立地进行的一种随机试验,其结果只有两种:发生(概率为p)或者不发生(概率为1-p)。
伯努利分布:进行一次伯努利实验,成功(X=1)的概率为p,失败(X=0)的概率为1-p,则称随机变量x服从伯努利分布。
这里$h_\theta\left(x\right)$表示样本x为第一类(对于的y=1)的概率,所以有:
$P\left( y=1 | x ; \theta \right) = h_\theta\left(x\right)$
$P\left( y=0 | x ; \theta \right) = 1-h_\theta\left(x\right)$
将两者结合起来:
$P\left( y | x ; \theta \right) = h_\theta\left(x\right)^y \left(1-h_\theta\left(x\right) \right)^\left(1-y\right)$
令$L\left(\theta\right) = \prod_{i=1}^m P\left( y^\left(i\right) | x^\left(i\right) ; \theta \right)$
对其取对数:$l\left(\theta\right) = \log L\left(\theta\right) = \sum_{i=1}^m y^\left(i\right) \log h_\theta\left(x^\left(i\right)\right) + \left(1- y^\left(i\right)\right) \log \left(1-h_\theta\left(x^\left(i\right)\right) \right)$
我们要求的是 $\max_\limits{\theta}{l\left(\theta\right)}$
采用梯度上升的方法
$\frac{\partial l\left(\theta\right)}{\partial \theta_j} = \sum_{i=1}^m \left( \frac{y^\left(i\right)}{h_\theta \left( x^\left(i\right)\right)} - \frac{1-y\left(i\right)}{1- h_\theta \left( x^\left(i\right)\right)} \right) \frac{\partial h_\theta \left( x^\left(i\right)\right)}{\partial \theta_j}$
$= \sum_{i=1}^m \left( \frac{y^\left(i\right)}{g \left( \theta^T x^\left(i\right)\right)} - \frac{1-y\left(i\right)}{1- g\left( \theta^T x^\left(i\right)\right)} \right) g\left(\theta^T x^\left(i\right)\right)\left( 1- g\left(\theta^T x^\left(i\right)\right) \right) x_j^\left(i\right) $
$ = \sum_{i=1}^m \left( y^\left(i\right) - g\left(\theta^T x^\left(i\right)\right)\right) x_j^\left(i\right) $
$\theta := \theta + \alpha \sum_{i=1}^m \left( y^\left(i\right) - g\left(\theta^T x^\left(i\right)\right)\right) x_j^\left(i\right) $
牛顿法:收敛速度较快,属于二次收敛
例如:求$f\left(x\right)=0$对应的x
1: 随机取x的初始值$x_0$
2: $x_1 = x_0 - \frac{f\left(x_0\right)}{f'\left(x_0\right)}$
3: 重复2
利用牛顿法求$\max_\limits{\theta}{l\left(\theta\right)}$,即令$l'(\theta)=0$
1:随机取$\theta^0$
2:$\theta^1 = \theta^0 - \frac{l'(\theta^0)}{l''(\theta^0)}$
3:$\theta^{t+1} = \theta^t - \frac{l'(\theta^t)}{l''(\theta^t)}$
kaggle中的应用:
参照博客: