【Kaggle从入门到放弃】(02):逻辑回归模型

第一章Logistic regression(逻辑回归

吴恩达说:“逻辑回归算法是一种很是强大,甚至可能世界上使用最普遍的一种分类算法”。

Logistic regression(逻辑回归),尽管它的名字是回归,但倒是一个用于分类的线性模型而不是用于回归。逻辑回归算法是分类算法,咱们将它做为分类算法使用。有时候可能由于这个算法的名字中出现了“回归”使你感到困惑,但逻辑回归算法其实是一种分类算法,它适用于标签Ÿ取值离散的状况。

第二章sklearn.linear_model.LogisticRegression

class sklearn.linear_model.LogisticRegression(penalty ='l2',dual = False,tol = 0.0001,
        C = 1.0,fit_intercept = True,intercept_scaling = 1,class_weight = None,
        random_state = None,solver ='liblinear',max_iter = 100,multi_class ='ovr ',            
        verbose = 0,warm_start = False,n_jobs = 1 )

能够从LogisticRegression类中访问scikit-learn中逻辑回归(逻辑回归)的实现。该实现能够拟合二元(二元分类),One-vs-Rest(一对多分类)或多项逻辑回归(多类别分类) )与可选的L2或L1正则化(正则化)。

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html#sklearn.linear_model.LogisticRegressionhtml

  1. penalty参数

string 类型,penalty ='l1' 'l2', 默认:'l2' python

'newton-cg' 'sag' 'lbfgs' 求解器只支持l2 惩罚。算法

可选的L2 L1 正规化正则化dom

http://scikit-learn.org/stable/_images/math/760c999ccbc78b72d2a91186ba55ce37f0d2cf37.png
做为优化问题,二进制类L2惩罚逻辑回归  (二进制类L2惩罚逻辑回归 )  使如下成本函数成本函数 )  最小化:    函数

http://scikit-learn.org/stable/_images/math/6a0bcf21baaeb0c2b879ab74fe333c0aab0d6ae6.png
相似地,L1正则化逻辑回归 (  L1正则化逻辑回归 )  解决了如下优化问题  学习

  1. solver参数

{'newton-cg' 'lbfgs' 'liblinear' 'sag' 'saga'} ,默认'liblinear' 大数据

'liblinear' 坐标降低(坐标降低)(CD)算法。优化

0.17 版新加'sag' 随机平均梯度降低求解器随机平均梯度降低。spa

0.19 版新加'saga' rest

在Logistic Regression类中实现的solver(求解器)是“liblinear”,“newton-cg”,“lbfgs”“sag”和'saga'。(最优化算法)

 “liblinear”使用坐标降低(坐标降低)(CD)算法,并依赖于与scikit-learn一块儿提供的优秀C ++ LIBLINEAR库。然而,在liblinear中实现的CD算法不能学习一个真正的多项式(多类)多类别分类模型;相反,优化问题以“one-vs-rest”一对多的方式分解,所以对全部类进行单独的二元分类。这发生在hood下,因此使用此求解器的Logistic回归实例表现为multiclass classifiers(多类别分类器)。对于L1惩罚,sklearn.svm.l1_min_c容许计算C的下限,以得到非“null”(全部特征权重为零)模型。

“lbfgs”,“sag”和“newton-cg”求解器仅支持L2惩罚(L2惩罚),而且发现某些高维度数据的收敛速度更快。这些求解器将多类设置为“multinomial”,能够学习一个真正的多项逻辑回归模型(多类别逻辑回归模型),这意味着它的几率估计应该比默认的“one-vs-rest”设置更好地校准。“lbfgs”,“sag”和“newton -cg“求解器不能优化L1-penalized(L1惩罚)模型,所以”multinomial“设置不会学习稀疏模型(稀疏模型)。

求解器“sag”使用Stochastic Average Gradient descent(随机平均梯度降低)。当样本数量和特征数量都很大时,它比其余大型数据集的求解器更快。

简而言之,可使用如下规则选择solver(求解器

案件

求解

小数据集或L1惩罚

'liblinear'

多项损失或大数据集

'sag','newton-cg' 'lbfgs','saga'

很是大的数据集

'sag' 'saga'

  1. ç 参数

Float 默认值是1.0 。正则化参数。

必须是正数,越小的值表明更强的正则化。

  1. dual参数

布尔值,默认是假的。

当样本数量大于特征数量时,选择双=假。

当l2惩罚和liblinear solver时,选择dual = True。

  1. tol 参数

float型,默认值1e-4。

迭代的收敛判断精度。

  1. fit_intercept 参数 

bool,布尔值,默认值是真的

将常量(又名偏见或拦截)添加到决策函数中。

  1. intercept_scaling 参数

 浮动,默认值是1

仅在使用求解器“liblinear” fit_intercept 参数设置为时有用。

在这种状况下, x变为[x,intercept_scaling],即具备等于intercept_scaling的常数值的“合成”特征被附加到实例向量。截距变成了intercept_scaling * synthetic_feature_weight。

  1. class_weight 参数

' dict' 'balanced' ,默认值:

  1. random_state 参数

{ int,RandomState instance or None } ,默认值是None。

在求解器是 '下垂' 或 'liblinear' 时使用。

若是是整型,则random_state是随机数生成器使用的种子;

若是是RandomState实例,则random_state是随机数生成器;

若是为无,则随机数生成器是np.random使用的RandomState实例

  1. max_iter 参数 

 int,默认值是100

在求解器是 'newton-cg','sag'和'lbfgs' 时使用,求解器收敛的最大迭代次数。

  1. multi_class 参数 

string 字符串类型,{'ovr','multinomial'},默认值是'ovr'

若是是'ovr',优化问题以“one-vs-rest”一对多的方式分解,所以对全部类进行单独的二元分类。

若是是'多项式',最小化损失是整个几率分布中的多项式损失拟合。不适用于liblinear求解器。

  1. verbose参数 

int,默认值是0

对于liblinear和lbfgs求解器,将冗长的设置为任何正数以表示详细程度。

  1. warm_start 参数 

bool,默认值是

当为真时,重用上一次调用的解决方案以适合初始化,不然,只需擦除之前的解决方案。对于liblinear解算器没用。

  1. n_jobs 参数 

int,默认值是1

若是multi_class ='ovr',则在对类进行并行计算时CPU核使用数量。

当``solver``设置为 'liblinear' 时,无论 'multi_class' 是什么,都会忽略此参数。

若是给定值-1,则使用全部CPU核。

第三章 逻辑回归理论知识详解