在机器学习的众多算法中,逻辑回归是一个简单而强大的工具。它虽然名字里带有“回归”,但实际上是一种广泛用于分类问题的算法。无论是预测客户是否会购买产品、判断邮件是否为垃圾邮件,还是诊断疾病是否存在,逻辑回归都能大显身手。下面我们就来深入探究逻辑回归的基本思想。
线性回归是我们熟悉的一种算法,其目标是找到一条直线(在二维空间)或超平面(在多维空间)来拟合数据点。例如,我们想要根据房屋的面积来预测其价格,线性回归模型可以表示为:
[y = \theta_0 + \theta_1x_1]
其中 (y) 是房屋价格,(x_1) 是房屋面积,(\theta_0) 和 (\theta_1) 是模型的参数。通过最小化预测值与真实值之间的误差,我们可以确定这些参数的值。
然而,当我们面对分类问题时,线性回归就显得力不从心了。例如,我们要判断一个客户是否会购买产品,结果只有“会”(1)和“不会”(0)两种情况。如果使用线性回归,预测值可能会超出 [0, 1] 的范围,这显然不符合概率的定义,也无法合理地进行分类。
为了解决这个问题,逻辑回归在线性回归的基础上引入了一个非线性的函数——逻辑函数(也称为 Sigmoid 函数)。逻辑回归的基本思想是将线性回归的输出通过 Sigmoid 函数映射到 [0, 1] 的区间,这样就可以将其解释为概率。
Sigmoid 函数的数学表达式为:
[\sigma(z)=\frac{1}{1 + e^{-z}}]
其中 (z) 是线性回归的输出,即 (z=\theta_0+\theta_1x_1+\cdots+\theta_nx_n)。
我们可以通过绘制 Sigmoid 函数的图像来更直观地理解它。图像呈现出一个“S”形曲线,在 (z = 0) 处,(\sigma(z) = 0.5)。
import numpy as np
import matplotlib.pyplot as plt
z = np.linspace(-10, 10, 100)
sig = 1 / (1 + np.exp(-z))
plt.plot(z, sig)
plt.axhline(y=0.5, color='r', linestyle='--')
plt.axvline(x=0, color='r', linestyle='--')
plt.xlabel('z')
plt.ylabel('σ(z)')
plt.title('Sigmoid Function')
plt.show()
逻辑回归模型可以表示为:
[P(y = 1|x)=\frac{1}{1 + e^{-(\theta_0+\theta_1x_1+\cdots+\theta_nx_n)}}]
其中 (P(y = 1|x)) 表示在给定特征 (x=(x_1,x_2,\cdots,x_n)) 的情况下,样本属于正类((y = 1))的概率。
根据概率值,我们可以制定一个简单的决策规则:
假设我们要根据学生的考试成绩((x_1))和复习时间((x_2))来预测学生是否能通过考试((y))。逻辑回归模型可以表示为:
[P(y = 1|x_1,x_2)=\frac{1}{1 + e^{-(\theta_0+\theta_1x_1+\theta_2x_2)}}]
通过训练数据估计出参数 (\theta_0)、(\theta_1) 和 (\theta_2) 的值后,对于一个新的学生,我们可以根据他的考试成绩和复习时间计算出 (P(y = 1|x_1,x_2)) 的值,然后根据决策规则进行预测。
在逻辑回归中,我们使用最大似然估计来估计模型的参数。假设我们有 (m) 个独立的训练样本 ({(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),\cdots,(x^{(m)},y^{(m)})}),每个样本的似然可以表示为:
[L(\theta)=\prod_{i = 1}^{m}[P(y^{(i)} = 1|x^{(i)})]^{y^{(i)}}[1 - P(y^{(i)} = 1|x^{(i)})]^{1 - y^{(i)}}]
为了方便计算,我们通常对似然函数取对数,得到对数似然函数:
[l(\theta)=\sum_{i = 1}^{m}[y^{(i)}\log(P(y^{(i)} = 1|x^{(i)}))+(1 - y^{(i)})\log(1 - P(y^{(i)} = 1|x^{(i)}))]]
最大似然估计的目标是找到一组参数 (\theta) 使得对数似然函数 (l(\theta)) 最大。通常我们会将目标函数转化为最小化负对数似然函数:
[J(\theta)=-\frac{1}{m}l(\theta)]
为了求解最小化 (J(\theta)) 的问题,我们可以使用梯度下降等优化算法。梯度下降的基本思想是沿着负梯度的方向不断更新参数,直到达到局部最优解。
对比项 | 线性回归 | 逻辑回归 | |
---|---|---|---|
应用场景 | 回归问题,预测连续值 | 分类问题,预测离散类别 | |
模型形式 | (y=\theta_0+\theta_1x_1+\cdots+\theta_nx_n) | (P(y = 1 | x)=\frac{1}{1 + e^{-(\theta_0+\theta_1x_1+\cdots+\theta_nx_n)}}) |
输出范围 | 全体实数 | [0, 1] | |
损失函数 | 均方误差 | 负对数似然函数 |
逻辑回归的基本思想就是将线性回归的输出通过 Sigmoid 函数映射到概率空间,从而实现分类的目的。通过最大似然估计来估计模型的参数,使得模型能够在训练数据上取得较好的表现。虽然逻辑回归是一种相对简单的算法,但它在很多实际问题中都有着广泛的应用,并且是理解更复杂分类算法的基础。