Lesson 4.1 逻辑回归模型构建与多分类学习方法

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
简介: Lesson 4.1 逻辑回归模型构建与多分类学习方法

文章目录

一、广义线性模型(Generalized liner model)的基本定义

二、对数几率模型与逻辑回归

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

2. 逻辑回归与 Sigmoid 函数

3. Sigmoid 函数性质

三、逻辑回归模型输出结果与模型可解释性

四、多分类学习与多分类逻辑回归

1. OvO 策略

2. OvR 策略

3. MvM 策略


首先,我们来讨论关于逻辑回归的基本原理。

逻辑回归的基本原理,从整体上来划分可以分为两个部分,其一是关于模型方程的构建,也就是方程的基本形态,当然也包括模型的基本性质及其结果解读;其二则是模型参数求解,即在构建完模型之后如何利用数学工具求解最佳参数。基本划分情况如下:

模型构建部分:可以从广义线性回归(Generalized liner model)+ 对数几率函数(logit function)角度理解,也可以从随机变量的逻辑斯蒂分布(logistic distribution)角度出发进行理解。

参数求解部分:可以借助极大似然估计(Maximum Likelihood Estimate)方法求解,可以借助 KL 离散度基本理论构建二分类交叉熵损失函数求解。


# 科学计算模块
import numpy as np
import pandas as pd
# 绘图模块
import matplotlib as mpl
import matplotlib.pyplot as plt
# 自定义模块
from ML_basic_function import *

一、广义线性模型(Generalized liner model)的基本定义


在前文中我们了解到关于线性回归的局限性,这种局限性的根本由模型本身的简单线性结构(自变量加权求和预测因变量)导致的。

如果说线性回归是在一个相对严格的条件下建立的简单模型,那么在后续实践应用过程中,人们根据实际情况的不同,在线性回归的基础上又衍生出了种类繁多的线性类模型。

其中,有一类线性模型,是在线性回归基础上,在等号的左边或右边加上了一个函数,从而能够让模型更好的捕捉一般规律,此时该模型就被称为广义线性模型,该函数就被称为联系函数。

广义线性模型的提出初衷上还是为了解决非线性相关的预测问题,例如,现在有数据分布如下:

# 数据集特征
np.random.seed(24)
x = np.linspace(0, 4, 20).reshape(-1, 1)
x = np.concatenate((x, np.ones_like(x)), axis=1)
x
#array([[0.        , 1.        ],
#       [0.21052632, 1.        ],
#       [0.42105263, 1.        ],
#       [0.63157895, 1.        ],
#       [0.84210526, 1.        ],
#       [1.05263158, 1.        ],
#       [1.26315789, 1.        ],
#       [1.47368421, 1.        ],
#       [1.68421053, 1.        ],
#       [1.89473684, 1.        ],
#       [2.10526316, 1.        ],
#       [2.31578947, 1.        ],
#       [2.52631579, 1.        ],
#       [2.73684211, 1.        ],
#       [2.94736842, 1.        ],
#       [3.15789474, 1.        ],
#       [3.36842105, 1.        ],
#       [3.57894737, 1.        ],
#       [3.78947368, 1.        ],
#       [4.        , 1.        ]])
# 数据集标签
y = np.exp(x[:, 0] + 1).reshape(-1, 1)
y
#array([[  2.71828183],
#       [  3.35525011],
#       [  4.1414776 ],
#       [  5.11193983],
#       [  6.30980809],
#       [  7.78836987],
#       [  9.61339939],
#       [ 11.86608357],
#       [ 14.64663368],
#       [ 18.07874325],
#       [ 22.31509059],
#       [ 27.54413077],
#       [ 33.99847904],
#       [ 41.96525883],
#       [ 51.79887449],
#       [ 63.93677707],
#       [ 78.91892444],
#       [ 97.41180148],
#       [120.23806881],
#       [148.4131591 ]])



45.png

np.linalg.lstsq(x, y, rcond=-1)[0]
#array([[ 30.44214742],
#       [-22.37576724]])


y=30.44x22.38


  • 则模型预测结果为:
yhat = x[:, 0] * 30.44 - 22.38
yhat
#array([-22.38      , -15.97157895,  -9.56315789,  -3.15473684,
#         3.25368421,   9.66210526,  16.07052632,  22.47894737,
#        28.88736842,  35.29578947,  41.70421053,  48.11263158,
#        54.52105263,  60.92947368,  67.33789474,  73.74631579,
#        80.15473684,  86.56315789,  92.97157895,  99.38      ])
# 观察模型预测和真实结果
plt.plot(x[:, 0], y, 'o')
plt.plot(x[:, 0], yhat, 'r-')

58c9268a637f49748b5aa973d9fb3945.png

能够发现,线性模型预测结果和真实结果差距较大。

但此时如果我们在等号右边加上以 e ee 为底的指数运算,也就是将线性方程输出结果进行以 e ee 为底的指数运算转换之后去预测 y,即将方程改写为


y=e(w^Tx^)


等价于


lny=w^Tx^


即相当于是线性方程输出结果去预测 y yy 取以 e ee 为底的对数运算之后的结果。此时我们可以带入 l n y lnylny 进行建模。

————————————————

版权声明:本文为CSDN博主「虚心求知的熊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_45891612/article/details/128738247

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


可得到方程lny=x+1


等价于y=e(x+1)


即解出原方程。

通过上面的过程,我们不难发现,通过在模型左右两端加上某些函数,能够让线性模型也具备捕捉非线性规律的能力。而在上例中,这种捕捉非线性规律的本质,是在方程加入 ln 对数函数之后,能够使得模型的输入空间(特征所在空间)到输出空间(标签所在空间)进行了非线性的函数映射。

而这种连接线性方程左右两端、并且实际上能够拓展模型性能的函数,就被称为联系函数,而加入了联系函数的模型也被称为广义线性模型。广义线性模型的一般形式可表示如下:


g(y)=w^Tx^


等价于y=g1(w^Tx^)


其中 g ( ⋅ )  为联系函数(link function),g − 1 ( ⋅ ) 为联系函数的反函数。而如上例中的情况,也就是当联系函数为自然底数的对数函数时,该模型也被称为对数线性模型(logit linear model)。


这里需要注意,一般来说广义线性模型要求联系函数必须是单调可微函数。


从广义线性模型的角度出发,当联系函数为 g ( x ) = x 时就退化成了线性模型。而能够通过联系函数拓展模型捕捉规律的范围,这也就是广义的由来。


二、对数几率模型与逻辑回归


  • 逻辑回归也被称为对数几率回归。接下来,我们从广义线性模型角度理解逻辑回归。

1. 对数几率模型(logit model

  • 几率(odd)与对数几率


47.png


  • 此时模型就被称为对数几率回归(logistic regression),也被称为逻辑回归。

2. 逻辑回归与 Sigmoid 函数

  • 对数几率函数与 Sigmoid 函数

48.png


49.png


  • 我们可以简单观察该函数的函数图像:
np.random.seed(24)
x = np.linspace(-10, 10, 100)
y = 1 / (1 + np.exp(-x))
plt.plot(x, y)


818e6c5943d14fccb49e80c04b051faf.png


49.png

3. Sigmoid 函数性质

  • Sigmoid 函数性质与一阶导函数

对于 Sigmoid 函数来说,函数是单调递增函数,并且自变量在实数域上取值时,因变量取值范围在 (0,1) 之间。并且当自变量取值小于 0 时,因变量取值小于 0.5,当自变量取值大于 0时,因变量取值大于 0.5。

并且,我们简单查看 Sigmoid 导函数性质。

50.png




  • 我们发现,Sigmoid 函数的导函数可以简单的用 Sigmoid 函数本身来表示。接下来我们验证 Sigmoid 导函数特性,首先简单定义 Sigmoid 函数:
def sigmoid(x):
    return (1 / (1 + np.exp(-x)))
sigmoid(10)
#0.9999546021312976


  • 据此可定义 Sigmoid 导函数的函数:
def sigmoid_deri(x):
    return (sigmoid(x)*(1-sigmoid(x)))
sigmoid_deri(10)
#4.5395807735907655e-05


  • 进一步,我们可以绘制 Sigmoid 导函数图像:
plt.plot(x, sigmoid_deri(x))

8c727d856eed401aa1c4391f82b9335a.png

  • 我们发现,Sigmoid 导函数在实数域上取值大于 0,并且函数图像先递增后递减,并在 0 点取得最大值。据此我们也可以进一步讨论 Sigmoid 函数性质:
plt.plot(x, sigmoid(x))


a528a491abc041bfb7fb1906ce9376f3.png


由于导函数始终大于 0,因此 Sigmoid 函数始终递增,并且导函数在 0 点取得最大值,因此 Sigmoid 在 0 点变化率最快,而在远离零点的点,Sigmoid 导函数取值较小,因此该区间 Sigmoid 函数变化缓慢。该区间也被称为 Sigmoid 的饱和区间。

总结 Sigmoid 函数性质如下:

性质 说明
单调性 单调递增
变化率 0点变化率最大,越远离0点变化率越小
取值范围 (0,1)
凹凸性 0点为函数拐点,0点之前函数为凸函数,此后函数为凹函数


































相关文章
|
机器学习/深度学习 C++ 网络架构
Lesson 4.1 逻辑回归模型构建与多分类学习方法-1
Lesson 4.1 逻辑回归模型构建与多分类学习方法-1
|
7月前
|
存储 编解码 安全
带三维重建和还原的PACS源码 医学影像PACS系统源码
带三维重建和还原的PACS源码 医学影像PACS系统源码 PACS及影像存取与传输系统”( Picture Archiving and Communication System),为以实现医学影像数字化存储、诊断为核心任务,从医学影像设备(如CT、CR、DR、MR、DSA、RF等)获取影像,集中存储、综合管理医学影像及病人相关信息,建立数字化工作流程。系统可实现检查预约、病人信息登记、计算机阅片、电子报告书写、胶片打印、数据备份等一系列满足影像科室日常工作的功能,并且由于影像数字化存储,用户可利用影像处理与测量技术辅助诊断、方便快捷地查找资料或利用网络将资料传输至临床科室,还可与医院HIS、L
97 0
|
7月前
|
存储 数据采集 固态存储
带三维重建和还原功能的医学影像管理系统(pacs)源码
带三维重建和还原功能的医学影像管理系统(pacs)源码
119 0
|
7月前
|
存储 数据采集 编解码
【PACS】医学影像管理系统源码带三维重建后处理技术
【PACS】医学影像管理系统源码带三维重建后处理技术
135 0
|
7月前
|
C++
【C++医学影像PACS】CT检查中的三维重建是什么检查?
【C++医学影像PACS】CT检查中的三维重建是什么检查?
179 0
|
7月前
|
存储 数据可视化 vr&ar
突破传统 重新定义:3D医学影像PACS系统源码(包含RIS放射信息) 实现三维重建与还原
突破传统,重新定义PACS/RIS服务,洞察用户需求,关注应用场景,新一代PACS/RIS系统,系统顶层设计采用集中+分布式架构,满足医院影像全流程业务运行,同时各模块均可独立部署,满足医院未来影像信息化扩展新需求、感受新时代影像服务便捷性、易用性!系统基于平台化设计,与第三方服务自然接入无压力,从功能多样化到调阅速度快;覆盖(放射、超声、内镜、病理、核医学、心血管、临床科室等,是以影像采集、传输、存储、诊断、报告书写和科室管理)为核心应用的模块化PACS/RIS系统,实现了全院级影像信息的合理共享与应用。
128 0
突破传统 重新定义:3D医学影像PACS系统源码(包含RIS放射信息) 实现三维重建与还原
|
存储 数据库 数据安全/隐私保护
基于C++开发,支持三维重建,多平面重建技术的医学影像PACS系统源码
支持非DICOM标准的影像设备的图像采集和处理。 3)支持各种扫描仪、数码相机等影像输入设备。 4)支持各大主流厂商的CT、MR、DSA、ECT、US、数字胃肠、内镜等影像设备; 5)支持所有的DICOM相机,支持各大厂家的激光相机。 6)系统完全支持HL7接口和ICD—10编码,可与HIS系统无缝连接。 7)提供全院级、科室级工作站以及远程会诊工作站,三维重建,多平面重建。
174 0
基于C++开发,支持三维重建,多平面重建技术的医学影像PACS系统源码
|
7月前
|
数据采集 存储 数据可视化
医院影像PACS系统三维重建技术(获取数据、预处理、重建)
开放式体系结构,完全符合DICOM3.0标准,提供HL7标准接口,可实现与提供相应标准接口的HIS系统以及其他医学信息系统间的数据通信。
245 3
|
7月前
|
存储 编解码 监控
【C++】医学影像PACS三维重建后处理系统源码
系统完全符合国际标准的DICOM3.0标准
88 2
|
7月前
|
存储
医院PACS系统全套源码 强大的三维重建功能
对非DICOM影像,如超声、病理、心电图等进行了集成,做到了可以同时处理DICOM标准图像和非DICOM图像。
64 1

热门文章

最新文章