欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

11、数据分析--逻辑回归

发布时间:2024/1/8 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 11、数据分析--逻辑回归 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

线性回归(用特征之间的规律进行回归处理)是处理连续性的,

逻辑回归(用特征之间的规律进行逻辑处理)属于分类是处理离散性的

​ 关于判断其实就是二分类问题

逻辑回归的基础还是使用了线性回归来处理,只是把模型进行了调整,转化为概率问题

逻辑回归(进行二分类的最快算法,深度学习都可用到)

概念:逻辑回归,即逻辑模型,也译作“评定模型”、“分类评定模型”

回归要求得到的外标签的数值是连续的,逻辑回归则是要进行二分类问题的模型,通过标签在图像上的表示,然后用线性回归的图像线来分隔出各种外标签区域,当数据在哪个区域时来进行判断。所以说逻辑回归应用到了线性回归来解决分类的问题

常用于做数据的初步判断,(推荐算法,医疗诊断等)

​ 运用于推荐算法:评判给用户呈现的内容是否是用户喜欢看到的,这里做出了判断就是二分类的体现

是通过线性模型完成分类效果(线性可分)

sigmoid函数:

sigmoid将线性问题转化为概率问题,函数输出的结果值是把线性回归数据范围映射到了0~1之间了

函数中当变量取0时为1,取正无穷时无限趋于0。这里的变量就是wx+b,属于线性回归的外标签,这样就能将线性问题转化为概率问题,这里的0~1就成了概率问题。

将结果值压缩到0-1之间(0负,1正)

预测值在0.5附近时,可以更快的进行下降,将预测值更加贴近于0或1的数值

0.5就是阈值(求导得到最值),00.5对应的就是负类别,0.51对应的就是正类别,阈值位置的梯度大,那么数据分配到的位置就越靠近0或1,这样的模型才够准确。比如判断正类别时0.55的概率不如0.99的概率更准确

sigmoid函数的中间导数大,两侧导数小,这里的sigmoid求导就是为了能利用到梯度下降从最大值开始向两边0或1下降,然后调整模型通过划分的正负线性回归界限图像线参考,然后建立逻辑回归模型来更好的作二分类判断。注意的是线性回归的求导是对wx+b求导,但是逻辑回归则要对sigmoid函数求导,wx+b只是sigmoid函数的一个参数

梯度下降在调整参数和权重的同时也在调整每个模型预测出来的概率

梯度下降都是往下的,sigmoid函数求导最低的是概率为0或1的位置

注:样本点距离线性模型的区分线越近,就证明概率越不确定

损失函数

​ 极大似然估计:

​ 四步走为1、建立函数 2、取对数 3、求导 4、令其等0

​ 似然函数连乘过程,出现多少个1就是多少次方的py=1的概率,出现多少个0(另一种推导方式是把0换成-1)就是多少次方的py=0的概率

​ 似然函数取对数,连乘变成了连加,得到代价函数,这里逻辑回归的代价函数又叫”交叉熵“

​ 使用梯度下降法就能反解出w了

​ 更新权重 w=w-rObj

​ 信息论:(正统的函数推导方式)

​ 可以使用信息论解释逻辑回归的代价函数

​ 概率:

​ 就是判断一件事情发生的可能性

​ 信息量:

​ 信息量是得知该消息时的意外程度

​ 信息量 = log 1/p= − log p

​ 概率越低,信息量越大

​ 用于分类问题:

​ 概率越低,证明模型计算越不准确,所以都希望能让信息量越小越好,概率也会越高,模型计算的也就越准确

​ 熵

​ 熵是用来衡量信息不确定性的单位(概率和信息量乘积)

​ 交叉熵

​ 用来检验实际发生概率和预测准确率信息量的乘积,

​ 熵为正或负的信息不确定性,想求出正类别,那么交叉熵正类别的信息量就该最小

​ 其中,Pk为样本实际发生概率, qk为样本预测准确的概率

​ -Pklog 2( qk )

评估指标

​ 混淆矩阵():

​ 假设我们手上有60个正样本,40个负样本,我们想找出所有的正样本,模型查找出50个,其中只有40个是真正的正样本(即TP有40个本来是正的被预测对的只有40个,FP有10个,FN有20个,TN有30个认为还有30个负样本,这里没进行查找所以待定到TN)

​ TP: 将正类预测为正类数

​ FN: 将正类预测为负类数(本来是正样本却被预测成负样本,正负得负,未达到找到准确目的)

​ FP: 将负类预测为正类数

​ TN: 将负类预测为负类数(本来是负样本却被预测出负样本,负负得正,达到找到准确目的)

​ 案例,有样例100个,50个正样本,50个负样本,其中模型查找出40个正样本,预测出40个正样本中有5个是负样本。(TP35个,FN15个,FP为5个,TN45个)

​ TP(true positive),FP(false negative)

​ 常见指标:

​ 准确率(accuracy) (预测对的/所有) = (TP+TN)/(TP+FN+FP+TN)

​ 精确率(precision)、查准类(确实为正例的数量/模型认为是正例的个数)= TP/(TP+FP) (为1时代表FP为0,出错的几率不存在,属于最好的精确率)

​ 召回率(recall)、查全率(确实为正例的数量/总的正例的数量) = TP/(TP+FN) (FN为0时,可以防止出错,所以结果为1时也是最好的)

​ 精确率和召回率要同时使用来做分类评估,只用一个的话,数据会比较偏激

​ 精确率和召回率的特点:只能用作二分类评估的指标

让精确率和召回率评估的三种方式:

​ F1值就是精确率和召回率的调和均值,2/F1=1/P+1/R,F1 = 2 * (precision精确率 * recall召回率) / (precision精确率 + recall召回率)

​ F1能很好的让精确率和召回率同时使用来作为分类评估的指标,如果精确率和召回率都是1,那么F1结果就为1,精确率和召回率都为0,F1结果为0.结果就能很好的用0~1的区间反映出来

​ PR曲线(除了用F1之外,还可以使用PR曲线来让精确率和召回率同时使用):

​ 某个模型对一批数据数据进行预测,会为每个样本输出一个概率(属于正例的概率)

​ 我们做分类时如果要严格输出0或1的话,就要使用阈值对概率进行激活。

​ 选择不同的阈值时(逻辑回归默认的阈值为0.5),精确率和召回率就会不同。那么就有pr曲线来表示(pr曲线的图像围成的微积分面积越大,那么模型的效果就越好)

​ ROC,AUC(ROC曲线阈值越接近坐标(0,1)的点面积最大,效果最好,表示FP接近0,TP接近1,这里ROC曲线配合AUC面积才能更好了解模型效果):

​ ROC全称是“受试者工作特征”。

​ AUC,ROC曲线的面积就是。

​ AUC用于衡量“二分类问题”机器学习算法性能(泛化能力)

​ 分类模型评估:

​ 二分类的指标(只能用作二分类)有精确率、召回率、F1值、混淆矩阵、ROC曲线、ROC曲线下的面积

多分类:

​ 分类中除了二分类,还要能处理多种分类(二分类用sigmoid模型,多分类用softmax模型)

​ 多分类使用softmax方式来进行处理,softmax是逻辑回归的一般形式。可以通过softmax进行合理分类。

​ 比如每一类可以用数字代替

​ 算法原理:

​ 多分类是二分类的一种拓展形式

​ 二分类采用阈值方式进行分类(0.5分界)

​ 多分类采用最大概率进行分类(类别多了,就不能用阈值来分类了,多分类就要用到目标对应的哪个类别概率大就把目标分配哪个指定类别)

​ 多分类把所有参数代入函数,得到一维数组的概率(结果得到的所有概率和为1,因为数据结果已经被映射到概率空间中了),概率最大的就被分到那个类别中

​ 多分类处理的原理也是通过线性模型解决分类问题

​ 多分类的损失函数和代价函数都不是概率相乘了,而是用向量取代

​ 例如:紫色鸢尾花的多分类,通过花瓣的长宽的特征来进行概率最大化的分类,

数据预处理:

​ 类别不平衡处理(类别不平衡就是某类数量特别多和某类数量特别少的在一起时):

​ 欠采样(去除的方式)

​ 去除一些反例(假设反例多),使得正、反例数目接近,然后再学习

​ 优点:速度快

​ 缺点:可能会丢失一些重要信息

​ 过采样(复制某类数据的方式,来达到数目接近,这样拟合的数据会过拟合)

​ 增加一些正例,使得正、反例数目接近,然后再学习

​ 优点:保持数据信息

​ 缺点:可能会过拟合

​ 代价敏感学习(加权的方式,需要算法带权条件)

​ 给某类样本更高的权重,比如,正例是反例的一半,那么正例的权重就是反例的2倍,在sklearn中由

​ class_weight指定

​ 优点:速度快、降低过拟合风险

​ 缺点:需要算法支持带权学习

​ 标签化、独热编码:

​ 标签化

​ 使用标签化处理的方式可以将一些具有频数的内容转化成标签(频数的处理就是离散值的处理)

​ 独热编码(把标签变成向量的形式来处理,因为如果直接把数值代入公式中,所求得的逻辑回归概率是不同同的,是不公平的)

​ 独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1(这里的1就是热,独热就是比特值里只有一个数值是1的,其他全是0),其他全为0的一种码制

​ 独热编码(哑变量 dummy variable)是因为大部分算法是基于向量空间中的度量来进行计算的,为了使非偏序关系的变量取值不具有偏序性,并且到圆点是等距的。使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点。将离散型特征使用one-hot编码,会让特征之间的距离计算更加合理。(独热编码的欧式空间中的距离都是等距的)

​ 独热编码特点

​ 优点:独热编码解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。它的值只有0和1,不同的类型存储在垂直的空间。

​ 缺点:当类别的数量很多时,特征空间会变得非常大。在这种情况下,一般可以用PCA来减少维度。而且one hot encoding+PCA这种组合在实际中也非常有用。(当100分类时要有100个100向量,这是就可以使用主成分分析了)

​ from sklearn.preprocessing import OneHotEncoder, LabelEncoder

​ OneHotEncoder 独热编码

​ LabelEncoder 标签化

​ 可以把先标签化将字符串信息变成数字来分类,然后用toarray方法来把标签化之后的数字进行转换得到独热编码

​ 常用方法 fit_transform()拟合并转化

​ 逻辑回归模型优缺点:

​ 优点

​ 模型简单,易于解释

​ 算法容易并行,适合大数据的求解

​ 缺点

​ 不能拟合非线性数据(突出短板)

​ 采用何种特征组合需要一定的数据敏感性

​ 特征多了:提高模型效果,但是计算成本高,需要数据量大,否则会过拟合

​ 特征少了:有欠拟合的风险

​ 删除无用特征需要进行多重共线性判断(人力成本)

np.ravel把多维数组变成一维数组

逻辑回归模型对象.predict_proba是把参数放回到模型中,进行拟合得到是0和1的可能性,每行的和为1,表示0和1的概率占比(预测值的预测概率)

LabelEnocoder()标准化,把单词换成数字来表达

逻辑回归中的网格搜索参数param_grid的C表示正则化的系数为1/C(转置后的正则化系数),后面传入的参数都作C被1除然后当作正则化的系数

分类问题中,模型分数和准确率的分数是一样的

总结

以上是生活随笔为你收集整理的11、数据分析--逻辑回归的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。