作业——“西瓜书”逻辑回归

版权声明:本文为博主原创文章,转载前请联系博主。 https://blog.csdn.net/dujiahei/article/details/82814828

名称:描述对数几率回归算法的过程。
提交形式:简洁的文字描述算法的通用形式,文字打卡提交。

逻辑回归((logistic  Regression),也称为对数几率回归。虽然名字上是回归,但实际是处理分类问题的算法(回归问题的输出是连续值,分类问题的输出是离散值)。

1.引入

(多元)线性回归—— 
广义线性回归——  
对数线性回归—— ,对数线性回归是广义线性模型的特例:

但是,想要分类——0、1。参考单位阶跃函数,但是单位阶跃函数不连续,不能直接用作g(·)的逆函数,因此找到了对数几率函数(logistic function) 来代替单位阶跃函数。

(图片来自西瓜书)

如上图所示,将对数几率函数带入广义线性模型后,求一次ln,左边就是包含y的表达式,右边就是包含x的表达式,可以发现,等式左边的内容,“若将 y 视为样本 z 作为正例的可能性,则 1-y 是其反例可能性,两者的比值称为‘几率’,反映了x作为正例的相对可能性”(ps:之所以y视作x作为正例的可能性,我理解是因为等式中y与x呈正向相关,1-y作为分子与x呈反向相关)。对这个几率取对数,就得到了“对数几率”,简称“对率”。因此,本模型实际上是用线性回归模型的预测结果去逼近真实标记的对数几率。

2、求解——如何求解模型中的w和b呢?

然后可以通过“极大似然法”来估计w和b。

扫描二维码关注公众号,回复: 3343651 查看本文章

3.对数几率回归算法在python库中的参数。

api 参数 意义 备注
LogisticRegression的parameters penalty  惩罚项  str类型,可选参数为l1和l2,默认为l2。用于指定惩罚项中使用的规范。newton-cg、sag和lbfgs求解算法只支持L2规范。L1G规范假设的是模型的参数满足拉普拉斯分布,L2假设的模型参数满足高斯分布,所谓的范式就是加上对参数的约束,使得模型更不会过拟合(overfit),但是如果要说是不是加了约束就会好,这个没有人能回答,只能说,加约束的情况下,理论上应该可以获得泛化能力更强的结果。 
 

dual

对偶或原始方法  bool类型,默认为False。对偶方法只用在求解线性多核(liblinear)的L2惩罚项上。当样本数量>样本特征的时候,dual通常设置为False。
  tol 停止求解的标准  float类型,默认为1e-4。就是求解到多少的时候,停止,认为已经求出最优解。 
  c 正则化系数λ的倒数  float类型,默认为1.0。必须是正浮点型数。像SVM一样,越小的数值表示越强的正则化。 
  fit_intercept  是否存在截距或偏差  bool类型,默认为True。 
  intercept_scaling    仅在正则化项为”liblinear”,且fit_intercept设置为True时有用。float类型,默认为1。
  class_weight  用于标示分类模型中各种类型的权重,可以是一个字典或者’balanced’字符串,默认为不输入,也就是不考虑权重,即为None。  如果选择输入的话,可以选择balanced让类库自己计算类型权重,或者自己输入各个类型的权重。举个例子,比如对于0,1的二元模型,我们可以定义class_weight={0:0.9,1:0.1},这样类型0的权重为90%,而类型1的权重为10%。如果class_weight选择balanced,那么类库会根据训练样本量来计算权重。某种类型样本量越多,则权重越低,样本量越少,则权重越高。当class_weight为balanced时,类权重计算方法如下:n_samples / (n_classes * np.bincount(y))。n_samples为样本数,n_classes为类别数量,np.bincount(y)会输出每个类的样本数,例如y=[1,0,0,1,1],则np.bincount(y)=[2,3]。
  random_state  随机数种子  int类型,可选参数,默认为无,仅在正则化优化算法为sag,liblinear时有用。 
  solver  优化算法选择参数  只有五个可选参数,即newton-cg,lbfgs,liblinear,sag,saga。默认为liblinear。solver参数决定了我们对逻辑回归损失函数的优化方法,有四种算法可以选择,分别是: liblinear:使用了开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数。 lbfgs:拟牛顿法的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。 newton-cg:也是牛顿法家族的一种,利用损失函数二阶导数矩阵即海森矩阵来迭代优化损失函数。 sag:即随机平均梯度下降,是梯度下降法的变种,和普通梯度下降法的区别是每次迭代仅仅用一部分的样本来计算梯度,适合于样本数据多的时候。 saga:线性收敛的随机优化算法的的变重。
  max_iter  算法收敛最大迭代次数  int类型,默认为10。仅在正则化优化算法为newton-cg, sag和lbfgs才有用,算法收敛的最大迭代次数。 
  multi_class 分类方式选择参数 str类型,可选参数为ovr和multinomial,默认为ovr。ovr即前面提到的one-vs-rest(OvR),而multinomial即前面提到的many-vs-many(MvM)。如果是二元逻辑回归,ovr和multinomial并没有任何区别,区别主要在多元逻辑回归上。 
  verbose  日志冗长度y int类型。默认为0。就是不输出训练过程,1的时候偶尔输出结果,大于1,对于每个子模型都输出。
  warm_start  热启动参数 bool类型。默认为False。如果为True,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。 
  n_jobs 并行数  int类型,默认为1。1的时候,用CPU的一个内核运行程序,2的时候,用CPU的2个内核运行程序。为-1的时候,用所有CPU的内核运行程序。

参考:

周志华《机器学习》

https://blog.csdn.net/jark_/article/details/78342644

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegression.decision_function%20%E9%80%BB%E8%BE%91%E5%9B%9E%E5%BD%92

猜你喜欢

转载自blog.csdn.net/dujiahei/article/details/82814828
今日推荐