【任务2 - 逻辑回归算法梳理】时长:2天
1、逻辑回归与线性回归的联系与区别
2、 逻辑回归的原理
3、逻辑回归损失函数推导及优化
4、 正则化与模型评估指标
5、逻辑回归的优缺点
6、样本不均衡问题解决办法
7. sklearn参数
学习时长:两天
参考:西瓜书
cs229吴恩达机器学习课程
李航统计学习
谷歌搜索
公式推导参考:http://t.cn/EJ4F9Q0
**
1、逻辑回归与线性回归的联系与区别
**
- 线性回归要求变量服从正态分布,逻辑回归对变量分布没有要求。
- 线性回归要求因变量是连续性数值变量,而逻辑回归要求因变量是分类型变量。
- 线性回归要求自变量和因变量呈线性关系,而逻辑回归不要求自变量和因变量呈线性关系。
- 逻辑回归是分析因变量取某个值的概率与自变量的关系,而线性回归是直接分析因变量与自变量的关系。
2、 逻辑回归的原理
逻辑回归假设数据服从伯努利分布。伯努利分布有一个简单的例子是抛硬币,抛中为正面的概率是 p,抛中为负面的概率是 1−p。在逻辑回归这个模型里面是假设 hθ(x) 为样本为正的概率,1−hθ(x) 为样本为负的概率。那么整个模型可以描述为
hθ(x;θ)=p
逻辑回归假设是假设样本为正的概率是
p=1/(1+e^(−θ ^ (Tx)))
所以逻辑回归的最终形式为
hθ(x;θ)=1/(1+e^(−θ ^ (Tx)))
3、逻辑回归损失函数推导及优化
Regression问题的常规步骤为:
寻找h函数(即hypothesis);
构造J函数(损失函数);
想办法使得J函数最小并求得回归参数( θ )
4、 正则化与模型评估指标
针对过拟合问题,通常会考虑两种途径来解决:
-
减少特征的数量:
-人工的选择保留哪些特征;
-模型选择算法 -
正则化
-保留所有的特征,但是降低参数θjθj的量/值;
-正则化的好处是当特征很多时,每一个特征都会对预测y贡献一份合适的力量;
召回率、准确率
在二分类问题中,常用的分类器性能评价指标是精确率和召回率
RoC曲线、AUC值
纵坐标—>灵敏度(true positive rate ):TPR=TP/(TP+FN)
,预测的正类中实际正实例占所有正实例的比例
横坐标—>特异度(false positive rate):FPR=FP/(FP+TN)
,预测的正类中实际负实例占所有负实例的比例
曲线下方的面积,就是模型准确率的度量。
https://skyelan.github.io/2019/03/03/NLPtask/NLPtask1/
5、逻辑回归的优缺点
优点:
形式简单,模型的可解释性非常好;
模型效果不错;
训练速度较快;
资源占用小;
方便输出结果调整。
缺点:
准确率并不是很高;
很难处理数据不平衡的问题;
处理非线性数据较麻烦;
逻辑回归本身无法筛选特征。
6、样本不均衡问题解决办法
样本不均衡指的是数据集中正负例样本比例失衡,不再是1:1。此类问题的解决方法一般是基于数据集的重采样或者基于模型的调整。对于逻辑回归来说可以调整预测函数的临界值,使其适当偏向少数类样本,平衡召回率和精度。
-
sklearn参数
class sklearn.linear_model.LogisticRegression(
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。是否多线程
)