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

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

作者: 风图莫 | 来源:发表于2020-07-28 19:29 被阅读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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/smdqrktx.html