这可能是你能找到最全面的数据预处理介绍

本文主要介绍数据详细处理流程处理的原因,对于处理方法的原理简略。想深入了解原理可以根据这份框架深入研究思索,将框架和细节一起把握。


数据是机器学习的原料,在把数据投入机器学习模型前,我们需要对数据进行加工。正确预处理数据对模型输出结果有非常大的影响。


可以说,数据预处理是机器学习落地最麻烦但最具有挑战的环节。



数据可能存在问题


在实际业务处理中,数据通常是脏数据。


所谓的脏,指数据可能存在以下几种问题(主要问题):


  • 数据缺失 (Incomplete) :属性值为空的情况。如 Occupancy = “ ”

  • 数据噪声 (Noisy):数据值不合常理的情况。如 Salary = “-100”

  • 数据不一致 (Inconsistent):数据前后存在矛盾的情况。如 Age = “42” vs. Birthday = “01/09/1985”

  • 数据冗余 (Redundant):数据量或者属性数目超出数据分析需要的情况

  • 数据集不均衡 (Imbalance):各个类别的数据量相差悬殊的情况

  • 离群点/异常值 (Outliers):远离数据集中其余部分的数据

  • 数据重复(Duplicate):在数据集中出现多次的数据



数据预处理步骤


数据预处理,就是前一部分提到的,对脏数据的处理,主要有以下步骤:


1.数据清洗 Data Cleansing

2.数据转换 Data Transformation

3.数据描述 Data Description

4.特征选择 Feature Selection 或特征组合 Feature Combination

5.特征抽取 Feature Extraction




01 数据清洗 Data Cleansing

在数据清洗阶段,主要处理第一部分提及的缺失数据、离群点、重复数据。


1)缺失数据


缺失数据主要有以下几类:


  • Missing completely at random


缺失的概率是随机的,比如门店的计数器因为断电断网等原因在某个时段数据为空。


  • Missing conditionally at random


数据是否缺失取决于另外一个属性,比如一些女生不愿意填写自己的体重。


  • Not missing at random


数据缺失与自身的值有关,比如高收入的人可能不愿意填写收入。


处理方式主要有以下几种:


a. 删数据,如果缺失数据的记录占比比较小,直接把这些记录删掉完事。


b. 手工填补,或者重新收集数据,或者根据领域知识来补数据。


c. 自动填补,简单的就是均值填充,或者再加一个概率分布看起来更真实些,也可以结合实际情况通过公式计算,比如门店计数缺失,可以参考过往的客流数据,转化数据,缺失时段的销售额,用一个简单公式自动计算回补。


2)离群点


离群点是远离数据集中其余部分的数据,这部分数据可能由随机因素产生,也可能是由不同机制产生,对于离群点的处理,取决于离群点的产生原因及应用目的:


  • 若离群点由随机因素产生,我们忽略或者剔除离群点,

  • 若是由不同机制产生,离群点就是宝贝,是应用的重点。


此时的应用为异常行为检测。如:在银行的信用卡诈骗识别中,通过对大量的信用卡用户信息和消费行为进行向量化建模和聚类,发现聚类中远离大量样本的点显得非常可疑。


因为他们和一般的信用卡用户特性不同,他们的消费行为和一般的信用卡消费行为也相去甚远。


还有购物网站检测恶意刷单等场景也重点对离群点进行分析。


不论对离群点的处理方式为提出还是做重点研究应用,首先都需要检测出离群点。在一些机器学习包中提供了多种方法,如OneClassSVM、Isolation Forest、Local Outlier Factor (LOF),这里不展开。


3)重复数据


重复数据的处理常见方法:


如果高度疑似的样本是挨着的,可以用滑动窗口对比,为了让相似记录相邻,可以每条记录生成一个hash key, 根据key排序。




02 数据转换 Data Transformation



数据清洗阶段结束后,得到的是没有错误的数据集,接下来的数据转换阶段,我们对数据进行采样处理、类型转换、归一化。


1)采样


采样是从特定的概率分布中抽取样本点的过程。


采样在机器学习中有非常重要的应用:


  • 将复杂分布简化为离散的样本点;

  • 用重采样可以对样本集进行调整以更好地进行调整并适应后期的模型学习;

  • 用于随机模拟以进行复杂模型的近似求解或推理。

  • 采样的一个重要作用是处理不均衡数据集。


最简单的处理不均衡样本集的方法是随机采样。


采样一般分为过采样(Over-sampling)和欠采样(Under-sampling)。


随机过采样是从少数类样本集 S_min中有放回地随机重复抽取样本,随机欠采样是从多数类样本集S_max中随机选取较少样本。


两种方法的问题:


随机过采样会扩大数据规模,容易造成过拟合;


随机欠采样可能损失部分有用信息,造成欠拟合。


当总体数据量不够时,除了简化模型,我们可以借鉴随机过采样的方法,对每个类进行过采样。


具体到图像任务,还可以直接在图像空间进行变换,如可以通过对图像施加一定幅度的变换(旋转、平移、缩放、裁剪、填充、翻转、添加噪声、颜色变换、改变亮度、清晰度、对比度等),得到扩充的数据集。


此外,迁移学习也是在小数据集上进行建模的好方法。


整体准确率不适用于不平衡数据集,需要引入新的度量模式。比如:G-mean, 它会看正类上的准确率,再看负类上的准确率,然后两者相乘取平方根。


另外一种常见的度量如F-score。


2)类型转换


类型转换处理前,先看下数据的类型。


数据类型可以简单划分为数值型和非数值型。


  • 数值型有连续型和离散型。

  • 非数值型有类别型和非类别型,其中类别型特征中如果类别存在排序问题为定序型,若不存在排序问题则为定类型,非类别型是字符串型。


如:

连续型:Real values: Temperature, Height, Weight …

离散型:Integer values: Number of people …

定序型:Rankings: {Average, Good, Best}, {Low, Medium, High} …

定类型:Symbols: {Teacher, Worker, Salesman}, {Red, Green, Blue} …

字符串型:Text: “Tsinghua University”, “No. 123, Pingan Avenue” …


不同数据类型的转换方法:


  • 非数值型:需要进行类别转换,即将非数值型转换为数值型。

  • 定序型:可以使用序号编码,如成绩,分为Average, Good, Best三档,序号编码可以按照大小关系对定序型特征赋予一个数值ID,例如Average表示为1,Good表示为2,Best表示为3,转换后依旧保留了大小关系。

  • 定类型:使用独热编码,如颜色三原色,为Red, Green, Blue,独热编码可以把三原色变为一个三维稀疏向量,Red表示为(0,0,1),Green表示为(0,1,0),Blue表示为(1,0,0)。

  • 字符串型:有多种表示方式,如词袋模型(Bag of Words),TF-IDF(Term Frequency-Inverse),主题模型(Topic Model),词嵌入模型(Word Embedding)。各种表示有不同的适用场景和优缺点。

  • 在类别值较多的情况下,可以使用稀疏向量来节省空间,目前大部分算法实现均接受稀疏向量形式的输入。

  • 还有很多别的编码方式,如二进制编码等、。


3)归一化


经过类别转换后,所有数据均转为了数值型。为了消除数据特征之间的量纲影响,需要对特征进行归一化处理,使不同指标之间具有可比性。


如:分析一个人的身高和体重对健康的影响,如果使用米(m)和千克(kg)作为单位,身高在1.6-1.8m的数值范围内,体重特征在50-100kg的数值范围内,分析出来的结果会倾向于数值差别较大的体重特征。


数值型特征进行归一化可以将所有特征都统一到一个大致相同的区间内,以便进行分析。


归一化方式通常有线性函数归一化(Min-Max Scaling)和零均值归一化(Z-score Normalization)。


不是所有的数值都应进行归一化,在实际应用中,通过梯度下降法求解的模型通常需要归一化,因为经过归一化后,梯度在不同特征上更新速度趋于一致,可以加快模型收敛速度。


决策树模型并不需要,以C4.5为例,决策树在节点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的。




03 数据描述 Data Description



数据描述阶段,我们可以根据需要计算统计量和对数据进行可视化。


数据的一般性描述包括:


  • Mean:均值

  • Median:中位数,取数据排序后在中间位置的值,避免因为极端离群点影响客观评价;

  • Mode:出现频率最高的元素,其实用的比较少;

  • Variance:方差衡量数据集与其均值的偏离。


如要描述数据间的相关性可以使用Pearson correlation coefficient和Pearson chi-square进行度量。


前者适用数值数据的情况,后者适用于分类统计的情况。


数据可视化根据维度不同,有不同的图表,如:


一维数据:圆饼图

二维数据:散点图,柱状图

三维数据:三维坐标呈现

高维数据:先做转换或映射,比如用matlab的Box Plots,也可以用平行坐标呈现。




04 特征选择 Feature Selection 或特征组合 Feature Combination



熵增益(Entropy Information Gain)、分支定界(Branch and Bound)等方式


都可以进行特征选择。



还有sequential forward, sequential backward, simulated annealing(模拟退火), tabu search(竞技搜索), genetic algorithms(遗传算法)等方式做特征优化。


要提高复杂关系的拟合能力,特征工程经常把一些离散特征两两组合,构成高阶特征。


如:点击率预测问题中,原始数据有“语言”、“类型”两种特征,提高拟合能力可把语言、类型组合成二阶特征,联合预测对点击率的影响。


如何找到有意义的组合特征?有一种方法是基于决策树的组合特征寻找。


特征抽取主要有两种方式:


  • 主成分分析(Principal Component Analysis,PCA)

  • 线性判别分析(Linear Discriminant Analysis,LDA)


两者相同处为:均假设数据服从高斯分布,都使用了矩阵分解的思想。


不同之处为:PCA是无监督的算法,对降低后的维度无限制,其目标为投影方差最大;LDA是有监督的算法,降维后的维度小于类别数,其目标为类内方差最小,类间方差最大。



你可能感兴趣的:(这可能是你能找到最全面的数据预处理介绍)