-
特征工程的定义
特征工程是利用领域知识从原始数据中提取特征(特性、属性、属性)的过程。其动机是利用这些额外的特征来提高机器学习过程的结果的质量,而不是只提供原始数据给机器学习过程,即将原始数据转化成更好的表达问题本质的特征的过程,使得将这些特征运用到预测模型中能提高对不可见数据的模型预测精度。
-
特征工程的意义
特征工程是一个包含内容很多的主题,也被认为是成功应用机器学习的一个很重要的环节。如何充分利用数据进行预测建模就是特征工程要解决的问题。 实际上,所有机器学习算法的成功取决于如何呈现数据。特征工程是一个看起来不值得在任何论文或者书籍中被探讨的一个主题。但是他却对机器学习的成功与否起着至关重要的作用。机器学习算法很多都是由于建立一个学习器能够理解的工程化特征而获得成功的。
数据中的特征对预测的模型和获得的结果有着直接的影响。可以这样认为,特征选择和准备越好,获得的结果也就越好。这是正确的,但也存在误导。预测的结果其实取决于许多相关的属性:比如说能获得的数据、准备好的特征以及模型的选择。
特征工程之所以重要是因为它直接决定了机器学习算法的性能,对于量化交易员策略开发也是如此,特征工程的相关工作将直接决定策略的盈利能力。量化交易员开发策略的过程本质就是特征工程。
-
什么是特征
并不是所有的属性都可以看做特征,区分它们的关键在于看这个属性对解决这个问题有没有影响!可以认为特征是对于建模任务有用的属性。 表格式的数据是用行来表示一个实例,列来表示属性和变量。每一个属性可以是一个特征。特征与属性的不同之处在于,特征可以表达更多的跟问题上下文有关的内容。特征是一个对于问题建模有意义的属性。我们使用有意义来区别特征和属性,认为如果一个特征没有意义是不会被认为是特征的,如果一个特征对问题没有影响,那就不是这个问题的一部分。在计算机视觉领域,一幅图像是一个对象,但是一个特征可能是图像中的一行;在自然语言处理中每一个文档或者一条微博是一个对象,一个短语或者单词的计数可以作为特征;在语音识别中,一段声音是一个实例,一个特征可能是单个词或者发音。
特征重要性,可以被认为是一个选择特征重要的评价方法。特征可以被分配一个分值,然后按照这个分值排序,那些具有较高得分的特征可以被选出来包含在训练集中,同时剩余的就可以被忽略。特征重要性得分可以帮助我们抽取或者构建新的特征。挑选那些相似但是不同的特征作为有用的特征。 如果一个特征与因变高度相关,那么这个特征可能很重要。相关系数和其他单变量的方法是比较通用的评估方法。 更复杂的方法是通过预测模型算法来对特征进行评分。这些预测模型内部有这样的特征选择机制,比如MARS,随机森林,梯度提升机。这些模型也可以得出变量的重要性。
-
特征工程的流程
-
特征提取
可能由于特征矩阵过大,一些样本如果直接使用预测模型算法可能在原始数据中有太多的列被建模,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。特征提取是一个自动化的降维过程。使得特征太多的样本被建模的维数降低。
对于列表数据,可使用的方法包括一些投影方法,像主成分分析和无监督聚类算法。 对于图形数据,可能包括一些直线检测和边缘检测,对于不同领域有各自的方法。 特征提取的关键点在于这些方法是自动的(只需要从简单方法中设计和构建得到),还能够解决不受控制的高维数据的问题。大部分的情况下,是将这些不同类型数据(如图,语言,视频等)存成数字格式来进行模拟观察。
-
特征选择
首先,最简介明了的便是使用相关性,通过使用相关性,我们很容易看到特征之间的线性关系。然而,在进行特征选择时,我们不该把焦点放在数据关系的类型(线性关系)上,而是要考虑在已经给定另一个特征的情况下一个特征可以提供多少信息量。互信息会通过计算两个特征所共有的信息,把上述推理工程形式化表达出来。与相关性不同,它依赖的不是数据序列,而是数据的分布。我们需要计算每一对特征之间的归一互信息量。在进行回归的时候,我们可以把互信息量非常低的特征扔掉。对于较小的特征集合这种方式的效果或许还可以。但是,在某种程度上,这个过程会非常缓慢,计算量会以平方级别增长,因为我们要计算的是每对特征之间的互信息量。另外,还可以构建辅助模型,逐步回归就是模型构造过程中自动执行特征选择算法的一个实例,还有像Lasso回归和岭回归等正则化方法也被归入到特征选择,通过加入额外的约束或者惩罚项加到已有模型上,以防止过拟合并提高泛化能力。
-
特征构造
特征构造指的是从原始数据构造新特征的处理过程,特征构造需要不断结合具体业务情况做出合理分析,才能有根据性的构造出有用的新特征。常见的构造方法有统计构造法,是指通过统计单个或者多个变量的统计值而形成新的特征。如果某个特征与目标高度相关,那么可以根据具体的情况取这个特征的统计值作为新的特征。如果特征与特征之间存在交互影响时,那么可以聚合分组两个或多个变量之后,再以统计值构造出新的特征。对于连续数据进行离散化,常用的方法有特征二值化,即设定一个划分的阈值,当数值大于设定的阈值时,就赋值为1;反之赋值为0。还有无监督离散化,其中包等宽(宽度)分箱法和等频(频数)分箱法,或者使用聚类算法将数据聚成几类,每一个类为一个划分。对于离散数据编码化,很多算法模型不能直接处理字符串数据,因此需要将类别型数据转换成数值型数据,常见的方法有序号编码,通常用来处理类别间具有大小关系的数据。独热编码,通常用于处理类别间不具有大小关系的特征。二进制编码,二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后将类别ID对应的二进制编码作为结果。
-
特征工程与量化交易
数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已。特征工程的目的是最大限度地从原始数据中提取特征以供算法和模型使用,因此特征工程是模型构建最重要的一部分,也是工作中占用时间最大的一部分,了解技巧是一方面,更重要的是在实际工作中针对不同的场景应用特征工程,从而提高模型的效果。
随着人工智能技术的发展,越来越多的模型被用于量化投资。如何高效地筛选出适合量化投资的特征是一项重要的研究内容,也就是说量化交易员开发策略这个过程的本质就是特征工程,这里的特征工程的对象即为金融市场的数据。例如,因子投资策略中,量化交易员研究出股票收益和股票的某些因子之间存在着相关关系,这些因子便可以看作股票的特征,同时,金融市场中的股票收益可能与很多因子都存在着线性关系,但不是每种因子都能很好地解释股票收益,因此,选择适当的因子,即特征工程,对于交易策略的开发非常重要。