2.2常用算法--逻辑回归(分类/解决二分类问题)

2020-07-28  本文已影响0人  风图莫

☆☆☆☆☆逻辑回归 (LR)(分类/解决二分类问题)

一. sigmoid函数(逻辑回归函数)

image.png

1.t 就是线性回归 h(w) = w1x1 + w2x2+..+b

   - 和线性回归之间的联系
     -- 线性回归的结果带入到sigmoid函数中,把结果的取值范围映射到了[0,1]之间
     - 逻辑回归的损失函不一样,对数似然损失

2.☆☆☆损失函数推导

  cost = -ylog(p)-(1-y)log(1-p)

  1.回归函数 h(x) image.png

  2.过程1 :求损失,将y值代入上式子,求最大损失函数

  cost 为损失 其中y为 真实值(二分值0/1),p 为 逻辑函数预测 概率 image.png

  -当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)=−(ylog​y​​​)−(1−y)log(1−​y​^​​)

     image.png

  3. 过程二,合并 image.png

  需要注意的点

    不能有缺失
    也要归一化/标准化
    类别性变量可以考虑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) image.png

      _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) image.png

  2. 召回率:查全率 Recall: 检验TPR

     全部好瓜有多少比例被挑出来,查全率
      本身是1的有多少被查出了
     针对样本数据: : 预测正样本/ 预测正确的(真正例+ 真反例)

     真实为正例的样本 (1) 中预测结果为正例 (1) 的比例(查得全,对正样本的区分能力)

                                             TP/(TP+FN)

   3. F1-score: 精准率召回率的调和平均值 image.png

   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的概率)]

     二。AUC的范围在[0, 1]之间,并且越接近1越好,越接近0.5属于乱猜

四。 Finally 思维导图

image.png
上一篇下一篇

猜你喜欢

热点阅读