4.4 非线性变换
在很多种场景中,采集的数据并不一定需要以连续线性的方式呈现出来,通常需要以一些非线性的方式进行呈现,具体如下。
·考试分数的及格线。
·高等院校的录取线。
·家庭年收入划分。
诸如此类,在只需要对数据进行区间划分,或者需要表现数据内部之间的相对关系的场景下,并不需要精确的线性对应关系。在非线性变换过程中,可以摒弃一部分数据的“精度”,用离散的数学表示取代连续的数学表示,数据直接转化为类别数据或者呈现与整体数据关系的数据。
4.4.1 二值化变换
二值化变换(Binary Transform)的实现方法十分简单,设定一个阈值,当待转化的数据大于阈值时,该数据转化为1;相反,当待转化的数据小于阈值时,该数据转化为0。其公式为
其代码实现如下:
其输出结果如下:
4.4.2 分位数变换
分位数(Quantile),亦称分位点,是指用分割点将一个随机变量的概率分布范围分为几个具有相同概率的连续区间。分割点的数量比划分出的区间少1,如3个分割点能分出4个区间。常用的分位数有中位数(即二分位数)、四分位数、百分位数等。
以统计学中比较常用的四分位数为例,将所有数值由小到大排列并分成四等份,处于3个分割点位置的数值就是四分位数,如图4-3所示。
图4-3 四分位数分布图
·第一四分位数(Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
·第二四分位数(Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
·第三四分位数(Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
在机器学习中,分位数方法可用于数据预处理,而这种预处理的选择同时是由模型建立的目的所决定的,在实际的模型中,传统的线性回归模型的假设常常不被满足,如数据出现尖峰或者厚尾的分布、存在显著的异方差等情况,这时的最小二乘法估计将不再具有上述优良性,同时稳健性也不够理想。
为了弥补普通最小二乘法在回归分析中的缺陷,Koenker和Bassett于1978年提出了分位数回归(Quantile Regression)的思想。它依据因变量的条件分位数对自变量进行回归,这样就得到了所有分位数下的回归模型。
基于上述模型场景,分位数变换是分位数回归分析模型训练中必不可少的步骤。其将所有特征放在相同的已知范围或者分布(由分位数决定)中。然而,通过执行分位数变换,它平滑了不寻常的分布,比缩放方法更少受到异常值的影响,因为此时可以将样本特征的数值的绝对关系转化为相对关系。例如,学生的考试分数是绝对的,而学生的年级排名是相对的。分位数回归能够捕捉分布的尾部特征,当自变量对不同部分的因变量的分布产生不同的影响时(如出现左偏或者右偏的情况)它能更加全面地刻画分布的特征,从而得到全面分析。
相对于线性数据变换(如一些规则化方法),分位数变换的优点主要体现在以下几个方面。
(1)它对样本中的随机扰动项不需要做任何分布的假定,所以模型具有很强的稳健性。
(2)分位数变换无须一个连接函数描述因变量的均值和方差的相互关系,因此分位数变换使模型拥有比较好的弹性性质。
(3)由于分位数回归是对所有分位数进行回归,所以对数据中出现的异常点具有耐抗性。
(4)不同于普通的样本分布,分位数变换之后的数据在模型中对因变量具有单调变换性。
(5)分位数变换之后的数据具有在大样本理论下的渐进优良性。
但是,正是由于其将样本数据关系进行了变换,所以扭曲了特征内部及其之间的相关性和距离。
首先,了解分位数变换的基本实现,在展示代码之前,应先介绍Sklearn中自带的数据集包sklearn.datasets.*,其中收录了各种数据集,在下面展示的例子中使用了鸾尾花数据集,其具体实现如下:
这里暂时不打印训练集数据,有兴趣的读者可以自行在终端上打印结果,其输出结果如下:
其次,从直观上感受分位数变换对不同分布的转化情况,其代码如下:
其输出结果如图4-4所示。
图4-4 不同分布通过分位数变换前后的比较
由图4-4可以发现,原本形态各异的分布数据,通过分位数变换之后,其分布趋于统一,由此可以得知,分位数变换在某种程度上可以扭曲原有的数据形态,而得到的新数据形态更多地反映了数据之间的关系。
4.4.3 幂变换
在统计学中,幂变换(Power Transformation)主要应用于用幂函数建立数据单调变换的一系列函数。这是一种有用的数据转换技术,用于稳定方差,使数据更接近正态分布,提高关联度量的有效性,如变量之间的相关性及其他数据的稳定过程。
Sklearn模块中提供了两种变换方法:Box-Cox变换(Box-Cox Transformation)和Yeo-Johnson变换(Yeo-Johnson Transformation)。
Box-Cox变换
Box-Cox变换是Box和Cox于1964年提出的一种广义幂变换方法,是统计建模中常用的一种数据变换方法,用于连续响应变量不满足正态分布的情况。Box-Cox变换之后,可以在一定程度上减小不可观测的误差和预测变量的相关性。Box-Cox变换的主要特点是引入一个参数,通过数据本身估计该参数,进而确定应采取的数据变换形式。Box-Cox变换可以明显地改善数据的正态性、对称性和方差相等性,对许多实际数据都是行之有效的。Box-Cox变换的公式如下:
式中,为经Box-Cox变换后得到的新变量;xi为原始连续因变量,且为正数;λ为变换参数,其意义在于控制变换函数的形式,λ为0时为对数变换,λ小于0时为倒数变换,λ大于0时为多次方变换或者开方变换。当然,xi也存在为负数的情况,此时xi以xi+γ的形式呈现,γ要大到确保xi+γ严格为正。
Box-Cox变换的一个显著优点是通过求变换参数λ确定变换形式,这个过程完全基于数据本身而无须任何先验信息,这无疑比凭经验或者通过尝试而选用对数、平方根等变换方式更加客观和精确。其目的是使数据满足线性模型的基本假定,即线性、正态性及方差齐性。
Yeo-Johnson变换
Ye o-Johnson变换是Yeo和Johnson于2000年提出的一种幂变换方法,在拥有Box-Cox变换的诸多优点的基础上,还解决了xi必须为正的严格限制,从而使变换更具有普适性。
Yeo-Johnson变换的公式如下:
由上述公式可知,当xi为非负时,满足以xi+1为因变量的Box-Cox变换公式;当xi为负时,则满足以-xi+1为因变量、2-λ为幂的负的Box-Cox变换公式。本质上,Yeo-Johnson变换是对Box-Cox变换的扩展。尽管对Yeo-Johnson变换参数的解释很困难,但Yeo-Johnson变换函数族可用于选择线性或者正态变换的过程。
值得注意的是,参数λ并不是直接设定的,而是通过对参数的估计进行求解,其有两种方法,即极大似然估计和贝叶斯方法,在后面的章节中将会详细介绍这两种方法。
对幂分布的基本代码实现在此直接略过,可以参考前面介绍的变换方法,在此观察幂分布对数据本身产生的影响,其代码如下:
不同的分布通过幂变换前后的比较如图4-5所示。
图4-5 不同的分布通过幂变换前后的比较
由图4-5可知,一些完全不满足正态分布的数据,幂变换可以使转换之后的数据改善其正态性、对称性和方差相等性。
4.4.4 多项式变换
多项式变换(Polynomial Transformation)常用于线性回归场景,其本质是一种升维操作,将低维度的数据样本通过多项式变换进而成为高维度的样本,但部分高维度之间仍然存在相关性。例如,对一些样本集进行线性回归会得到如下回归结果,其回归方程如下:
y(n)=ax(n)+b
由样本分布情况可知,一次线性方程并不能很好地拟合样本数据,如果加入高次项或许会对样本数据的拟合起到一定的帮助,如图4-6所示。通过比较可以发现,相对于多项式线性回归描述数据的能力而言,一般线性回归在描述数据时存在局限性。
图4-6 一般线性回归和多项式回归的比较
图4-6中的样本是一组二维数据集{x1,x2},假设对其加入高次项,如x1x2、等,原来原始的二维数据集{x1,x2}转化为更高维度{x1,x2,…,,于是从原有的回归方程:
y(2)=ax(2)+b
扩展到:
y(2+k)=ax(2+k)+b
式中,k为增加的高次项个数。
其代码实现如下:
其输出结果如下: