[Book] ML Practice At MeiTuan

Introduction

本文主要记录一下最近在看的一本书《美团机器学习实践》,这本书和我们所熟知的PRML/MLAPP/DL Book等不同的是,它非常偏实践,而非理论,所以可作为参考书使用。一千个读者会产生一千个哈姆雷特,对这本书的评价也看读者自己吧,个人给3.5/5 ,模型层面上可能没有太大的新意,但是结合了美团的具体业务场景,所以还是推荐阅读。

问题建模

评估指标

分类指标

Precision=TPTP+FP

Recall=TPTP+FN

Accuracy=TP+TNTP+FP+FN+TN

ErrorRate=FP+FNTP+FP+FN+TN

ROC曲线的纵轴是TPR,横轴是FPR。
TPR=TPTP+FN

FPR=FPFP+TN

回归指标

  • MAE
  • Weighted MAE
    WMAE=1NNi=1wi|yipi|
  • Mean Absolute Percentage Error (MAPE)
    MAPE=100NNi=1|yipiyi|,yi0

    MAPE通过计算绝对误差百分比来表示预测效果,其取值越小越好。若MAPE=10,说明预测值平均偏离真实值10%。

  • RMSE
  • Root Mean Squared Logarithmic Error (RMSLE)
    RMSLE=1NNi=1(log(yi+1)log(pi+1))2

    RMSLE对预测值偏小的样本惩罚比对预测值偏大的样本惩罚更大。若评价指标采用RMSLE,没法直接优化RMSLE,所以通常会先对预测目标进行对数变换ynew=log(y+1),最后预测值再还原为 p=exp(pnew)1

排序指标

  • Mean Average Precision (MAP)
    AP@K=min(M,K)k=1P(k)rel(k)min(M,K)


    P(i)=ii

    其中,AP@K 代表计算前 K 个结果的平均准确率;M 代表每次排序的文档总数,可能一次返回文档数不足 K 个;P(k) 表示前K 个结果是否是相关文档,相关取1,不相关取0。

    MAP@K=Qq=1APq@KQ


    其中Q 为查询数量,APq@K 为第q 次查询的 AP@K 结果。

  • Normalized Discounted Cumulative Gain (NDCG)
    DCG@K=Kk=12relk1log2(k+1)

    IDCG@K=|REL|k=12relk1log2(K+1)

    NDCG@K=DCG@KIDCGK


    其中,NDCG@K 表示计算前K 个结果的NDCG,relk 表示第k 个位置的相关性得分,IDCG@K 是前K 个排序返回结果能得到的最佳排序结果,用于归一化DCG@K|REL|为结果集按相关性排序后的相关性得分列表。

Model Ensemble

理论分析

模型多样性度量

假设binary classification分类结果如下:
| hi=1 | hi=0 |
| :—: | :—: | :—: |
| hj=1 | a | c |
| hj=0 | b | d |

  • 不一致度量
    disi,j=b+cm

  • 相关系数
    ρij=adbc(a+b)(a+c)(c+d)(b+d)

  • Q统计
    Qij=adbcad+bc

  • K统计
    K=p1p21p2

    p1=a+dm

    p2=(a+b)(a+c)+(c+d)(b+d)m2

  • 双次失败度量
    dfij=mk=1(hi(xk)ykhj(xk)yk)m

  • KW 差异
    KW=1mT2mk=1l(xk)(Tl(xk))

  • k 度量
    k=11(T1)ˉp(1ˉp)KW

    ˉp=1mTTi=1mk=1(hi(xk)=yk)

  • 熵度量
    Entcc=1mmk=1y{1,1}P(y|xk)logP(y|xk)

    P(y|xk)=1TTi=1(hi(xk)=yk)

Feature Engineering

当获取到一批数据后,可以先做探索性数据分析,即可视化/统计分析基础统计量,来探索数据内部的规律。

对那些目标变量为输入特征的光滑函数模型,例如Linear Regression/Logistic Regression,其对输入特征的大小很敏感,因此需要做归一化。而那些Tree-based model,如Random Forest/GBDT等,其对输入特征的大小不敏感,因此不需要归一化。

对于数值特征,通常有如下处理方法:

  • 截断
  • 二值化
  • bin
  • scale
  • 缺失值处理
    • 对于缺失值,填充mean
    • 对于异常值,填充median
    • XGBoost可以自动处理缺失feature
  • 特征交叉:即让特征直接进行四则运算来获取新的特征(例如area=width×height),特征交叉可以在linear model中引入非线性性质,从而提升模型的表达能力
  • 非线性编码:t-SNE,局部线性embedding,谱embedding
  • 行统计量:mean/median/mode/maximum/minimum/偏度/峰度

对于类别特征,通常有如下处理方法:

  • 自然数编码
  • one-hot encoding
  • 分层编码
  • 散列编码
  • 计数编码:将类别特征用其对应的计数来代替
  • 计数排名编码

Filter

  • Coverage:计算每个特征的coverage(特征在training set中出现的比例),若feature的coverage很小,则此coverage对模型的预测作用不大,可以剔除。
  • Pearson Correlation:计算两个变量XY直接的相关性:
    ρX,Y=cov(X,Y)αXαY=E[(XμX)(YμY)]αXαY

    r=ni=1(XiˉX)(YiˉY)ni=1(XiˉX)2ni=1(YiˉY)2

  • Fisher score:对于分类问题,好的feature应该是在同一个category中的取值比较类似,而在不同category之间的取值差异比较大。
    Si=Kj=1nj(μijμi)2Kj=1njρ2ij

    其中,μijρij分别为特征i在类别j中的mean和variance。Fisher score越高,特征在不同类别直接的差异性越大,在同一类别中的差异性越小,则该特征越重要。
  • 假设检验:χ2统计量越大,特征相关性越高。
  • Mutual Information:MI越大表明两个变量相关性越高。
    MI(X,Y)=yYxXp(x,y)log(p(x,y)p(x)p(y))=DKL(p(x,y)||p(x)p(y))
  • 最小冗余最大相关性(mRMR):由于单变量filter方法只考虑了单特征变量和目标变量之间的相关性,因此选择的特征子集可能过于冗余。mRMR在进行feature selection时考虑了feature之间的冗余性,对跟已选择feature的相关性较高的冗余feature进行惩罚。
  • 相关特征选择(CFS):好的feature set包含跟目标变量非常相关的feature,但这些feature之间彼此不相关,对于包含k个feature的集合,CFS定义如下:
    CFS=maxSk[rcf1+rcf2++rcfkk+2(rf1f2++rfifj++rfkfl)]

Bagging

Bagging直接使用ML算法评估特征子集的效果,它可以检测出两个或多个feature之间的交互关系,而且选择的特征子集让模型的效果达到最优。Bagging是特征子集搜索 + 评估指标 相结合的方法,前者提供候选的新特征子集,后者则基于新特征子集训练一个模型,并用validation set进行评估,为每一组特征子集进行打分,然后选择最优的特征子集。

  • 完全搜索
  • 启发式搜索(greed search):feedforwad search/backward search/feedforwad + backward search
  • 随机搜索

Embedding

即与具体的ML算法结合。

  • LASSO:L1 Regularization可一定程度上做feature selection
  • Decision Tree
  • SVM
  • Random Forest
  • GBDT

Powered by Hexo and Hexo-theme-hiker

Copyright © 2018 - 2024 LucasXU All Rights Reserved.

UV : 7078 | PV : 11229