标签:list any https tran intercept splay 学习 chm table
逻辑回归的基本过程:a建立回归或者分类模型--->b 建立代价函数 ---> c 优化方法迭代求出最优的模型参数 --->d 验证求解模型的好坏。
1.逻辑回归模型:
逻辑回归(Logistic Regression):既可以看做是回归算法,也可以看做是分类算法。通常作为分类算法,一般用于解决二分类问题。
线性回归模型如下:
逻辑回归思想是基于线性回归(Logistic Regression是广义的线性回归模型),公式如下:
其中,
称为Sigmoid函数
由图可知:Sigmoid函数值域是在(0 , 1)之间,中间值为0.5 ,所以逻辑回归函数可以表示数据属于某一类别的概率:
h_θ(x) ≥ 0.5,预测 y=1 类
h_θ(x) < 0.5,预测 y=0类
代价函数是基于最大似然函数推导出来的。
将上式(1)可写成下面这个式子:
将式子乘一个(-1/m),使用梯度下降法求最优解 θ 参数
当x和y为多维时:
2.1 梯度下降法求解最小值
求解函数的最优解(极大值和极小值),在数学中我们一般会对函数求导,然后让导数等于0,获得方程,然后通过解方程直接得到结果。但是在机器学习中,我们的函数常常是多维高阶的,得到导数为0的方程后很难直接求解(有些时候甚至不能求解),所以就需要通过其他方法来获得这个结果,而梯度下降就是其中一种。
对θ 参数进行更新:
α 为学习率
(1)过拟合问题
过拟合即是过分拟合了训练数据,使得模型的复杂度提高,但是泛化能力较差。
(2)正则化方法 :
正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项或惩罚项。
正则项可以取不同的形式,在回归问题中取平方损失,就是参数的L2范数,也可以取L1范数。取平方损失时,模型的损失函数变为:
lambda是正则项系数(λ):
? 如果它的值很大,说明对模型的复杂度惩罚大,可能导致欠拟合; (使得J(θ) 最小化,当λ 值很大时,θ→0)
如:曲线为 z=θ_0+θ_1 x_1+θ_2 x_1^2+λθ_3 x_2^3 ----> θ_3→0
? 如果它的值很小,说明比较注重对训练数据的拟合,在训练数据上的偏差会小,但是可能会导致过拟合。(保留更多的θ)
正则化后的梯度下降算法θ的更新变为:
优点:(1)速度快, 适合二分类问题
(2)简单易于理解, 直接看到各个特征的权重
(3)能容易吸收新的数据
缺点:对数据和场景的使用能力有限, 不如决策树算法适应性强
使用稳定性选择方法中的随机逻辑回归进行特征筛选, 然后对筛选后的特征建立逻辑回归模型
Python中逻辑回归的实现:
LogisticRegression类的各项参数的含义:
penalty=‘l2‘
: 字符串‘l1’或‘l2’,默认‘l2’。
dual=False
: 对偶或者原始方法。Dual只适用于正则化相为l2的‘liblinear’的情况,通常样本数大于特征数的情况下,默认为False。C=1.0
: C为正则化系数λ的倒数,必须为正数,默认为1。和SVM中的C一样,值越小,代表正则化越强。fit_intercept=True
: 是否存在截距,默认存在。intercept_scaling=1
: 仅在正则化项为‘liblinear’,且fit_intercept设置为True时有用。solver=‘liblinear‘
: solver参数决定了我们对逻辑回归损失函数的优化方法,有四种算法可以选择。
正则化 | 算法 | 适用场景 |
---|---|---|
L1 | liblinear | liblinear适用于小数据集;如果选择L2正则化发现还是过拟合,即预测效果差的时候,就可以考虑L1正则化;如果模型的特征非常多,希望一些不重要的特征系数归零,从而让模型系数稀疏化的话,也可以使用L1正则化。 |
L2 | liblinear | libniear只支持多元逻辑回归的OvR,不支持MvM,但MVM相对精确。 |
L2 | lbfgs/newton-cg/sag | 较大数据集,支持one-vs-rest(OvR)和many-vs-many(MvM)两种多元逻辑回归。 |
L2 | sag | 如果样本量非常大,比如大于10万,sag是第一选择;但不能用于L1正则化。 |
multi_class=‘ovr‘
: 分类方式。官网有个对比两种分类方式的例子:链接地址。
class_weight=None
: 类型权重参数。用于标示分类模型中各种类型的权重。默认不输入,即所有的分类的权重一样。
{class_label: weight}
。例如0,1分类的er‘yuan二元模型,设置class_weight={0:0.9, 1:0.1}
,这样类型0的权重为90%,而类型1的权重为10%。random_state=None
: 随机数种子,默认为无。仅在正则化优化算法为sag,liblinear时有用。
max_iter=100
: 算法收敛的最大迭代次数。
tol=0.0001
: 迭代终止判据的误差范围。
verbose=0
: 日志冗长度int:冗长度;0:不输出训练过程;1:偶尔输出; >1:对每个子模型都输出
warm_start=False
: 是否热启动,如果是,则下一次训练是以追加树的形式进行(重新使用上一次的调用作为初始化)。布尔型,默认False。
n_jobs=1
: 并行数,int:个数;-1:跟CPU核数一致;1:默认值。
LogisticRegression类的常用方法
fit(X, y, sample_weight=None)
fit_transform(X, y=None, **fit_params)
X_new
:numpy矩阵。predict(X)
predict_proba(X)
score(X, y, sample_weight=None)
参考:机器学习之逻辑回归
标签:list any https tran intercept splay 学习 chm table
原文地址:https://www.cnblogs.com/junge-mike/p/9334943.html