机器学习构成三要素之特征

特征:机器学习的马达

Posted by Xiaosheng on March 2, 2017

本文为 Peter Flach 所著《机器学习》的读书笔记,内容基本摘自原书,部分内容有修改。

特征在很大程度上决定了机器学习应用的成败,因为模型的质量直接由特征决定。特征可被视为一种易于在任意实例上度量的测度。按照集合论的观点,特征本质上是一个从实例空间到由特征的值所构成的集合(即特征的)的映射。

由于度量结果通常都是数值型的,因此最常见的特征域为实数集。其他典型特征域的类型包括整型(像计数类型的特征,如统计某个特定词出现的频数等)、布尔型(当考虑的特征是一个对于特定实例只能取的陈述时,如“这封邮件的收件人为张三”),以及任意有限集(如各种颜色构成的集合或一组形状构成的集合等)。

假设有一组学习模型,现在依据下面的几条性质对其进行描述:

  • 它们为几何模型、概率模型或逻辑模型的程度
  • 它们是分组模型还是评分模型
  • 它们能够处理离散或实值特征的程度
  • 它们被用于有监督学习还是无监督学习
  • 它们能够处理多类问题的程度

用介于 0 和 3 之间的整数来度量每条性质,如下表所示:

模型 几何 统计 逻辑 分组 评分 离散 实值 有监督 无监督 多类
1 0 3 3 0 3 2 3 2 3
规则 0 0 3 3 1 3 2 3 0 2
朴素贝叶斯 1 3 1 3 1 3 1 3 0 3
K近邻分类器 3 1 0 2 2 1 3 3 0 3
线性分类器 3 0 0 0 3 1 3 3 0 0
线性回归 3 2 0 0 3 1 3 3 0 0
Logistic回归 3 2 0 0 3 1 3 3 0 0
支持向量机 2 2 0 0 3 2 3 3 0 0
K均值 3 2 0 1 2 1 3 0 3 1
高斯混合模型 1 3 0 0 3 1 3 0 3 1
关联规则 0 0 3 3 0 3 1 0 3 1

1 特征的两种用法

1.1 作为划分用的特征

第一种常见的特征使用方法(尤其在逻辑模型中)是重点关注实例空间中的某个特定区域。令 $f$ 为一个特征,记录了某封邮件中“保健品”出现的次数,同时令 $x$ 表示任意一封邮件,则条件 $f(x)=0$ 意味着选择不含“保健品”的邮件;$f(x) \neq 0$ 或 $f(x) > 0$ 则表示选择至少出现一次“保健品”的邮件;而 $f(x)>2$ 则表示选择至少出现两次“保健品”的邮件,以此类推。这种条件被称为二元分裂(binary split),因为它们将实例空间分为两组:一组满足条件,另一组不满足。

当然,使用非二元分裂也是可行的。例如,假设特征 $g$ 的取值规则如下:如果邮件正文的单词数不超过 20 个,其值为 tweet;如果单词数介于 21~50 个,则取为 short;如果介于 51~200,则取为 medium;如果单词数超过 200,则取为 long。这样,表达式 $g(x)$ 便表示了一个对实例空间的四路划分。在逻辑模型中我们已经了解到,这样的分裂可被整合到一棵特征树中,由此可构建出一个模型。

1.2 作为预测器的特征

特征的第二种用法比较集中地出现在有监督学习中。在线性分类器中我们提到过,线性分类器所运用的是形式为 $\sum_{i=1}^nw_ix_i>t$ 的决策规则,其中 $x_i$ 为一个数值型特征。该决策规则为线性意味着每一维特征对于待分类实例得分的贡献是彼此独立的,而贡献的大小则依赖于权值 $w_i$:如果 $w_i \gg 0$,则当 $x_i$ 为正时,得分会增加;若 $w_i \ll 0$,当 $x_i$ 为正时,得分会降低;若 $w_i \approx 0$,则 $x_i$ 的影响可以忽略。

因此,特征对于模型的最终决策所做的贡献既精确又可度量。还应注意决策时,每一维特征并未被“阈值化”,其“分辨率”被完整地运用于计算实例的得分。

对于特征我们使用了两种不同的记号:如果将特征视为应用于实例 $x$ 的函数更为方便,则我们将其记为 $f(x)$;如果将实例看做一个特征向量更为方便,我们将其记为 $x_i$。

特征的两种用法有时会在一个模型中同时出现。例如,我们希望在区间 $x \in [-1,1]$ 内逼近函数 $y=\cos \pi x$。线性逼近无法再该场合下使用,因为其最佳逼近结果只能是 $y=0$。然而,如果沿 $x$ 轴将上述区间划分为 $-1 \leq x \leq 0$ 和 $0 \leq x \leq 1$,则可以分别使用 $\hat{y}=2x+1$ 和 $\hat{y}=-2x+1$ 在每个子区间中获得对 $y=\cos \pi x$ 的合理逼近。这里,我们既把 $x$ 当做分裂特征,同时也当做回归变量加以使用。

2 特征的构造与变换

在机器学习应用中,特征往往不是对象原来就有的,它们需要开发者来构造。特征构造(feature construction)过程对于机器学习应用的成败至关重要。

例如,在垃圾邮件过滤的例子中,将其中出现的单词作为邮件的特征便是一种精心设计的内容表示方法(称为词袋模型(bag-of-word),该表示方法不考虑单词在邮件中出现的次序),它用于在垃圾邮件过滤及相关分类任务中增强“信号”的同时将“噪声”削弱。然而,如果我们希望训练一个分类器来鉴别句子的语法正确与否,很明显就不能使用这种方法。这里,词序显然是“信号”而非“噪声”,因此该场合下需要采取一种完全不同的表示方法。

依据给定特征构造模型通常是非常自然的事情,但我们也可以根据自己的需要自由地对这些特征进行修改,甚至引入新的特征。

例如,实值特征中通常包含了一些通过离散化(discretisation)便可去除的无用细节。假设,我们希望通过绘制直方图来分析一个规模较小的人群(比如 100 人)的体重数据。如果在测量时,以千克为单位并保留小数点后一位数字,那么得到的直方图将很稀疏且中间有许多毛刺。从这样的直方图中无疑很难获得任何具有一般性的结论。但如果将体重值离散化到长度为 10 千克的若干个连续区间中,情况则会大为改观。这种做法称为提高特征的信噪比(signal-to-noise ratio,SNR)

一种更为极端的特征构造情形是直接对整个实例空间进行变换。例如下图,左图中的数据显然是线性不可分的,但将实例空间映射到一个新的由原始特征的平方构成的新“特征空间”后,我们发现这组数据变得几乎线性可分了。

1

右图通过将原始数据点 $(x,y)​$ 变换为 $(x’,y’)=(x^2,y^2)​$,数据的线性可分性大大增强,利用线性决策面 $x’+y’=3​$ 便可将该组数据很好地分离。该决策面对应于原始特征空间中圆心位于原点,半径为 $\sqrt{3}​$ 的一个圆。

实际上,通过增加一个第三维特征,我们便可运用一种非常值得关注的技巧:无须实质上去构建新的特征空间,便可获得该特征空间的分类器

核技巧示例

令 $\boldsymbol{x}_1=(x_1,y_1)$、$\boldsymbol{x}_2=(x_2,y_2)$ 为二维空间中的两个数据点,利用映射 $(x,y) \mapsto (x^2,y^2,\sqrt{2}xy)$ 将其映射到一个三维特征空间中。易得这两点分别被映射为 $\boldsymbol{x}_1’=(x_1^2,y_1^2,\sqrt{2}x_1y_1)$ 和 $\boldsymbol{x}_2’=(x_2^2,y_2^2,\sqrt{2}x_2y_2)$,二者的内积为:

可见,只要将这两点在原始空间中的内积取平方,无须实际构造新的特征向量便可得到新空间中对应的内积!这种直接依据原始空间中的向量来计算新特征空间中内积的函数称为核函数。本例中用到的核函数为 $\mathbb{k}(\boldsymbol{x}_1,\boldsymbol{x}_2)={(\boldsymbol{x}_1 \cdot \boldsymbol{x}_2)}^2$。

通过修改决策面的计算方式,我们就可将核技巧运用到基本线性分类器中。在线性分类器中我们介绍过,基本线性分类器所学习到的决策面形式为 $\boldsymbol{w} \cdot \boldsymbol{x}=t$,其中 $\boldsymbol{w}=\boldsymbol{p}-\boldsymbol{n}$ 为正样本与负样本均值向量之差。

假设原空间中 $\boldsymbol{p}=(0,1)$、$\boldsymbol{n}=(0,0)$,同时假设正样本的均值是由训练样本 $\boldsymbol{p}_1=(-1,1)$ 及 $\boldsymbol{p}_2=(1,1)$ 计算得到的,即 $\boldsymbol{p}=\frac{1}{2}(\boldsymbol{p}_1+\boldsymbol{p}_2)$。现在我们需要在新的特征空间中寻找一个决策面 $\boldsymbol{w}’\cdot\boldsymbol{x}’=t$,展开得 $\frac{1}{2}\boldsymbol{p}’_1\cdot\boldsymbol{x}’+\frac{1}{2}\boldsymbol{p}’_2\cdot\boldsymbol{x}’-\boldsymbol{n}’\cdot\boldsymbol{x}’=t$。运用核函数我们可以将决策面方程重新表述为 $\frac{1}{2}\mathbb{k}(\boldsymbol{p}_1,\boldsymbol{x})+\frac{1}{2}\mathbb{k}(\boldsymbol{p}_2,\boldsymbol{x})-\mathbb{k}(\boldsymbol{n},\boldsymbol{x})=t$。由之前定义的核函数,有 $\mathbb{k}(\boldsymbol{p}_1,\boldsymbol{x})={(-x+y)}^2$,$\mathbb{k}(\boldsymbol{p}_2,\boldsymbol{x})={(x+y)}^2$,以及 $\mathbb{k}(\boldsymbol{n},\boldsymbol{x})=0$,由此可推得决策面方程 ${\frac{1}{2}(-x+y)}^2+{\frac{1}{2}(x+y)}^2=x^2+y^2=t$,即原空间中一个圆心位于原点、半径为 $\sqrt{t}$ 的圆。

在基本线性分类器的“核化”中最关键的一点是,我们并非用正样本和负样本的均值来概括训练数据,而是保留了训练数据(上例中对应 $\boldsymbol{p}_1$、$\boldsymbol{p}_2$ 及 $\boldsymbol{n}$)。因此,在对新实例进行分类时,我们便可依据该实例与每个训练样本计算出一组核函数值。通过详尽的计算,我们可以构造“灵活性”更出色的决策面。

3 特征之间的交互

特征最引人入胜且最能体现其多面性之处在于其交互方式的多样性。这样的交互,有时是可以把握的,有时可以忽略,而有时则会对建模带来极大的挑战。

在利用贝叶斯分类器过滤垃圾邮件时,已经接触过一个特征交互的例子。显然,如果我们在一封邮件中观察到了“保健品”,则该邮件中同时也包含“抗衰老”便不足为奇。如果像朴素贝叶斯分类器那样忽略特征之间的这种交互(即不同维特征之间的依赖关系),则意味着我们过高地估计了在同一封邮件中同时观测到这两个词语所带给我们的信息量。是否可以回避对这种依赖关系的建模则取决于具体的任务:在垃圾邮件分类这个任务中,这样做并无大碍。不过为了将这种效应考虑进来,我们可能需要对决策阈值进行适当调整。

特征之间的交互可以分为:正相关、负相关和不相关。正相关通常表示其中一个特征的取值增加时,另一个特征的取值也会增加;负相关则正好相反,其中一个特征的取值增加时,另一个特征的取值会减小;不相关则表示特征之间没有交互。(参见下方的数学背景知识)

数学期望与估计量

随机变量描述了随机过程的可能结果,分为离散型随机变量(例如抛掷骰子的可能结果均来自集合 ${1,2,3,4,5,6}$)和连续型随机变量(例如以千克为单位测量到的某人的体重)。随机变量的取值不一定是整数或实数,但这样的处理会给分析和计算带来许多便利,因此我们也遵循这样的假设。

若 $X$ 为一个离散型随机变量,且其概率分布为 $P(X)$,则它的数学期望(expected value)为 $\mathbb{E}[X]=\sum_xxP(x)$。例如,抛掷一个质量均匀的骰子所得到点数的数学期望为 $1\cdot\frac{1}{6}+2\cdot\frac{1}{6}+\cdots+6\cdot\frac{1}{6}=3.5$。值得注意的是,这并非一个实际所能得到的点数。在计算连续型随机变量的数学期望时,需要将求和替换为积分,将概率分布替换为概率密度函数:$\mathbb{E}[X]=\int_{-\infty}^{+\infty}xp(x)dx$。这个有些抽象的概念的主要思想是:如果我们从某个随机过程中观测到 $x_1,\cdots,x_n$,则其期望值正如我们所料,为样本均值(sample mean) $\bar{x}=\frac{1}{n}\sum_{i=1}^nx_i$,这便是著名的大数定理(law of large numbers),它由雅各布·伯努利于 1713 年首先给出严格证明。出于该原因,期望值通常被称为总体均值(population mean),但我们应意识到总体均值只是一个理论值,而样本均值只是该理论值的一个经验估计量

期望算子还可应用于随机变量的函数。例如,离散型随机变量的(总体)方差定义为

该指标度量了该随机变量在其期望值附近取值的分散程度。同时注意到

类似地,我们可以定义样本方差(sample variance):$\sigma^2=\frac{1}{n}\sum_{i=1}^n(x_i-\bar{x})^2$,该式可进一步分解为 $\frac{1}{n}\sum_{i=1}^nx_i^2-\bar{x}^2$。有时会看到样本方差被定义为 $\frac{1}{n-1}\sum_{i=1}^nx_i^2-\bar{x}^2$:这里用 $n-1$ 而非 $n$ 做分母会使得估计量稍稍偏大,其目的是对我们在计算方差时围绕的是样本均值而非总体均值进行补偿。

两离散随机变量 $X$ 和 $Y$ 的(总体)协方差的定义为 $\mathbb{E}[(X-\mathbb{E}[X])(Y-\mathbb{E}[Y])]=\mathbb{E}[X\cdot Y]-\mathbb{E}[X]\cdot\mathbb{E}[Y]$。$X$ 的方差实际上是 $Y=X$ 条件下协方差的一个特例。与方差不同,协方差的取值可正可负。协方差为正意味着两个变量趋向于同时增加或减小;协方差为负则意味着当一个随机变量的取值增加时,另一个随机变量的取值有减小的趋势。当我们获得了随机变量 $X$ 和 $Y$ 的观测量时,便可计算样本协方差(sample covariance):$\frac{1}{n}\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})=\frac{1}{n}\sum_{i=1}^nx_iy_i-\bar{x}\bar{y}$。将 $X$ 与 $Y$ 的协方差除以 $\sqrt{\sigma_X^2\sigma_Y^2}$,便得到相关系数(correlation coefficient),它的值域为 $[-1,+1]$。

在分类问题中,以类别的不同,特征之间的相关性也不尽相同。例如,在“垃圾邮件”这个类别中,两个词语的出现情况可能是正相关的,而在“普通邮件”这个类别中,这两个词语又是负相关的。这种情形下,如果忽略这两个特征之间的交互,无疑将降低分类性能。

一方面,特征之间的相关性可能会对真实模型造成干扰;另一方面,特征的相关性有时会帮助我们将精力集中于实例空间的相关区域中。

相关文章

  1. 《机器学习构成三要素之任务》
  2. 《机器学习构成三要素之模型》
  3. 《机器学习构成三要素之特征》