逻辑回归
1 、引言
逻辑回归( logistic regression ),是一种分类方法,用于二分类问题,即输出结果只有两种,如用于广告预测,也就是根据某广告被用户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,结果用户要么点击,要么不点击。通常两类使用类别标号 0 和 1 表示, 0 表示不发生, 1 表示发生。
2 、问题引入
例如:有 10 个手机,其中有 3 个是你喜欢的, 7 个是不喜欢的。现预测你对第 11 个手机的喜好。这是一个两类问题,喜欢与不喜欢。显然这是一个二分类问题,我们对第 11 个手机进行预测分类,分为喜欢和不喜欢两个类别。
那么就需要对手机取特征,比如价格,外观,用户体验等,简单处理只拿这个三个特征,那么可以使用如下等式:
x1 , x2 , x3 分别表示我们对某部手机的价格,外观,用户体验具体的量化数值。 θ 表示相应的权重,权重越高表示你越看重手机哪方面。
假设通过训练已经得到了 θ 值,那么就只需要将第 11 只手机的价格,外观,用户体验的量化数值代入上述公式中,得到 z 值。如果 z 值越高,说明喜欢该部手机的可能性就越高。 z>0 表示喜欢这部手机; z<0 表示不喜欢这部手机。 z>0 时, |z| 越大表示越喜欢; z<0 时, |z| 越大表示越不喜欢。
3 、 目标函数
sigmoid 函数的取值范围为 (0,1) 。 z>0 时, z 越大, g(z) 函数值越大,无限趋近于 1 。 z<0 时, z 越小, g(z) 函数值越小,无限趋近于 0 。因此就可以使用 g(z) 的值来代替 z 表示我们对手机的喜欢程度。
以 g(z) 值 0.5 为分界线,对于横坐标 z>0 时, g(z) 值大于 0.5 的可以归为 1 类, z<0 时, g(z) 小于 0.5 ,归为 0 类。
g(z) 值的范围在 (0,1), 而任意一个概率值也在 [0,1] 。概率的取值范围大于 g(z) 的取值范围,因此任意一个 g(z) 都能够找到一个概率值相对应。假设 z 的输出结果是 0 和 1 ,那么就有我们下式:
假设分类的概率写成如下:
把上面的概率写到一起:
联系贝叶斯公式的后验概率,分类的时候选取后验概率大的值进行分类。那么现在分类模型含有未知参数 θ ,如果求出 θ 那么就可以对新的样本进行分类。
那么如何求未知参数 θ 呢?我们现在有 m 个样本,思路是建立一个目标函数,求目标函数极值,极值处的 θ 值,就是我们最有未知参数值,即我们常用的极大似然估计。
4 、极大似然估计思想
给定:数据集和含有未知参数的模型(参数全部未知或部分未知)
估计:模型的未知参数
极大似然估计的思想:在给定模型(含有未知参数)和样本集的情况下,用来估计模型参数, 使得模型实现样本的最大程度的拟合,即使得该样本出现的可能性最大。
m 个样本的释然函数:
取对数后:
似然函数求导:
逻辑回归的目标就是使似然函数最大,因此可以采用梯度下降法进行迭代求得似然函数的最大值。
5 、梯度下降法求解对数似然函数的最大值
5.1 批处理梯度下降法
需要把所有m个样本全部带入计算,迭代一个计算量为mxn2
批处理梯度下降法没迭代一步要用到训练集所有的样本,如果样本数m很大,那么计算相应速度会很慢。所以针对这种不足,又引入了另一种方法:随机梯度下降法
5.2 随机梯度下降法 SGD(stochastic gradient descent)
随机梯度下降法每次迭代只代入单个样本,迭代一个计算量为n2,当样本量总数m很大的时候,随机梯度下降法迭代一次的速度要远远小于梯度下降法,迭代公式如下:
由于每次只代入一个样本进行计算,虽然每次迭代误差准则函数都不一定是向着全局最优方向,但是大的整体方向是向着全局最优方向的。
6、逻辑回归代码
6.1 样本数据
前两列分别为x1和x2值,第3列为数据的类别
6.2 读取数据
6.3 定义sigmoid函数
6.4 批处理梯度下降法
6.5 随机梯度下降法