zoukankan      html  css  js  c++  java
  • 特征工程

    特征工程是将原始数据转变为模型的训练数据的过程,目的是为了获取更好的训练数据特征。特征工程在机器学习中占有非常重要的作用,也是数据分析工作中最消耗时间与精力的一部分工作。

    特征工程主要包括特征的获取、特征处理、特征监控三大部分,其中特征处理为特征工程的核心。

    一、特征获取

    特征获取方案应包括特征如何获取以及如何存储

    二、特征处理

    特征处理包括特征清洗、特征预处理两部分内容

    (1)特征清洗

      (a)重复值识别与处理(drop_duplicate)

      (b)缺失值识别与处理

        连续型变量,可以选择平均值或者中位数来填充缺失值;

        离散型变量,一般选择众数填充缺失值

      (c)异常值识别与处理

        可以通过绘制散点图识别异常值;

        可以通过聚类筛选异常值,如果某个簇样本数很少,且距离其它簇较远,则极有可能为异常值样本;

        可以通过异常点检测方法(iForest或one class SVM);

        筛选出的异常点最好找懂业务的人确认,防止误删,影响模型效果

      (d)数据不均衡

        如果训练集中的各个类别样本数量不是大约相同的比例,拟合出来的模型对于训练集中样本数少的类别泛化能力会很差,需要解决数据不平衡问题。

    • 权重法:可以通过调整类别的权重来解决此问题,具体为针对训练集中的每一个类别加一个类别权重class_weight,该类别样本数量越多,也可以对每个样本加样本权重sample_weight。在sklearn中,绝大多数分类算法都有class_weight和sample_weight超参数供使用
    • 采样法:两种思路,一是针对样本数量多的类别做子采样,二是对样本数量少的类别做过采样,但两个方法均存在问题,采样后改变了训练集分布,导致泛化能力差。于是衍生出第三种方法,人工合成样本(SMOTE)

    (2)特征预处理

    (a)单个特征

    归一化与标准化:解决量纲的不同,加快迭代速度

    特殊特征处理:有时候需要针对时间、地址、名称等特征进行特殊处理,从中提取部分信息作为特征值

    离散特征连续化:逻辑回归、线性回归等模型需要连续型特征值,可以采用都热编码、哑变量进行处理

    离散特征离散化:sklearn中只接受数值型变量,有些定类变量需要先转化为数值型变量,例如高、中、低。可以采用都热编码或者哑变量处理方式

    连续特征离散化:数据压缩,分箱。可以采用决策树、GBDT等高级方法进行分箱

    (b)多个特征

    特征选择:从所有特征中选取部分特征作为训练集,选择前后特征的值不发生变化。

    特征提取(降维):通过映射(空间变换)将高维数据映射到低维空间,特征的值也会随着空间变换发生相应变化。主要的降维方法包括PCA(无监督降维方法,有前提假设是方差越大包含的信息越多,但有时方差较小的特征可能正好能决定分类,容易被剔除掉)、LDA(有监督降维技术,其主要思想为:投影后类内方差最小,类间方差最大,降维最多降到类别数k-1维度)

    (c)衍生特征

    特征加减乘除得到新特征

    三、特征监控

    查看特征的重要性及权重,防止特征质量下降,影响模型效果

  • 相关阅读:
    python的gui库tkinter
    python图像处理库Pillow基本使用方法
    github配置SSH proxy
    python的pandas库读取csv
    学习app开发思路
    shell脚本中四则运算
    shell脚本实例三
    shell脚本实例二
    shell脚本实例一
    LINUX系统下的shell命令---grep、sed、awk
  • 原文地址:https://www.cnblogs.com/dearL/p/9484843.html
Copyright © 2011-2022 走看看