逻辑回归算法梳理

逻辑回归与线性回归联系与区别

线性回归

通常来讲,线性回归,是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。表达形式为 y = w x + e y = wx + e y=wx+e e e e为误差服从均值为0的正态分布。适用于有监督学习的预测。

一元线性回归分析: y = a x + b y = ax + b y=ax+b,只包含一个自变量和一个因变量,且二者的关系可以用一条直线近似表示
多元线性回归分析: h θ ( x ) = θ 0 + θ 1 X 1 + . . . + θ n X n h_θ(x)=θ_0+θ_1X_1+...+θ_nX_n hθ(x)=θ0+θ1X1+...+θnXn,包括两个或两个以上的自变量,并且因变量和自变量是线性关系。

逻辑回归(Logistic Regression)

逻辑回归原理

与线性回归不同,逻辑回归主要用于解决分类问题,那么线性回归能不能做同样的事情呢?举个例子,比如恶性肿瘤和良性肿瘤的判定。加入我们通过拟合数据得到线性回归方程和一个阈值,用阈值判定是良性还是恶性
在这里插入图片描述

如上图,size小于某值就是良性,否则恶性。但是"噪声"对线性方程的影响特别大,会大大降低分类准确性。例如再加三个样本就可以使方程变成这样:

在这里插入图片描述
那么Logistics回归是怎么做的呢?如果不能找到一个绝对数值判定肿瘤的性质,就用概率的方法,预测出一个概率,比如>0.5判定为恶性的。(以上转载自吴恩达机器学习视频教材)

Sigmoid函数

逻辑回归首先把样本映射到 [ 0 , 1 ] [0,1] [0,1]之间的数值,这就归功于sigmoid函数,可以把任何连续的值映射到 [ 0 , 1 ] [0,1] [0,1]之间,数越大越倾向于 0 0 0,越小越趋近于sigmoid函数公式如下:
g ( x ) = y = 1 1 + e − x g(x)=y=\frac{1}{1+e^{-x}} g(x)=y=1+ex1
l n y 1 − y = x ln\frac{y}{1-y}=x ln1yy=x

判定边界:对多元线性回归方程求sigmoid函数
h θ ( X ) = g ( θ 0 + θ 1 x 1 + . . . + θ n x n ) h_\theta(X)=g(\theta_0+\theta_1x_1+...+\theta_nx_n) hθ(X)=g(θ0+θ1x1+...+θnxn)
找到一组 θ θ θ,假设得到 − 3 + x 1 + x 2 = 0 -3 + x_1 + x_2 = 0 3+x1+x2=0的直线,把样本分为两类。把 ( 1 , 1 ) (1,1) (1,1)带入 g ( x ) g(x) g(x)函数,概率值 &lt; 0.5 &lt;0.5 <0.5,就判定为负样本。这条直线就是判定边界,如下图:

在这里插入图片描述

逻辑回归的损失函数

线性回归的损失函数对逻辑回归不可用,因为逻辑回归的值是0或1,求距离平均值会是一条不断弯曲的曲线,不是理想的凸函数。一个适合逻辑回归的损失定义方法如下:在这里插入图片描述
其中 h ( x ) h(x) h(x)是一个概率值, y = 1 y = 1 y=1表示正样本, y = 0 y = 0 y=0表示负样本。当 y y y是正样本时,如果给定的概率特别小(预测为负样本),损失就会很大;给定的概率很大(预测为正样本),损失就会接近 0 0 0。损失值的函数如图:
在这里插入图片描述

带L2正则项的损失函数:
在这里插入图片描述

逻辑回归的优缺点

优点

  1. 适合需要得到一个分类概率的场景。
  2. 计算代价不高,容易理解实现。LR在时间和内存需求上相当高效。它可以应用于分布式数据,并且还有在线算法实现,用较少的资源处理大型数据。
  3. LR对于数据中小噪声的鲁棒性很好,并且不会受到轻微的多重共线性的特别影响。(严重的多重共线性则可以使用逻辑回归结合L2正则化来解决,但是若要得到一个简约模型,L2正则化并不是最好的选择,因为它建立的模型涵盖了全部的特征。)

缺点

  1. 容易欠拟合,分类精度不高。
  2. 数据特征有缺失或者特征空间很大时表现效果并不好。

正则化与模型评估指标

L1、L2正则化
必备知识:

给定向量 x = ( x 1 , x 2 , . . . x n ) x=(x_1,x_2,...x_n) x=(x1,x2,...xn)

L0范数:并不是一个真正的范数,它主要被用来度量向量中非零元素的个数;

L1范数:向量各个元素绝对值之和;

在这里插入图片描述

L2范数:向量各个元素的平方求和然后求平方根;

在这里插入图片描述

Lp范数:向量各个元素绝对值的p次方求和然后求 1/p 次方;

在这里插入图片描述

L ∞ L\infty L范数:响亮的各个元素求绝对值,取最大那个元素的绝对值
在这里插入图片描述

L1范数正则化:就是通过向目标函数中添加L1范数,使的学习到的结果满足稀疏化,用于特征选择。

模型评估

使用混淆矩阵做进一步分析。
在这里插入图片描述
如果预测的是0,真实值是0,就为TN;如果预测为1,真实值为0,就为FP;预测为0,真实值为1,就为FN,预测为1,真实值为1,就为TP。
(1)精准率
精准率:预测结果为1的时候,预测正确的概率
原因:在有偏(极度偏斜)数据中,通常将1作为真正关注的对象,那么在这种情况下预测正确的概率就作为精准率。(比如:我们真正关心的是预测出了多少癌症病人,而实际上得癌症的又有多少人,即我们预测患癌症的成功率为多少)
p r e c i s i o n = T P T P + F P precision=\frac{TP}{TP+FP} precision=TP+FPTP

(2)召回率
我们关注的事件真实的发生的情况下,成功预测的概率(比如:现有的癌症患者有多少人,而我们能预测出多少人)
r e c a l l = T P T P + F N recall=\frac{TP}{TP+FN} recall=TP+FNTP
(3) F 1 F1 F1 score
有时候需要同时关注精准率和召回率,所以运用新的指标F1 score,兼顾精准率和召回率
F 1 = 2 ⋅ p r e c i s i o n ⋅ r e c a l l p r e c i s i o n + r e c a l l F1=\frac{2\cdot precision\cdot recall}{precision+recall} F1=precision+recall2precisionrecall
,是精准率和召回率的调和平均值:
1 F 1 = 1 2 ( 1 p r e c i s i o n + 1 r e c a l l ) \frac{1}{F1}=\frac{1}{2}\left ( \frac{1}{precision} +\frac{1}{recall}\right ) F11=21(precision1+recall1)

样本不均衡时解决办法

什么是样本不均衡

在分类中,训练数据不均衡是指不同类别下的样本数目相差巨大。举两个例子:
①在一个二分类问题中,训练集中class 1的样本数比上class 2的样本数的比值为60:1。使用逻辑回归进行分类,最后结果是其忽略了class 2,将所有的训练样本都分类为class 1。
②在三分类问题中,三个类别分别为A,B,C,训练集中A类的样本占70%,B类的样本占25%,C类的样本占5%。最后我的分类器对类A的样本过拟合了,而对其它两个类别的样本欠拟合

那么训练数据不均衡会导致什么问题呢?

如果训练集的90%的样本是属于同一个类的,而我们的分类器将所有的样本都分类为该类,在这种情况下,该分类器是无效的,尽管最后的分类准确度为90%。所以在数据不均衡时,准确度(Accuracy)这个评价指标参考意义就不大了。实际上,如果不均衡比例超过4:1,分类器就会偏向于大的类别。

解决办法:

  1. 扩充数据集

首先想到能否获得更多数据,尤其是小类(该类样本数据极少)的数据,更多的数据往往能得到更多的分布信息。

  1. 对数据集进行重采样

过采样(over-sampling),对小类的数据样本进行过采样来增加小类的数据样本个数,即采样的个数大于该类样本的个数。
欠采样(under-sampling),对大类的数据样本进行欠采样来减少大类的数据样本个数,即采样的个数少于该类样本的个数。
采样算法容易实现,效果也不错,但可能增大模型的偏差(Bias),因为放大或者缩小某些样本的影响相当于改变了原数据集的分布。对不同的类别也要采取不同的采样比例,但一般不会是1:1,因为与现实情况相差甚远,压缩大类的数据是个不错的选择。

  1. 人造数据

一种简单的产生人造数据的方法是:在该类下所有样本的每个属性特征的取值空间中随机选取一个组成新的样本,即属性值随机采样。此方法多用于小类中的样本,不过它可能破坏原属性的线性关系。如在图像中,对一幅图像进行扭曲得到另一幅图像,即改变了原图像的某些特征值,但是该方法可能会产生现实中不存在的样本。

sklearn参数详解

sklearn.linear_model.LogisticRegression官方API:
官方API:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
在这里插入图片描述

参考文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值