☆☆☆☆☆逻辑回归 (LR)(分类/解决二分类问题)
一. sigmoid函数(逻辑回归函数)
1.t 就是线性回归 h(w) = w1x1 + w2x2+..+b
- 和线性回归之间的联系
-- 线性回归的结果带入到sigmoid函数中,把结果的取值范围映射到了[0,1]之间
- 逻辑回归的损失函不一样,对数似然损失
2.☆☆☆损失函数推导
cost = -ylog(p)-(1-y)log(1-p)
1.回归函数 h(x)
2.过程1 :求损失,将y值代入上式子,求最大损失函数
cost 为损失 其中y为 真实值(二分值0/1),p 为 逻辑函数预测 概率-当y=1时,我们希望p值越大越好
-当y=0时,我们希望p值越小越好
-提升原本属于1类别的概率,降低原本是0类别的概率。
逻辑回归一般使用L(\hat{y},y) = -(y\log\hat{y})-(1-y)\log(1-\hat{y})L(y,y)=−(ylogy)−(1−y)log(1−y^)
3. 过程二,合并
需要注意的点
不能有缺失
也要归一化/标准化
类别性变量可以考虑one-hot
数据目标特征之间要有关联 皮尔逊相关系数
特征之间如果关联性比较强的,只保留一个
样本分布不均衡
过采样,欠采样
参数 增加权重
二. API :LR_model
sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)
solver可选参数:{'liblinear', 'sag', 'saga','newton-cg', 'lbfgs'},
1.默认: 'liblinear';用于优化问题的算法。
2.对于小数据集来说,“liblinear”是个不错的选择,而“sag”和'saga'对于大型数据集会更快。
3.对于多类问题,只有'newton-cg', 'sag', 'saga'和'lbfgs'可以处理多项损失;“liblinear”仅限于“one-versus-rest”分类。
penalty:正则化的种类
C:正则化力&度——C越大,惩罚越小,模型偏过拟合 C越小,惩罚越厉害,模型偏欠拟合
使用场景
1. 风控领域:LR预测会不会违约(违约的概率)
2. 用户流失预警: LR预测流失概率
3. 推荐系统:CTR预估 LR预测点击的概率
三. 评价指标 AUC/KS值 , ROC 曲线图
准确率: 预测对的样本/ 样本总数
二分类问题常见评价指标 混淆矩阵
正例==1, 假例==0, TP/FN..., 第一个代表预测结果的是否正确, 第二值代表预测值时(1/0, P/N)
_P/_N : 表示 预测样本是 正样本还是负样本,
T: 表示预测结果正确/ F: 表示预测结果错误
TP+FP+FN+FN:特征总数(样本总数)
TP+FN:实际正样本数: TP(正正得正)FN: (负负得正)
FP+TN:实际负样本数:
TP+FP:预测结果为正样本的总数
TN+FN:预测结果为负样本的总数
1. 精准率 查准率: Precision: 检验预测正样本的准确率
-挑出来的西瓜中有多少比例是好瓜,查准率
预测为1中有多少是1
针对预测结果:正确预测正样本/(预测为正样本的和)
预测结果为正例样本 (1) 中 真实为正例的比例 (1) TP/(TP+FP)
2. 召回率:查全率 Recall: 检验TPR
全部好瓜有多少比例被挑出来,查全率
本身是1的有多少被查出了
针对样本数据: : 预测正样本/ 预测正确的(真正例+ 真反例)
真实为正例的样本 (1) 中预测结果为正例 (1) 的比例(查得全,对正样本的区分能力)
TP/(TP+FN)
3. F1-score: 精准率召回率的调和平均值
4. ROC曲线 : ROC_curve-->TPR/FPR值
1.ROC曲线的横轴就是FPRate,纵轴就是TPRate,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5
2.fpr(假正率、1-特效性)、tpr(真正率、灵敏度)、thresholds(阈值)
3.FPR假正率 = 预测错了/所有负类样本,越小越好。= FP/(FP+TN)
TPR真正率 = 预测真确了/所有正类样本,越大越好。= TP/(TP+FN)
4.API: roc_curve
y_score= LR_model.predict_proba(val_x)[:,1] 算验证集预测值 . LR_model.predict_proba(x),得到两组数据,[(0的概率), (1的概率)]
fpr_lr_train,tpr_lr_train,_=sklearn.metrics.roc_curve(y,y_pred)
5.KS: 算的是ROC曲线中,最大两点的距离
ks = abs(fpr - tpr).max()
0.4最差的 0.6 勉强可以用,0.7~0.8之间普通情况
5.1 AUC: 计算ROC曲线面积,即AUC值
一。AUC值= sklearn.metrics.roc_auc_score(y_true, y_score)
1.计算ROC曲线面积,即AUC值
2.y_true:每个样本的真实类别,必须为0(反例),1(正例)标记
3.y_score:预测得分(lr.predict_proba输出概率),可以是正类的估计概率、置信值或者分类器方法的返回值
4.y_score= LR_model.predict_proba(val_x)[:,1] 算验证集预测值
5.lr_model.predict_proba(x),得到两组数据,[(0的概率), (1的概率)]