线性回归算法梳理
任务2 - 逻辑回归算法梳理
1、逻辑回归与线性回归的联系与区别
联系:逻辑回归属于对数线性模型,本质上是个线性模型。
区别:
逻辑回归得到一个离散的结果,但线性回归得到一个连续的结果。
线性回归的应用场合多是回归分析,一般不用在分类问题上。原因可以概括为以下两个:
(1)回归模型是连续型模型,即预测出的值都是连续值(实数值),而不是离散值;
(2)预测结果受样本噪声的影响较大。
2、 逻辑回归的原理
对数几率函数是一种“Sigmoid函数”,如下图所示。
3、逻辑回归损失函数推导及优化
极大似然函数:
对这个公式取对数,可得对数似然函数:
最大化对数似然函数其实就是最小化交叉熵误差(Cross Entropy Error)。
先不考虑累加和,我们针对每个参数wj求偏导:
最后,通过扫描样本,迭代下述公式可求得参数:
4、 正则化与模型评估指标
常见的有L1正则化和L2正则化。
参考:https://www.cnblogs.com/pinard/p/6029432.html
5、逻辑回归的优缺点
逻辑回归实际是一种分类学习方法。这种方法有很多优点:
(1)直接对分类可能性进行建模,无需事先假设数据分布,这样就避免了假设分布不准确带来的问题;
(2)它不是仅预测出“类别”,而是可得到近似概率预测,这对许多需利用概率辅助决策的任务很有用;
(3)逻辑回归求解的目标函数是任意阶可导的凸函数,有很好的数学性质,现有的许多数值优化算法都可直接用于求解最优解。
缺点:
(1)容易欠拟合或过拟合,分类精度不高。
(2)数据特征有缺失或者特征空间很大时表现效果并不好。
(3)高度依赖正确的数据表示。
(4)由于其结果是离散的,Logistic 回归只能预测分类结果。
6、样本不均衡问题解决办法
参考:https://blog.youkuaiyun.com/zhongjunlang/article/details/79568601
7. sklearn参数
如下参数来自参考:
https://blog.youkuaiyun.com/adamtu18/article/details/88093230
penalty=’l2’, 参数类型:str,可选:‘l1’ or ‘l2’, 默认: ‘l2’。该参数用于确定惩罚项的范数
dual=False, 参数类型:bool,默认:False。双重或原始公式。使用liblinear优化器,双重公式仅实现l2惩罚。
tol=0.0001, 参数类型:float,默认:e-4。停止优化的错误率
C=1.0, 参数类型:float,默认;1。正则化强度的导数,值越小强度越大。
fit_intercept=True, 参数类型:bool,默认:True。确定是否在目标函数中加入偏置。
intercept_scaling=1, 参数类型:float,默认:1。仅在使用“liblinear”且self.fit_intercept设置为True时有用。
class_weight=None, 参数类型:dict,默认:None。根据字典为每一类给予权重,默认都是1.
random_state=None, 参数类型:int,默认:None。在打乱数据时,选用的随机种子。
solver=’warn’, 参数类型:str,可选:{‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’, ‘saga’}, 默认:liblinear。选用的优化器。
max_iter=100, 参数类型:int,默认:100。迭代次数。multi_class=’warn’, 参数类型:str,可选:{‘ovr’, ‘multinomial’, ‘auto’},默认:ovr。如果选择的选项是’ovr’,那么二进制问题适合每个标签。对于“多项式”,最小化的损失是整个概率分布中的多项式损失拟合,即使数据是二进制的。当solver ='liblinear’时,‘multinomial’不可用。如果数据是二进制的,或者如果solver =‘liblinear’,‘auto’选择’ovr’,否则选择’multinomial’。
verbose=0, 参数类型:int,默认:0。对于liblinear和lbfgs求解器,将详细设置为任何正数以表示详细程度。
warm_start=False, 参数类型:bool,默认:False。是否使用之前的优化器继续优化。
n_jobs=None,参数类型:bool,默认:None。是否多线程。