美文网首页工作生活数目字生存
Kaggle实战系列之"San Francisco Crime

Kaggle实战系列之"San Francisco Crime

作者: askka | 来源:发表于2019-07-02 00:08 被阅读0次

    ImBalance Data and Resampling

    \quad\;\;如前所述,源数据中犯罪类别的分布极不平衡(如下图),最高的LARCENY/THEFT与最少的TREA存在3个数量级的差别。

    Category barchart
    如下表所列,或许本身就是录入系统中的笔误所致的噪声数据(这点可从数据条的Descript描述字段中很明显的看出),因此可以考虑与加以合并。其它频数不足400的少数类别也可考虑与相近类别合并。
    本项目中记录数<400的类别及其近似类别
    No Original Category Similary Category
    39 ('TREA',6') ('TRESPASS', 7326)
    38 ('PORNOGRAPHY/OBSCENE MAT', 22) ('PROSTITUTION', 7484)
    37 ('GAMBLING', 146) ('DISORDERLY CONDUCT', 4320)妨害治安行为
    36 ('SEX OFFENSES NON FORCIBLE', 148) ('SEX OFFENSES FORCIBLE', 4388)
    35 ('EXTORTION', 256)勒索;强夺 ('ROBBERY', 23000)
    34 ('BRIBERY', 289) ('FRAUD', 16679)欺诈

    \quad\;\;类似的,参考文献《Exploratory Data Analysis And Crime Prediction In San Francisco》中也对犯罪类别做了如下调整:

    1. INDECENT EXPOSURE or OBSCENE or DISORDERLY CONDUCT then return PORNOGRAPHY/OBSCENE MAT.
    2. crime has something to do with WEAPON LAWS, the Category column has classifi ed it under OTHER OFFENSES.
    <center>Original Category containing </center> <center>New Category</center>
    Weapon Laws Deadly Tool Possession
    Bad Check, Counterfeiting, Embezzlement Fraud/Counterfeiting
    Suspicious Occ Suspicious Person/act
    Warrants Warrant Issued
    Vandalism Arson
    合并罕见类别前后柱图对比
    Alice Zheng在《精通特征工程》一书中提到了名为back-off的对于稀有类的处理方法。这是一种将所有稀有类的计数累加到一个特殊分箱的简单计数。如果类别的计数大于一个确定的阈值,则使用它自己的计数统计量;否则就是用back-off分箱的统计量。当使用back-off方法时,可添加一个表示统计量是否来自于back-off分箱的二值指示器。
    此外,对于类别不平衡数据,可以考虑利用如imblearn等进行重采样(resampling)之后再训练模型。重采样包括两大类:
    过采样:对训练集里面样本数量较少的类别(少数类)进行过采样,合成新的样本来缓解类不平衡,如SMOTE过采样(上采样)。
    欠采样:对训练集里面样本数量较多的类别(多数类)进行欠采样,抛弃一些样本来缓解类不平衡。

    欠采样(undersampling)和过采样(oversampling)

    \quad\;\;LightGBM的'is_unbalance'或'unbalanced_set'只适用于二分类任务,不适用于多类别分类任务。鉴于类别分布极不平衡,有可能在模型训练之前需用到重采样。
    \quad\;\;SMOTE Oversampling
    \quad\;\;JAIR'2002的文章《SMOTE: Synthetic Minority Over-sampling Technique》提出了一种过采样算法SMOTE(Synthetic Minority Oversampling TEchnique:合成少数类过采样技术)。概括来说,SMOTE算法是基于“插值”来为少数类合成新的样本。
    \quad\;\;SMOTE算法的具体实现:设训练集的一个少数类的样本数为T,那么SMOTE算法将为这个少数类合成NT个新样本。这里要求N必须是正整数,如果给定的N<1那么算法将“认为”少数类的样本数T=NT,并将强制N=1
    \quad\;\;考虑该少数类的一个样本i ,其特征向量为\boldsymbol{x}_{i},i \in\{ 1, \ldots, T \}
    \quad\;\;首先从该少数类的全部T个样本中找到样本x_ik个近邻(例如用欧氏距离),记为\boldsymbol{x}_{i(near)}, near \in\{1,\ldots, k\}
    \quad\;\;然后从这 k 个近邻中随机选择一个样本x_{i(nn)},再生成一个01之间的随机数\zeta_{1},从而合成一个新样本\boldsymbol{x}_{i1}
    \boldsymbol{x}_{i1}=\boldsymbol{x}_{i}+\zeta_{1} \cdot\left(\boldsymbol{x}_{i(nn)}-\boldsymbol{x}_{i}\right)
    \quad\;\;将步骤2重复进行N次,从而可以合成N个新样本\boldsymbol{x}_{inew}, \boldsymbol{new} \in \mathbf{1}, \dots, N
    那么,对全部的T个少数类样本进行上述操作,便可为该少数类合成NT个新样本。如果样本的特征维数是 2 维,那么每个样本都可以用二维平面上的一个点来表示。SMOTE算法所合成出的一个新样本x_{i1}相当于是表示样本 xi 的点和表示样本x_{i(nn)}的点之间所连线段上的一个点。所以说该算法是基于“插值”来合成新样本。

    smote theory 从重采样到数据合成:如何处理机器学习中的不平衡分类问题? 一文中建议:遇到不平衡数据集时,没有改善预测模型准确性的一站式解决方案。你可能需要尝试多个办法来搞清楚最适合数据集的采样技术。在绝大多数情况下,诸如SMOTE 以及 MSMOTE 之类的合成技术会比传统过采样或欠采样的办法要好。
    为了获得更好的结果,你可以在使用诸如 Gradeint boosting 和 XGBoost 的同时也使用 SMOTE 和 MSMOTE 等合成采样技术。
    通常用于解决不平衡数据集问题的先进 bagging 技术之一是 SMOTE bagging。这个办法采取了一种完全不同于传统 bagging 技术的办法来创造每个 Bag/Bootstrap。通过每次迭代时设置一个 SMOTE 重采样率,它可以借由 SMOTE 算法生成正例。每次迭代时,负例集会被 bootstrap。
    Smote的优点包括:
    * 通过随机采样生成的合成样本而非实例的副本,可以缓解过拟合的问题。
    * 不会损失有价值信息。
    Smote的缺点包括:
    * 当生成合成性实例时,SMOTE 并不会把来自其他类的相邻实例考虑进来。这导致了类重叠的增加,并会引入额外的噪音。
    * SMOTE 对高维数据不是很有效。
    MSMOTE重采样
    MSMOTE是 SMOTE 的改进版本,SMOTE 没有考虑数据集中少数类和潜在噪声的基本分布。所以为了提高 SMOTE 的效果,MSMOTE 应运而生。该算法将少数类别的样本分为 3 个不同的组:安全样本、边界样本和潜在噪声样本。分类通过计算少数类的样本和训练数据的样本之间的距离来完成。安全样本是可以提高分类器性能的那些数据点。而另一方面,噪声是可以降低分类器的性能的数据点。两者之间的那些数据点被分类为边界样本。
    虽然 MSOMTE 的基本流程与 SMOTE 的基本流程相同,在 MSMOTE 中,选择近邻的策略不同于 SMOTE。该算法是从安全样本出发随机选择 k-最近邻的数据点,并从边界样本出发选择最近邻,并且不对潜在噪声样本进行任何操作。
    本项目调用imbalanced程序包完成重采样。相对于采样随机的方法进行过采样, 该程序包给出了两种较为流行的升采用方法:SMOTE(Synthetic Minority Oversampling Technique)和ADASYN(Adaptive Synthetic)。其中SMOTE是对于少数类样本a, 随机选择一个最近邻的样本b, 然后从a与b的连线上随机选取一个点c作为新的少数类样本;ADASYN关注的是在那些基于K最近邻分类器被错误分类的原始样本附近生成新的少数类样本。SMOTE算法与ADASYN都是基于同样的算法来合成新的少数类样本: 对于少数类样本a, 从它的最近邻中选择一个样本b, 然后在两点的连线上随机生成一个新的少数类样本, 不同的是对于少数类样本的选择。imblearn还提供了MSMOTE算法的变体: (i) borderline1, (ii) borderline2, (iii) svm。
    此外,除重采样技术外,Scikit-learn 有许多可以使用可选的 class_weight 参数(可以设置成大于 1)的分类器; Tomek link等基于临近的方法(Neighbor-based approaches)采样;算法集成技术(Algorithmic Ensemble Techniques)都是可以考虑的方法之一。
    Category SMOTE
    重采样结果示例
    Condensed Nearest Neighbour
    Condensed Nearest Neighbour
    从上述重采样后的分布结果可见,对于多类别的分类问题,重采样的方法也许有简单粗暴之嫌。降采样(Undersampling)浪费了数据导致训练不足,而升采样(Oversampling)大概率可能导致过拟合。是否实施重采样,应结合模型特征等具体情况而定。时间允许的话利用Pipeline结合GridSearchCV,将重采样算法与模型调参综合考虑也许会有效果。
    如下表所列,或许本身就是录入系统中的笔误所致的噪声数据,这点可从数据条的Descript描述字段中勘察,因此可以考虑与考虑合并。其它频数不足400的少数类别也可考虑与相近类别合并。
    本项目中记录数<400的类别及其近似类别
    No Original Category Similary Category
    39 ('TREA',6') ('TRESPASS', 7326)
    38 ('PORNOGRAPHY/OBSCENE MAT', 22) ('PROSTITUTION', 7484)
    37 ('GAMBLING', 146) ('DISORDERLY CONDUCT', 4320)妨害治安行为
    36 ('SEX OFFENSES NON FORCIBLE', 148) ('SEX OFFENSES FORCIBLE', 4388)
    35 ('EXTORTION', 256)勒索;强夺 ('ROBBERY', 23000)
    34 ('BRIBERY', 289) ('FRAUD', 16679)欺诈

    \quad\;\;类似的,参考文献《Exploratory Data Analysis And Crime Prediction In San Francisco》中也对犯罪类别做了如下调整:

    1. INDECENT EXPOSURE or OBSCENE or DISORDERLY CONDUCT then return PORNOGRAPHY/OBSCENE MAT.
    2. crime has something to do with WEAPON LAWS, the Category column has classifi ed it under OTHER OFFENSES.
    <center>Original Category containing </center> <center>New Category</center>
    Weapon Laws Deadly Tool Possession
    Bad Check, Counterfeiting, Embezzlement Fraud/Counterfeiting
    Suspicious Occ Suspicious Person/act
    Warrants Warrant Issued
    Vandalism Arson
    合并罕见类别前后柱图对比
    参考资料

    机器学习——类不平衡问题与SMOTE过采样算法
    深度|解决真实世界问题:如何在不平衡类上使用机器学习?
    从重采样到数据合成:如何处理机器学习中的不平衡分类问题?
    Imblearn package study
    Comparison of the different under-sampling algorithms
    欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响
    imbalanced-learn

    相关文章

      网友评论

        本文标题:Kaggle实战系列之"San Francisco Crime

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