逻辑回归是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。
逻辑回归的应用场景
- 广告点击率
- 是否为垃圾邮件
- 是否患病
- 金融诈骗
- 虚假账号
看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器。
逻辑回归的原理
1输入
逻辑回归的输入就是一个线性回归的结果。
2激活函数
- sigmoid函数
- 分析:
- 回归的结果输入到sigmoid函数当中
- 输出结果:[0,1]区间中的一个概率值,默认为0.5为阈值
逻辑回归最终的分类,是通过属于某个类别的概率值来判断,是否属于某个类别,并且这个类别默认标记为1(正例),另外的一个类别会标记为0(反例)。(方便损失计算)
输出结果解释(重要):假设有两个类别A,B,并且假设我们的概率值为属于A(1)这个类别的概率值。现在有一个样本的输入到逻辑回归输出结果0.6,那么这个概率值超过0.5,意味着我们训练或者预测的结果就是A(1)类别。那么反之,如果得出结果为0.3那么,训练或者预测结果就为B(0)类别。所以接下来我们回忆之前的线性回归预测结果我们用均方误差衡量,那如果对于逻辑回归,我们预测的结果不对该怎么去衡量这个损失呢?我们来看这样一张图
怎么确定输入的权重W和偏置值b?
答:用损失函数。之前线性回归中,损失函数的计算是用(y_predic - y_true)平方和 / 总数。然而逻辑回归的真实值或预测值是(是否属于某个类别),故需要优化。
3损失以及优化
逻辑回归的损失,称之为对数似然损失,公式如下:
- 分开类别:
怎么理解单个的式子呢?这个要根据log的函数图像来理解。
- 综合完整损失函数
我们已经知道:log(P),P值越大,结果越小,所以我们可以对着这个损失的式子去分析
API
- sklearn.linear_model.LogisticRegression(solver=‘iblinear’,penalty='l2’,C=1.0)
- solver:优化求解方式(默认开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数)
- sag:根据数据集自动选择,随机平均梯度下降
- penalty:正则化的种类
- C:正则化力度
- solver:优化求解方式(默认开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数)
默认将类别数量少的当做正例
LogisticRegression方法相当于SGDClassifier(loss=“log”,penalty=" "),SGDClassifier实现了一个普通的随机梯度下降学习也支持平均随机梯度下降法,可以通过设置average=True。而使用LogisticRegression(实现了SAG)
案例:癌症分类预测-良/恶性乳腺癌肿瘤预测
- 数据介绍
原始数据的下载地址:
https://archive.ics.uci.edu/ml/machine-learning-databases/
- 数据描述
(1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤
相关的医学特征,最后一列表示肿瘤类型的数值。
(2)包含16个缺失值,用“?”标出
- 流程: