机器学习实践——逻辑回归

1.逻辑回归模型介绍

  Logistic Regression 虽然被称为回归,但其实际上是分类模型,并常用于二分类。Logistic Regression 因其简单、可并行化、可解释强深受工业界喜爱。

  逻辑回归的本质是:假设数据服从这个分布,然后使用极大似然估计做参数的估计。

1.1逻辑分布

逻辑分布通常是指在统计学和概率论中使用的一种概率分布。逻辑分布也被称为逻辑正态分布或逻辑分布函数,通常用于描述二元变量的分布,即取值为0或1的变量。

逻辑分布的概率密度函数如下所示:

f(x)=exμss(1+exμs)2

其中,μ 是分布的均值,s 是分布的尺度参数。

逻辑分布常用于描述二项分布的连续近似,特别是在逻辑回归等统计建模方法中经常使用。在机器学习和统计建模中,逻辑分布通常用于建模二分类问题中的概率分布,例如在逻辑回归模型中用于描述分类变量的概率分布。

1.2逻辑回归

逻辑回归是一种用于建模分类问题的统计技术,它通常用于预测二元变量的结果,例如“是”或“否”,“成功”或“失败”等。尽管名字中带有“回归”,但逻辑回归实际上是一种分类方法,而不是回归方法。

逻辑回归的基本原理是通过将线性回归模型的输出通过一个逻辑函数(也称为Sigmoid函数)进行转换,将连续的预测值映射到0和1之间,从而得到分类的概率。逻辑函数的数学形式如下:

P(Y=1|X)=11+e(β0+β1X1+β2X2+...+βpXp)

其中,P(Y=1|X) 表示在给定输入变量 X 的条件下,观测到分类变量 Y 取值为1的概率。 β0,β1,β2,...,βp 是模型的参数,而 X1,X2,...,Xp 则是输入的特征变量。

逻辑回归常用于以下领域:
1. 二分类问题:如预测一个学生是否能被大学录取,或者一位患者是否患有某种疾病。
2. 风险预测:例如金融领域中的信用风险评估。
3. 自然语言处理:在文本分类中经常使用逻辑回归。

逻辑回归是一种简单而有效的分类方法,常用于建模线性关系的概率。

1.3代价函数

在逻辑回归中,我们通常使用极大似然估计来估计模型的参数。逻辑回归是一种用于建模二分类问题的统计方法,它的输出是一个介于0和1之间的概率值,表示某个样本属于某一类的概率。

假设我们有一个二分类问题,对于每个样本 i,我们有自变量 Xi 和因变量 Yi。在逻辑回归中,我们假设因变量 Yi 服从伯努利分布,即

P(Yi=1|Xi)=p(Xi;β)
P(Yi=0|Xi)=1p(Xi;β)

其中 p(Xi;β) 是关于自变量 Xi 和模型参数 β 的概率函数。在逻辑回归中,通常使用逻辑函数(sigmoid函数)来建模 p(Xi;β),其形式为:

p(Xi;β)=11+eXiβ

现在假设我们有 n 个独立同分布的样本,我们可以将样本的似然函数写为:

L(β)=i=1n[p(Xi;β)]Yi[1p(Xi;β)]1Yi

对数似然函数为:

l(β)=i=1n[Yilog(p(Xi;β))+(1Yi)log(1p(Xi;β))]

我们的目标是找到能最大化对数似然函数 l(β) 的参数 β。通常,我们使用优化算法(如梯度下降法或牛顿法)来求解对数似然函数的最大值,从而得到逻辑回归模型的参数估计值。

通过极大似然估计,我们可以得到逻辑回归模型的参数估计,使得观测数据的出现概率最大化,从而能够用于预测和分类任务。

1.4求解

在逻辑回归中,我们可以使用梯度下降法来最大化对数似然函数,从而求解模型的参数。梯度下降法是一种迭代优化算法,通过不断更新参数的方式,使得目标函数(在这里是对数似然函数)逐渐达到最大值。

假设我们的对数似然函数为 l(β),我们的目标是找到能最大化 l(β) 的参数 β。梯度下降法的思想是通过不断沿着梯度的反方向更新参数,直到达到最大值。

梯度下降法的迭代更新规则如下:

β:=β+αl(β)

其中 α 是学习率,l(β) 是对数似然函数 l(β) 关于参数 β 的梯度。

对于逻辑回归的对数似然函数,梯度可以通过对其进行求导得到。假设我们有 n 个独立同分布的样本,对数似然函数为:

l(β)=i=1n[Yilog(p(Xi;β))+(1Yi)log(1p(Xi;β))]

其中 p(Xi;β)=11+eXiβ 是逻辑函数,Xi 是第 i 个样本的自变量,Yi 是第 i 个样本的因变量。

l(β) 求关于 β 的梯度,可以得到:

l(β)=i=1n[(Yip(Xi;β))Xi]

根据这个梯度,我们可以使用梯度下降法来更新参数 β,直到达到最大化对数似然函数的目标。

1.5代码实现

import numpy as np

定义逻辑函数



def sigmoid(z):

return 1 / (1 + np.exp(-z))



定义对数似然函数的梯度



def gradient(X, y, beta):

n = X.shape[0]

return np.dot(X.T, (y - sigmoid(np.dot(X, beta)))) / n



使用梯度下降法更新参数



def gradient_descent(X, y, beta, learning_rate, iterations):

for _ in range(iterations):

grad = gradient(X, y, beta)

beta += learning_rate * grad

return beta



生成一些示例数据



np.random.seed(0)

X = np.random.randn(100, 2)

X = np.column_stack((np.ones(100), X))  # 添加截距项

true_beta = np.array([1, 2, 3])

y = np.random.binomial(1, sigmoid(np.dot(X, true_beta)))



初始化参数



initial_beta = np.zeros(X.shape[1])



使用梯度下降法拟合参数

learned_beta = gradient_descent(X, y, initial_beta, 0.1, 1000)

print("True beta:", true_beta)

print("Learned beta:", learned_beta)

2.与其他模型的对比

2.1 与线性回归

逻辑回归是在线性回归的基础上加了一个 Sigmoid 函数(非线形)映射,使得逻辑回归称为了一个优秀的分类算法。本质上来说,两者都属于广义线性模型,但他们两个要解决的问题不一样,逻辑回归解决的是分类问题,输出的是离散值,线性回归解决的是回归问题,输出的连续值。

我们需要明确 Sigmoid 函数到底起了什么作用:

  • 线性回归是在实数域范围内进行预测,而分类范围则需要在 [0,1],逻辑回归减少了预测范围;
  • 线性回归在实数域上敏感度一致,而逻辑回归在 0 附近敏感,在远离 0 点位置不敏感,这个的好处就是模型更加关注分类边界,可以增加模型的鲁棒性。

2.2 与 SVM

相同点:

  • 都是分类算法,本质上都是在找最佳分类超平面;
  • 都是监督学习算法;
  • 都是判别式模型,判别模型不关心数据是怎么生成的,它只关心数据之间的差别,然后用差别来简单对给定的一个数据进行分类;
  • 都可以增加不同的正则项。

不同点:

  • LR 是一个统计的方法,SVM 是一个几何的方法;
  • SVM 的处理方法是只考虑 Support Vectors,也就是和分类最相关的少数点去学习分类器。而逻辑回归通过非线性映射减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重;
  • 损失函数不同:LR 的损失函数是交叉熵,SVM 的损失函数是 HingeLoss,这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。对 HingeLoss 来说,其零区域对应的正是非支持向量的普通样本,从而所有的普通样本都不参与最终超平面的决定,这是支持向量机最大的优势所在,对训练样本数目的依赖大减少,而且提高了训练效率;
  • LR 是参数模型,SVM 是非参数模型,参数模型的前提是假设数据服从某一分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。所以 LR 受数据分布影响,尤其是样本不均衡时影响很大,需要先做平衡,而 SVM 不直接依赖于分布;
  • LR 可以产生概率,SVM 不能;
  • LR 不依赖样本之间的距离,SVM 是基于距离的;
  • LR 相对来说模型更简单好理解,特别是大规模线性分类时并行计算比较方便。而 SVM 的理解和优化相对来说复杂一些,SVM 转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算。

3.总结

逻辑回归就是这样的一个过程:面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。

posted @   Linglo  阅读(85)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示