机器学习--逻辑回归

本文深入探讨逻辑回归的概念,介绍了其与多重线性回归的区别,并阐述了逻辑回归的优缺点、应用场景及常规步骤。内容包括构造预测函数h(x)、损失函数J的推导及正则化在防止过拟合中的作用。此外,还提到了Python实现逻辑回归的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

逻辑回归基本概念

1. 逻辑回归概念

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

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别)

回归模型中,y是一个定性变量,比如y=0或1,logistic方法主要应用于研究某些事件发生的概率

2.逻辑回归的优缺点

优点:
1)速度快,适合二分类问题
2)简单易于理解,直接看到各个特征的权重
3)能容易地更新模型吸收新的数据
缺点:
对数据和场景的适应能力有局限性,不如决策树算法适应性那么强

- 逻辑回归和多重线性回归的区别

Logistic回归与多重线性回归实际上有很多相同之处,最大的区别就在于它们的因变量不同,其他的基本都差不多。正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalizedlinear model)。
这一家族中的模型形式基本上都差不多,不同的就是因变量不同。这一家族中的模型形式基本上都差不多,不同的就是因变量不同。

  • 如果是连续的,就是多重线性回归
  • 如果是二项分布,就是Logistic回归
  • 如果是Poisson分布,就是Poisson回归
  • 如果是负二项分布,就是负二项回归

- 逻辑回归用途

  • 寻找危险因素:寻找某一疾病的危险因素等;
  • 预测:根据模型,预测在不同的自变量情况下,发生某病或某种情况的概率有多大;
  • 判别:实际上跟预测有些类似,也是根据模型,判断某人属于某病或属于某种情况的概率有多大,也就是看一下这个人有多大的可能性是属于某病。

- Regression 常规步骤

  • 寻找h函数(即预测函数)
  • 构造J函数(损失函数)
  • 想办法使得J函数最小并求得回归参数(θ)

6. 构造预测函数h(x)h(x)

1) Logistic函数(或称为Sigmoid函数),函数形式为:

g(z)=11+ezg(z)=11+e−z

对于线性边界的情况,边界形式如下:
z=θTx=θ0x0+θ1x1++θnxn=i=0nθixiz=θTx=θ0x0+θ1x1+⋯+θnxn=∑i=0nθixi

其中,训练数据为向量
x=[x0,x1,,xn]Tx=[x0,x1,…,xn]T

最佳参数
θ=[θ0,θ1,,θn]Tθ=[θ0,θ1,…,θn]T

构造预测函数为:
hθ(x)=g(θTx)=11+eθTxhθ(x)=g(θTx)=11+e−θTx

函数h(x)h(x)的值有特殊的含义,它表示结果取1的概率,因此对于输入x分类结果为类别1和类别0的概率分别为:
P(y=1x;θ)=hθ(x)P(y=1│x;θ)=hθ(x)
P(y=0x;θ)=1hθ(x)P(y=0│x;θ)=1−hθ(x)

7.构造损失函数J(m个样本,每个样本具有n个特征)

Cost函数和J函数如下,它们是基于最大似然估计推导得到的。

Cost(hθ(x),y)={log(hθ(x))log(1hθ(x))if y=1if y=0Cost(hθ(x),y)={−log(hθ(x))if y=1−log(1−hθ(x))if y=0

J(θ)=1mi=1mCost(hθ(x),y)=1m[i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))]J(θ)=1m∑i=1mCost(hθ(x),y)=−1m[∑i=1m(yilog⁡hθ(xi)+(1−yi)log⁡(1−hθ(xi)))]

8.损失函数详细推导过程

  • 求代价函数:

P(y|x;θ)=(hθ(x))y(1hθ(x))1yP(y|x;θ)=(hθ(x))y(1−hθ(x))1−y
对应的似然函数为:

L(θ)=i=1mP(yi|xi;θ)=i=1m(hθ(xi))yi(1hθ(xi))1yiL(θ)=∏i=1mP(yi|xi;θ)=∏i=1m(hθ(xi))yi(1−hθ(xi))1−yi

对数似然函数为:
l(θ)=logL(θ)=i=1m(yiloghθ(xi)+(1yi)log(1hθ(xi)))l(θ)=log⁡L(θ)=∑i=1m(yilog⁡hθ(xi)+(1−yi)log⁡(1−hθ(xi)))

最大似然估计就是求使l(θ)取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。

在Andrew Ng的课程中将J(θ)取为下式,即:J(θ)=1ml(θ)J(θ)=−1ml(θ)

  • 梯度下降法求解最小值,对应的梯度为:
    θiJ(θ)======1mi=1m(yi1hθ(xi)θihθ(xi)(1yi)11hθ(xi)θihθ(xi)hθ(xi)1mi=1m(yi1g(θTxi)(1yi)11g(θTxi))θig(θTxi)1mi=1m(yi1g(θTxi)(1yi)11g(θTxi))g(θTxi)(1g(θTxi))θiθTxi1mi=1m(yi(1g(θTxi))(1yi)g(θTxi))xji1mi=1m(yig(θTxi))xji1mi=1m(hθ(xi)yi)xji∂∂θiJ(θ)=−1m∑i=1m(yi1hθ(xi)∂∂θihθ(xi)−(1−yi)11−hθ(xi)∂∂θihθ(xi)hθ(xi)=−1m∑i=1m(yi1g(θTxi)−(1−yi)11−g(θTxi))∂∂θig(θTxi)=−1m∑i=1m(yi1g(θTxi)−(1−yi)11−g(θTxi))g(θTxi)(1−g(θTxi))∂∂θiθTxi=−1m∑i=1m(yi(1−g(θTxi))−(1−yi)g(θTxi))xij=−1m∑i=1m(yi−g(θTxi))xij=1m∑i=1m(hθ(xi)−yi)xij

    θ更新过程可以写成:
    θj:=θjα1mmi=1(hθ(xi)yi)xjiθj:=θj−α1m∑i=1m(hθ(xi)−yi)xij

9.正则化

(1) 过拟合问题
过拟合即是过分拟合了训练数据,使得模型的复杂度提高,繁华能力较差(对未知数据的预测能力)
2)过拟合主要原因
过拟合问题往往源自过多的特征
解决方法
1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)
- 可用人工选择要保留的特征;
- 模型选择算法
2)正则化(特征较多时比较有效)
- 保留所有特征,但降低参数θθ的值的影响
(3)正则化方法
正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化项就越大。
正则项可以取不同的形式,在回归问题中取平方损失,就是参数的L2范数,也可以取L1范数。取平方损失时,模型的损失函数变为:

J(θ)=12mi=1m(hθ(xi)yi)2+λj=1mθ2jJ(θ)=12m∑i=1m(hθ(xi)−yi)2+λ∑j=1mθj2

ambda是正则项系数:
- 如果它的值很大,说明对模型的复杂度惩罚大,对拟合数据的损失惩罚小,这样它就不会过分拟合数据,在训练数据上的偏差较大,在未知数据上的方差较小,但是可能出现欠拟合的现象;
- 如果它的值很小,说明比较注重对训练数据的拟合,在训练数据上的偏差会小,但是可能会导致过拟合。
正则化后的梯度下降算法θ的更新变为:
θj:=θjα1mmi=1(hθ(xi)yi)xjiλmθjθj:=θj−α1m∑i=1m(hθ(xi)−yi)xij−λmθj

Python实现逻辑回归

from sklearn.linear_model import LogisticRegression
Model = LogisticRegression()
Model.fit(X_train, y_train)
Model.score(X_train,y_train)
# Equation coefficient and Intercept
Print(‘Coefficient’,model.coef_)
Print(‘Intercept’,model.intercept_)
# Predict Output
Predicted = Model.predict(x_test)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值