算法系列——有监督学习——3.逻辑回归

一、概述

逻辑回归是一种学习某个事件发生概率的算法。利用这个概率,可以对某个事件发生或不发生进行二元分类。虽然逻辑回归本来是二元分类的算法,但也可以用于三种类别以上的分类问题。为了理解这个算法,请思考以下例子。

你在回家的路上发现下雪了。如果明天积雪,你就必须从鞋柜里翻出雪天穿的靴子做好准备。 现在的气温是2 ℃。请问明天不积雪,你可以穿平时的鞋子出门的概率是多少呢?

使用虚构的100天的数据,通过逻辑回归求出可以穿平时的鞋子出门的概率。以气温为横轴x,当出现积雪而需要穿着雪天穿的靴子出门时,纵轴y的值为0;当雪已经融化、可以穿着平时的鞋子外出时,纵轴y的值为1,绘制得到的数据散点图如图

在这里使用逻辑回归,就可以得到如图绿线所示的曲线,并利用该曲线求出在不同的气温下,雪已经融化、可以穿着平时的鞋子外出的概率。

具体来说,计算得到的概率分别是:气温为0 ℃时的概率为12%,为1 ℃时的概率为50%,为2 ℃时的概率为88%。看起来明天可以穿平时的鞋子外出。

二、算法说明

如前所述,逻辑回归根据数据x和表示其所属类别的标签y进行学习,计算概率。数据x可以当作由特征值组成的向量处理。如果标签是二元分类,则可以使用前面的y=0, 1这种二元数值表示。逻辑回归的基本思想与线性回归一样,对数据x乘以权重向量w,再加上偏置w0,计算w^{T}x+w0的值。逻辑回归和线性回归在从数据中学习权重w和偏置w0这一点上是相同的。与线性回归不同的是,为了计算概率,逻辑回归的输出范围必须限制在0和1之间。逻辑回归使用Sigmoid函数,返回0和1之间的数值。Sigmoid函数的图形如图所示。

二元分类通常将预测概率0.5作为阈值进行分类。例如,当概率小于0.5时,将y的预测值分类为0; 当概率大于0.5时,将y的预测值分类为1。根据问题的不同,有时会将阈值设置为大于或小于0.5 的值。 在学习过程中,我们使用逻辑损失作为误差函数进行最小化。与其他误差函数一样,逻辑损 失是在分类失败时返回大值,在分类成功时返回小值的函数。与在误差回归中引入的均方误差不同 的是,我们无法通过式子变形来计算逻辑损失的最小值,因此需要采用梯度下降法通过数值计算来 求解。 对于无法通过式子变形严密求解的情况,机器学习中经常会通过数值计算来近似求解。

三、示例代码

import numpy as np
from sklearn.linear_model import LogisticRegression  #Scikit-learn中的逻辑回归分类模型
""" 
创建两个正态分布数据集:
前50个样本:均值=3,标准差=1。
后50个样本:均值=-1,标准差=1
使用np.r_将两个数组合并,并通过reshape转换为形状为(100, 1)的二维数组(逻辑回归要求输入为二维)
"""
X_train = np.r_[np.random.normal(3, 1, size=50),
          np.random.normal(-1, 1, size=50)].reshape((100, -1))
y_train = np.r_[np.ones(50), np.zeros(50)]   # 前50个样本标记为1,后50个标记为0,形成二分类标签
model = LogisticRegression()
model.fit(X_train, y_train)
print(model.predict_proba([[0], [1], [2]])[:, 1])  # 提取类别1的概率

运行结果:

计算可知,在0 ℃、1 ℃、2 ℃时概率的值(保留小数点后两位)分别约为0.11、0.51、0.90

四、决策边界

在解决分类问题时,如果让学习后的模型对未知数据分类,模型就会以某个地方为边界来区分分类结果,这个边界就叫作决策边界。逻辑回归的决策边界是计算出的概率正好为50%的地方。下面看一下在平面的情况下的决策边界的图形。使用逻辑回归学习时的训练数据和决策边界如图所示。决策边界的形状因使用的算法不同而有很大的不同。在平面的情况下,逻辑回归的决策边界是直线。在其他算法中,比如KNN和神经网络,决策边界是更复杂的形式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穿梭的编织者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值