逻辑回归算法
学习内容
1、逻辑回归与线性回归的联系与区别
2、 逻辑回归的原理
3、逻辑回归损失函数推导及优化
4、 正则化与模型评估指标
瑜伽服5、逻辑回归的优缺点
6、样本不均衡问题解决办法
7. sklearn参数
线性回归与逻辑回归的区别
线性回归是利⽤连续性变量来估计实际数值(例如房价,呼叫次数和总销售额等)。我们通过线性回归
算法找出⾃变量和因变量间的最佳线性关系,图形上可以确定⼀条最佳直线。这条最佳直线就是回归线。这个回归关系可以⽤Y=aX+b 表⽰。
逻辑回归其实是⼀个分类算法⽽不是回归算法。通常是利⽤已知的⾃变量来预测⼀个离散型因变量的值(像⼆进制值0/1,是/否,真/假)。简单来说,它就是通过拟合⼀个逻辑函数(logit fuction)来预测⼀个事件发⽣的概率。所以它预测的是⼀个概率值,⾃然,它的输出值应该在0到1之间。
假设你的⼀个朋友让你回答⼀道题。可能的结果只有两种:你答对了或没有答对。为了研究你最擅长的题⽬领域,你做了各种领域的题⽬。那么这个研究的结果可能是这样的:如果是⼀道⼗年级的三⾓函数题,你有70%的可能性能解出它。但如果是⼀道五年级的历史题,你会的概率可能只有30%。逻辑回归就是给你这样的概率结果。
逻辑回归的原理
Logistic Regression和Linear Regression的原理是相似的,可以简单的描述为这样的过程:
(1)找⼀个合适的预测函数(Andrew Ng的公开课中称为hypothesis),⼀般表⽰为h函数,该函数就是我们需要找的分类函数,它⽤来预测输⼊数据的判断结果。这个过程时⾮常关键的,需要对数据有⼀定的了解或分析,知道或者猜测预测函数的“⼤概”形式,⽐如是线性函数还是⾮线性函数。
(2)构造⼀个Cost函数(损失函数),该函数表⽰预测的输出(h)与训练数据类别(y)之间的偏差,可以是⼆者之间的差(h-y)或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为J(θ)函数,表⽰所有训练数据预测值与实际类别的偏差。
什么什么的春天>懒人瘦腿(3)显然,J(θ)函数的值越⼩表⽰预测函数越准确(即h函数越准确),所以这⼀步需要做的是找到J(θ)函数的最⼩值。找函数的最⼩值有不同的⽅法,Logistic Regression实现时有的是梯度下降法(Gradient Descent)。
逻辑回归损失函数推导及优化月既不解饮
正则化与模型评估指标
正则化:
针对过拟合问题,通常会考虑两种途径来解决:a) 减少特征的数量:-⼈⼯的选择保留哪些特征;
会费收入-模型选择算法
b) 正则化
保留所有的特征,但是降低参数θjθj的量/值;
正则化的好处是当特征很多时,每⼀个特征都会对预测y贡献⼀份合适的⼒量;
评估指标:
逻辑回归的优缺点
优点:
形式简单,模型的可解释性⾮常好。从特征的权重可以看到不同的特征对最后结果的影响,某个特征的权重值⽐较⾼,那么这个特征最后对结果的影响会⽐较⼤。
模型效果不错。在⼯程上是可以接受的(作为baline),如果特征⼯程做的好,效果不会太差,并且特征⼯程可以⼤家并⾏开发,⼤⼤加快开发的速度。
训练速度较快。分类的时候,计算量仅仅只和特征的数⽬相关。并且逻辑回归的分布式优化sgd发展⽐较成熟,训练的速度可以通过堆机器进⼀步提⾼,这样我们可以在短时间内迭代好⼏个版本的模型。
资源占⽤⼩,尤其是内存。因为只需要存储各个维度的特征值,。
⽅便输出结果调整。逻辑回归可以很⽅便的得到最后的分类结果,因为输出的是每个样本的概率分数,我们可以很容易的对这些概率分数进⾏cutoff,也就是划分阈值(⼤于某个阈值的是⼀类,⼩于某个阈值的是⼀类)。
缺点:
准确率并不是很⾼。因为形式⾮常的简单(⾮常类似线性模型),很难去拟合数据的真实分布。
很难处理数据不平衡的问题。举个例⼦:如果我们对于⼀个正负样本⾮常不平衡的问题⽐如正负样本⽐
10000:1.我们把所有样本都预测为正也能使损失函数的值⽐较⼩。但是作为⼀个分类器,它对正负样本的区分能⼒不会很好。
处理⾮线性数据较⿇烦。逻辑回归在不引⼊其他⽅法的情况下,只能处理线性可分的数据,或者进⼀步说,处理⼆分类的问题 。
逻辑回归本⾝⽆法筛选特征。有时候,我们会⽤gbdt来筛选特征,然后再上逻辑回归。
样本不均衡问题解决办法
处理样本不均衡数据⼀般可以有以下⽅法:描写喷泉的句子
1、⼈为将样本变为均衡数据。
上采样:重复采样样本量少的部分,以数据量多的⼀⽅的样本数量为标准,把样本数量较少的类的样本数量⽣成和样本数量多的⼀⽅相同。
下采样:减少采样样本量多的部分,以数据量少的⼀⽅的样本数量为标准。
2、调节模型参数(class_weigh,sample_weight,这些参数不是对样本进⾏上采样下采样等处理,⽽是在损失函数上对不同的样本加上权重)
(A)逻辑回归中的参数class_weigh;
在逻辑回归中,参数class_weight默认None,此模式表⽰假设数据集中的所有标签是均衡的,即⾃动认为标签的⽐例是1:1。所以当样本不均衡的时候,我们可以使⽤形如{标签的值1:权重1,标签的值2:权重2}的字典来输⼊真实的样本标签⽐例(例如{“违约”:10,“未违约”:1}),来提⾼违约样本在损失函数中的权重。
或者使⽤”balanced“模式,sklearn内部原理:直接使⽤n_samples/(n_class * np.bincount(y)),即样本总数/(类别数量*y0出现频率)作为权重,可以⽐较好地修正我们的样本不均衡情况。
sklearn学习
代码案例
良/恶性乳腺癌肿瘤预测
炒股软件排行榜
结果
补铁的水果有什么
参考链接: