【机器学习】1.逻辑回归模型(1)

article/2025/8/24 8:37:10

目录

一、广义线性模型(Generalized Linear Model)

1、一个引例

2、定义

二、逻辑回归

1、对数几率模型(logit model)

2、逻辑回归与Sigmoid函数

三、逻辑回归模型的输出结果

四、逻辑回归的多分类拓展

1、OvO

2、OvR

3、MvM


一、广义线性模型(Generalized Linear Model)

1、一个引例

y=e^{x+1}为现有函数关系,以线性方程进行预测y=w\hat{}^{T}\cdot x\hat{}

#构建数据集特征
np.random.seed(24)
x=np.linspace(0,5,25).reshape(-1,1)
x=np.concatenate((x,np.ones_like(x)),axis=1)
print(x)#构建数据集标签
y=np.exp(x[:,0]+1).reshape(-1,1)
print(y)#最小二乘法求解线性回归模型
w_b=np.linalg.lstsq(x,y,rcond=-1)[0]
print(w_b[0],w_b[1])#输出预测值
y_hat=x[:,0]*w_b[0]+w_b[1]
print(y_hat)#绘图展示
plt.plot(x[:,0],y,'o')
plt.plot(x[:,0],y_hat,'r-')
plt.show()

预测结果偏差较大,尝试线性方程的输出结果进行指数运算后对y进行预测(即用线性回归模型预测lny)

    lny=w\hat{}^{T}\cdot x\hat{}

w_b2=np.linalg.lstsq(x,np.log(y),rcond=-1)[0]
print(w_b2[0],w_b2[1])

即   lny=x+1

以上实验所用的lny即为一个联系函数,以上模型也可以称为对数线性模型。

2、定义

一句话定义 广义线性模型 即:
In statistics, the generalized linear model (GLM) is a flexible generalization of ordinary linear regression that allows for response variables that have error distribution models other than a normal distribution.
详细来说,我们可以把 广义线性模型 分解为 Random Component、System Component 和 Link Function 三个部分。

 通俗理解就是用函数连接线性方程的左右两端,使得原来线性模型的性能有所扩展

        g(y)=w\hat{}^{T}\cdot x\hat{}

  • 广义线性模型通常要求联系函数g(y)为单调可微函数,观测数据基本符合一些特定的数理统计分布(指数族分布)。 线性回归服从 Gaussian 高斯分布,逻辑回归服从 Bernoulli 伯努利分布。指数族还有很多分布如 多项分布、拉普拉斯分布、泊松分布等等。
  • 广义线性模型  本质上还是线性模型。
  • 通过 联系函数【g(y)】 建立 y和 w\hat{}^{T}\cdot x\hat{}俩者联系,联系函数(link function )的反函数 g−1 称为 响应函数 response function。响应函数 把 linear predictor 直接映射到了预测目标 y,较常用的响应函数例如 logistic/sigmoid、softmax(都是 logit 的反函数)。

二、逻辑回归

1、对数几率模型(logit model)

几率:一个事件发生与不发生概率的比值。   odd(p)=\frac{p}{1-p}

对数几率:几率取自然对数。  logit(p)=ln\frac{p}{1-p}

逻辑回归模型(对数几率模型):用对数几率作为联系函数的广义线性模型。

g(y)=ln\frac{y}{1-y}=w\hat{}^{T}x\hat{}

在数理统计中要求y服从伯努利分布。

2、逻辑回归与Sigmoid函数

将以上模型改写为y=f(x)的形式,以下为数学推导过程。

g(y)=ln\frac{y}{1-y}=w\hat{}^{T}x\hat{}

 \small \frac{y}{1-y}=e^{w\hat{}^{T}x\hat{}}

 \small \frac{y+(1-y)}{1-y}=\frac{1}{1-y}=e^{w\hat{}^{T}x\hat{}}+1

\small 1-y=\frac{1}{e^{w\hat{}^{T}x\hat{}}+1}

\small y=1-\frac{1}{e^{w\hat{}^{T}\cdot x\hat{}}+1}=\frac{e^{w\hat{}^{T}\cdot x\hat{}}}{e^{w\hat{}^{T}\cdot x\hat{}}+1}=\frac{1}{1+e^{-(w\hat{}^{T}\cdot x\hat{})}}

在此基础上可知,对数几率函数的反函数为f(x)=\frac{1}{1+e^{-x}}其函数图像如下

Sigmoid函数:如上述图像一样形如S的函数,Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。 在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间,其中最为典型的是f(x)=\frac{1}{1+e^{-x}}

3、Sigmoid函数的性质

f(x)=\frac{1}{1+e^{-x}} 是连续可导函数。来来来,高数它又来了,求导算性质

\small f{}'(x)=(\frac{1}{1+e^{-x}}){}' =(-1)(1+e^{-x})^{-2}\cdot (e^{-x}){}'=(1+e^{-x})^{-2}\cdot (e^{-x})=\frac{e^{-x}}{(1+e^{-x})^{2}}=\frac{e^{-x}+1-1}{(1+e^{-x})^{2}}=\frac{1}{1+e^{-x}}-\frac{1}{(1+e^{-x})^{2}}=\frac{1}{1+e^{-x}}(1-\frac{1}{1+e^{-x}})=f(x)(1-f(x))

\small f{}'(x)=f(x)(1-f(x)),Sigmoid函数的导函数可以用自身表示。

f'(x)的函数图像如下:

sigmoid函数导函数始终大于0,故sigmoid函数为单调递增函数。sigmoid函数取值为(0,1)

导函数在0点取最大值,sigmoid函数在0点变化率最大。0点也是sigmoid函数的拐点。sigmoid函数当x趋近负无穷时,y趋近于0;趋近于正无穷时,y趋近于1;x=0时,y=0.5。当然,在x超出[-6,6]的范围后,函数值基本上没有变化,值非常接近,在应用中我们一般不考虑。

三、逻辑回归模型的输出结果

逻辑回归模型主要应用于二分类模型的预测。

二分类的判别通常取0.5为阈值y_{cla}=\left\{\begin{matrix} 0 & ,y<0.5\\ 1& ,y\geq 0.5 \end{matrix}\right.

其中y_{cla}为判别结果,y为逻辑回归方程的输出 

xyycla
30.120
0.30.671

逻辑回归模型有较好的可解释性,其中y的值可以被看做是一种概率。

其次逻辑回归方程变形一下:

y=\frac{1}{1+e^{-(1-x)}}

ln\frac{y}{1-y}=1-x

左边的形式是不是在哪里见过?就是y的对数几率呀!x每增加1,y的对数几率就减少1

四、逻辑回归的多分类拓展

将上面的二分类模型改造一下

y=\left\{\begin{matrix} 0&x<0.4 \\ 1&0.4\leqslant x< 0.6 \\ 2&0.6\leqslant x\leqslant 0.8 \\ 3&x>0.8 \end{matrix}\right.                

采用先拆分,后集成的策略:One vs Ons(OvO),One vs Rest(OvR),Many vs Many(MvM)

1、OvO

先依据标签不同拆分为四个小的数据集,再两两进行组合C_{4}^{2}共可能有六种情况。

将此四分类问题变成了6个二分类问题。

若数据集有N个类别,则拆分为C_{N}^{2}=\frac{N*(N-1)}{2}个数据集。

当6个二分类模型训练完成后,我们从6次训练结果中,选择0-3四个lable中频率最高的那一个。(投票法:每一次训练结果相当于投票给1个lable,最后得票最高的lables为最终判定的所属类别。)

如图所示,选定判定结果为2的概率最高(得票数最高),故判定新进入数据的labels为2。

2、OvR

拆分时选择特定一类作为类别1,其余所有类别作为类别2。可以拆分为4个二分类的分类器。

若数据集有N个类别,则拆分为N个数据集。

四类分类器的结果如何集成起来进行判定呢?

如图:选择判定结果为1的那个分类器对应的判定结果。R2分类器对应的判定lables为1,则新进入的数据判定结果标签为1。(如果有多个判定结果为1的分类器,则选择在训练集上准确率最高的那个分类器)

3、MvM

每次将若干类划为正类,若干类划为负类,多次划分,反复集成。

如下图:考虑将一个划为正,三个划为负的模型结果和三个划为正,一个划为负的模型结果相同。

本例中所有可能的划分结果为:

 我们可以划分出10个数据集来构建10个分类器,在实际应用中我们采用ECOC(纠错输出编码),仅在所有划分结果中选部分来进行建模。本例我们选取4个进行建模。

例如k=10不大的时候可以使用穷举编码,在k大的时候可以使用随机编码等;并且分类器个数L = 矩阵长度d 满足

log_{2}k\leqslant L\leqslant 2^{k-1}-1,L\in Z

将正负例的标签组成的数组视为编码。(哈哈,发现了吗?labels相同的数据对应的编码是一样的)

 如何集成判定呢?如果新进入一个数据0.3,各分类器判定结果如下图,编码[1,1,1,-1]对应的labels为0。

ECOC框架中的编码矩阵,二元码用{-1,1}表示,三元码用{-1,0,1}表示。-1表示一类,1表示另一类。0表示该码字位对应的类在其列所形成的二分类划分中被忽略(即不参与这个分类器的训练)。

 如果有一个编码并不能完全一一对应呢?(假如某个分类预测的部分预测不准确)

 

 我们需要计算这个新编码与已知分类器对应编码的差距,找最相似的那一个。

距离计算公式参考如下:

d(x,y)=\sqrt[n]{\sum_{i=1}^{n}(|x_{i}-y_{i}|)^{n}}

最通用的情况下n=2

d(x,y)=\sqrt{\sum_{i=1}^{n}(x_{i}-y_{i}) ^{2}}

 用numpy的相关方法实现距离计算

def dist(x,y,cat=2):'''计算两数组之间的距离minkowski distance:param x: 数组x:param y: 数组y:param cat: minkowski distance中n:return:距离'''d1=np.abs(x-y)if x.ndim>1 or y.ndim>1:    #维度判别 res1=np.power(d1,cat).sum(1)    #对每一行进行求和else:res1=np.power(d1,cat).sum()res= np.power(res1,1/cat)return res
#四个分类器对应的编码矩阵
code_classifier = np.array([[1,1,1,-1],[-1,1,-1,-1],[-1,-1,-1,1],[-1,-1,1,1]])
#新数据的预测编码
newdata_code = np.array([1,-1,1,1])print(dist(code_classifier,newdata_code))

 可见与lables=3对应的编码最相近。


http://chatgpt.dhexx.cn/article/PDnbEAu7.shtml

相关文章

逻辑回归模型(Logistic Regression)及Python实现

https://www.cnblogs.com/sumai/p/5221067.html 1.模型 在分类问题中&#xff0c;比如判断邮件是否为垃圾邮件&#xff0c;判断肿瘤是否为阳性&#xff0c;目标变量是离散的&#xff0c;只有两种取值&#xff0c;通常会编码为0和1。假设我们有一个特征X&#xff0c;画出散点图&…

逻辑回归详解

逻辑回归通常用于解决分类问题&#xff0c;比如&#xff1a;客户是否该买某个商品&#xff0c;借款人是否会违约等。实际上&#xff0c;“分类”是逻辑回归的目的和结果&#xff0c;中间过程依旧是“回归”&#xff0c;因为通过逻辑回归模型&#xff0c;我们得到的是0-1之间的连…

什么是逻辑回归?

深度学习&#xff08;Deep Learning&#xff09;是机器学习&#xff08;Machine Learning&#xff09;的一大分支&#xff0c;它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 逻辑回归&#xff08;Logistic Regression&#xff0c;也译作…

逻辑回归模型调参

文章目录 一、逻辑回归&#xff08;Logistic Regression&#xff09;二、样本不均衡问题处理1 、过采样方法(一)、随机过采样法(二)、SMOTE算法 2 、欠采样方法(一)、随机欠采样 三、网格搜索快速调优损失函数&#xff08;对数似然损失&#xff09; 四、模型评价ROC曲线 一、逻…

逻辑回归(模型的建立与求解)

跟我一起机器学习系列文章将首发于公众号&#xff1a;月来客栈&#xff0c;欢迎文末扫码关注&#xff01; 0 前言 在上一讲中&#xff0c;笔者通过五篇文章来详细的介绍了线性回归模型&#xff0c;那么本讲开始继续介绍下一个经典的机器学习算法逻辑回归&#xff08;Logistic…

逻辑回归模型

本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》 逻辑回归模型本质就是将线性回归模型通过Sigmoid函数进行了一个非线性转换&#xff0c;得到一个介于0&#xff5e;1之间的概率值。因此&#xff0c;逻辑回归模型的本质是预测概率&#xff0c;而不是直接预测具…

解读Logistic回归模型

一、logistic回归的由来 logistic回归在百度百科是这样定义的&#xff1a; logistic回归又称logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#xff0c;疾病自动诊断&#xff0c;经济预测等领域。 由此可见 logistic回归是从线性回归模…

logistic回归模型

logistic回归模型 前言logistic回归模型logit变换几率logistic模型二项逻辑回归模型损失函数 logistic回归模型的应用logistic回归模型的评价 前言 从这一期开始&#xff0c;我们准备介绍一系列机器学习算法模型&#xff0c;主要包括logistic回归&#xff0c;决策树&#xff0…

逻辑回归模型logistic原理详解

Hello! 小A又来咯&#xff01; 之前我们详细的介绍了使用线性回归模型来进行回归学习&#xff0c;那如果要做分类任务该怎么办呢&#xff1f; 考虑二分类任务&#xff0c;其输出值y属于集合[0,1]。而线性回归模型zw^T*xb是实值。为了进行分类任务&#xff0c;我们需要将实值z转…

Python实现逻辑回归模型教程

理解多个预测变量与连续响应变量之间关系通常适用线性回归&#xff0c;但当响应变量为类别变量时需要适用逻辑回归。 逻辑回归是尝试从数据集中把W观测记录分为不同类别的分类算法。 常见的分类回归场景有&#xff1a; 通过信用分和账户余额预测客户贷款是否违约通过篮球比赛中…

【机器学习笔记4】逻辑回归模型

目录 什么是逻辑回归&#xff1f; Sigmoid函数 决策边界 逻辑回归的损失函数 为什么平方误差模型不可行&#xff1f; 对数损失函数 单个样例损失&#xff1a; 整体损失函数 梯度下降算法 补充&#xff1a;F1-score评价指标 F1-Score简介 相关概念 F-Score 示例及…

逻辑回归模型详解(Logistic Regression)

目录 广义线性模型 极大似然法 逻辑回归的假设函数 逻辑回归的损失函数 交叉熵损失函数 为什么LR模型损失函数使用交叉熵不用均方差 交叉熵损失函数的数学原理 交叉熵损失函数的直观理解 交叉熵简介 对数损失函数和交叉熵损失函数 逻辑回归优缺点 其他 逻辑回归与…

机器学习算法(一):逻辑回归模型(Logistic Regression, LR)

目录 1 LR 1.1 直观表述 1.2 决策边界&#xff08;Decision Boundary&#xff09; 2. 权值求解 2.1 代价函数&#xff08;似然函数&#xff09; 2.1.1 为什么损失函数不用最小二乘&#xff1f;即逻辑斯蒂回归损失函数为什么使用交叉熵而不是MSE&#xff1f; 2.1.2 代价函…

详解逻辑回归

目录 1. 逻辑回归模型介绍1.1 Logistic分布1.2 Logistic回归1.3 代价函数1.4 求解1.5 正则化1.5.1 L1正则化1.5.2 L2正则化1.5.3 L1正则化和L2正则化区别 2 与其他模型的对比2.1 与线性回归2.2 与 SVM2.3 与朴素贝叶斯 3. 模型细节3.1 为什么适合离散特征3.2 为什么不用平方误差…

逻辑回归模型(Logistic Regression)

逻辑回归符合伯努利分布。伯努利分布就是我们常见的0-1分布&#xff0c;即它的随机变量只取0或者1&#xff0c;各自的频率分别取1−p和p&#xff0c;当x0或者x1时&#xff0c;我们数学定义为&#xff1a; 所以在常规的逻辑回归模型中&#xff0c;只有两个类别&#xff0c;0或者…

逻辑回归(Logistic Regression)详解

逻辑回归也称作logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;属于机器学习中的监督学习。其推导过程与计算方式类似于回归的过程&#xff0c;但实际上主要是用来解决二分类问题&#xff08;也可以解决多分类问题&#xff09;。通过给定的n组数据&…

逻辑回归模型及案例(Python)

1 简介 逻辑回归也被称为广义线性回归模型&#xff0c;它与线性回归模型的形式基本上相同&#xff0c;最大的区别就在于它们的因变量不同&#xff0c;如果是连续的&#xff0c;就是多重线性回归&#xff1b;如果是二项分布&#xff0c;就是Logistic回归。 Logistic回归虽然名…

PyCharm如何修改配置大内存

现在的电脑标配都8G以上内存了&#xff0c;不过很多IDE仍然是以低配电脑为标准&#xff0c;去配置软件占用硬件的程度 因为内存会直接影响到软件的性能&#xff0c;可以通过手动去设置大内存 一、首先启动虚拟机 进入pychram的bin目录&#xff0c;可以看到2个以vmoptions为后…

jvm最大内存限制多少?

(1)堆内存分配 JVM初始分配的内存由-Xms指定&#xff0c;默认是物理内存的1/64&#xff1b;JVM最大分配的内存由-Xmx指定&#xff0c;默认是物理内存的1/4。默认空余堆内存小 于40%时&#xff0c;JVM就会增大堆直到-Xmx的最大限制&#xff1b;空余堆内存大于70%时&#xff0c;…

大内存时代虚拟内存现在还有用吗

但凡用过Windows的人&#xff0c;大多听说过“虚拟内存”这四个字。尤其在当年物理内存还普遍偏低的年代&#xff0c;虚拟内存几乎成了每一个玩电脑的人都曾摆弄过 的东东。不过随着硬件技术不断发展&#xff0c;内存价格逐步白菜化&#xff0c;我们的电脑再也不像当年那样算计…