精彩人工智能相关文章,微信搜索 : robot-learner , 或扫码
机器学习建模流程涉及到几个重要的步骤,如下图所示。在下面的篇章中,我们就每一个步骤展开讨论。
获得有效的数据是建模的第一个步骤。这个过程可能是一次性的,也有可能是长期的,需要仔细的计划和执行。具体而言,建模人员应该从下面几个方面来考虑数据的获取问题:
数据清洗和转换的主要目的在于检测数据的质量,做出合理的改进,从而避免在模型实施阶段产生不必要的误差和提高质量。
首先查看和了解待建模的数据,可以通过统计分析和探索性的数据分析方法,和EDA (exploratory data analysis)等不同的方法。统计分析主要是通过统计手段,得到数据不同维度的主要统计特征,比如数据量,均值,方差,缺失值数量,最小值,最大值等。通过统计分析,可以对数据有一个基本的了解。EDA主要通过可视化的方法,更加直观查看数据的分布等特性。基本的数据可视化手段包括折线图(line chart),直方图(histogram),散点图(scatter plot),箱线图(box plot)等。如果数据量太大,可以通过随机抽样的方式,挑选数据进行可视化的分析。下面几张图展示的就是的常用的鸢尾花(iris flower)数据的四个特征的可视化展示。
下图是三种不同的鸢尾花(setosa, versicolor, virginica)的四个特征的折线图分布。四个特征分别为:sepal length (萼片长度), sepal width (萼片宽度), petal length (花瓣长度), petal width (花瓣宽度)。从这些折线图中可以清楚的看到,花瓣长度和花瓣宽度对种类有比较好的区分程度,而萼片宽度的区分程度最弱。
下图是鸢尾花四个特征的散点图,从二维平面进一步展示了特征两两组合对种类的区分性。
下图展示了鸢尾花四个特征的箱线图。箱线图是一个直观的查看特征分布是否正太分布(normal distribution)的有效手段。
偏度(skewness)是统计学上用来统计数据分布非对称程度的量化方法。下图分布显示了正偏态,正态,和负偏态的几种分布情形。
峰度(kurtosis)能够反映数据分布和正态分布相比,其峰部和尾部的区别。如果数据峰度值显著偏离0,则表明数据不服从正态分布。下图分别显示了正峰度和负峰度的两种情况。
在数据清洗过程中,我们之所以查看数据的偏度和峰度,是因为这些指标都和数据都是衡量数据是否正态分布的方法。而数据符合正态分布特性,一方面是某些算法的基本假设,因此我们运用相应算法时候有必要提前检查假设是否成立。另一方面,数据分布满足正态分布是一个优良特性,对于算法的收敛性和可解释性都很有好处。在实际建模过程中,如果某些数据维度的分布显著偏离正态,我们可以通过数据转化的手段使之尽量向正态分布靠近。一般说来,如果偏度为低中程度,比如偏度为标准误差的2-3倍,可以通过根号取值来转换。如果高度偏度,可以取自然对数或者10为基数的对数。以收入这个数据维度为例,下图示展示了正态转换的结果。
数据归一化的背景是指建模时候涉及的数据维度或者特征有很多,但是这些特征通常在不同的尺度上。比如收入可能在1千到几万,但是年龄的范围则在0-100之间。把数据归一化就是通过转换手段把所有的特征转换到相同的尺度范围以内。数据归一化的最大好处是能够让许多机器学习算法优化速度更快,比如梯度下降涉及的算法。当然有些算法,比如决策树本身对数据归一化并不敏感。是否进行数据归一化,取决模型具体运用的算法和建模人员对问题的理解和评判。
常用的数据归一化方法有两种:
其中x是待归一化的特征变量,xmin是特征变量的最小值,xmax是特征变量的最小值,x*是归一化后的新特征值,且范围在0到1之间。需要注意的是,xmin 和xmax是在历史数据的找到的最小值和最大值。当模型被应用到预测新数据时候,需要考虑出现超过历史最小值和最大值的特殊情况,从而使归一化后的新特征超出0到1的范围。因此需要事先考虑这种偶然的越界会不会对模型预测产生不利的影响,如果有潜在的风险,需要进行相应的异常处理。比如把超过1的数值设定为1。
其中x是待归一化的特征变量,μ是特征变量的均值,δ是特征变量的标准差。如果x的分布接近正态分布,则归一化后的新特征变量则近似平均值为0,方差为1的标准正态分布。
实际业务中,数据或多或少的存在缺失值,而建立的模型通常只能处理完整的数据。因此数据缺失值的合理处理至关重要。缺失值的处理应该考虑以下几个步骤和方法:
数据不平衡的现象是在分类预测的问题中,数据本身的分布使得各个类别的比例相差非常大。不平衡的现象是比较普遍的,比如反欺诈业务中,欺诈客户的比例要远远小于正常客户的比例,可以达到1:1000的水平。在数据建模时候,比较理想的情况是数据的种类相差不大,因为平衡的数据使得算法的收敛和算法的评价都相对容易和准确。在前面的模型评价章节我们曾经介绍过,不平衡的数据种类可能使得某些评价指标具有误导性。比如只看准确率的话,一个随机模型在不平衡的反欺诈业务中,准确率都可以达到99.9%。
在数据清洗的过程中,我们可以通过以下的一些手段来处理数据,从而使数据的种类相对平衡。需要指出的是,平衡数据只需要在训练模型时候使用。在评价模型的时候,用数据的真实比例更加贴近实际情况,从而更加准确。
根据对不同种类的处理,可以有两种不同方法:
不同的算法对数据不平衡的处理效果是不一样的,通常而言,决策树相关的算法能更好的处理不平衡数据。这是因为决策树是基于规则,它的结构决定了它可以自动学习不同种类的特征,而不完全依赖于数据量。
3. 调整算法惩罚权重
通过改变算法中对每个类别的惩罚权重,可以对分类器的小类样本数据增加权值,降低大类样本的权值。这种算法比如penalized-SVM和penalized-LDA算法。