1.逻辑回归与线性回归的联系与区别
联系:逻辑回归的模型 是一个非线性模型,sigmoid函数,又称逻辑回归函数。但是它本质上又是一个线性回归模型,因为除去sigmoid映射函数关系,其他的步骤,算法都是线性回归的。可以说,逻辑回归,都是以线性回归为理论支持的。
区别:使用线性回归的输出其值有可能小于0或者大于1,这是不符合实际情况的,逻辑回归的输出正是[0,1]区间。

2.逻辑回归的原理
面对一个回归或者分类问题,建立代价函数,然后通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。
Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,可能因为逻辑回归用了和回归类似的方法来解决了分类问题。

3.逻辑回归损失函数推导及优化
逻辑回归公式为:
day2 逻辑回归算法梳理
假设有N个样本,样本的标签只有0和1两类,可以用极大似然估计法估计模型参数,从而得到逻辑回归模型

设yi=1的概率为pi,yi=0的概率为1 - pi,那么观测的概率为:
day2 逻辑回归算法梳理
概率由逻辑回归的公式求解,那么带进去得到极大似然函数:
day2 逻辑回归算法梳理
取对数后:
day2 逻辑回归算法梳理
4.正则化与模型评估指标
正则有L1&L2正则
评估指标:lambda是正则项系数:
如果它的值很大,说明对模型的复杂度惩罚大,对拟合数据的损失惩罚小,这样它就不会过分拟合数据,在训练数据上的偏差较大,在未知数据上的方差较小,但是可能出现欠拟合的现象;
•如果它的值很小,说明比较注重对训练数据的拟合,在训练数据上的偏差会小,但是可能会导致过拟合。

5.逻辑回归的优缺点
优点:
1)适合需要得到一个分类概率的场景。
2)计算代价不高,容易理解实现。
缺点:
1)容易欠拟合,分类精度不高。
2)数据特征有缺失或者特征空间很大时表现效果并不好。

6.样本不均衡问题解决办法
1)产生新数据型:过采样小样本(SMOTE),欠采样大样本。
欠采样大样本是通过减少多数类样本的样本数量来实现样本均衡。其中比较简单直接的方法就是随机去掉一些数据来减少多数类样本的规模,但这种方法可能会丢失一些重要的信息。
还有一种方法就是,假设少数类样本数量为N,那就将多数类样本分为N个簇,取每个簇的中心点作为多数类的新样本,再加上少数类的所有样本进行训练。这样就可以保证了多数类样本在特征空间的分布特性。
2)对原数据的权值进行改变
通过改变多数类样本和少数类样本数据在训练时的权重来解决样本不均衡的问题,是指在训练分类器时,为少数类样本赋予更大的权值,为多数类样本赋予较小的权值。
3)通过特征选择
在样本数据较为不均衡,某一类别数据较少的情况下,通常会出现特征分布很不均衡的情况。例如文本分类中,有大量的特征可以选择。因此我们可以选择具有显著区分能力的特征进行训练,也能在一定程度上提高模型的泛化效果。

7 sklearn参数
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。是否多线程

相关文章:

猜你喜欢
  • 2021-09-03
  • 2021-05-08
相关资源
相似解决方案