本文来自之前在Udacity上自学机器学习的系列笔记。这是第19篇,介绍了数据前处理的方法—特征选择和特征转换。
为什么需要特征选择
特征选择之所以重要,有两个原因,一个源自我们的认知,另一个是维度灾难。因为在我们的认知中,我们需要考虑数据的哪些特征是起决定性作用的。有时候我们可以找到成百上千种特征,但其中发挥作用的仅有几个到十几个。维度灾难指出训练所需数据量会随着特征维度的增加而呈指数型增加,即。所以,在学习模型时,需要对特征进行筛选,选出数量不大且发挥主要作用的特征,也就是所谓的降维的方法。
特征选择的两种方法
为了解决特征选择问题,我们可以使用两种方法,一种是过滤(Filtering),另一种是封装(Wrapping)。
过滤就是将特征输入到一个搜索算法里面,然后通过最大化某种标准,输出一部分的特征到学习模型中进行训练。以前学习过的模型当中,决策树模型可看成是过滤方法中的搜索算法,其中信息增益就是最大化的标准。通过寻求可以使得信息增益最大化的特征,我们得到学习模型所需要的特征。除了信息增益,还有其他一些标准可供选择,例如方差、熵、非冗余或者说独立的特征等;
封装则是将特征输入到搜索算法后,算法筛选出一部分的特征子集并进一步输入到学习模型中进行训练(搜索算法和学习模型封装在一起),训练结果反馈到搜索算法并对特征子集进行更新。搜索算法有爬山算法、随机、前向和后向搜索算法等;
过滤的优点是速度快,但是它不考虑学习模型;封装的优点是它考虑了模型的偏差和学习的过程,但是速度非常慢。
两个概念:相关性和有用性
相关性(Relevant)
特征是强相关的,如果去除该特征将降低BOC(Bayes Optimal Classifer)。特征是软相关的,如果它不是强相关的,但存在一个子集,当加入到该子集后将提高BOC。
有用性(Usefulness)
给定一个特定的模型,有用性的概念是用来衡量某个特征对该模型的效果的。
特征转换
特征转换是数据前处理的操作,将一组特征转换为一组新的特征,同时尽可能多地保留原始特征的信息。新的一组特征个数通常少于原来的特征数,而且可以用原始特征的一个线性表达式表示出来。特征选择属于特征转换的一个特例,经特征选择后新的特征数变少。
为什么需要执行特征转换呢?这里以信息检索为例子。信息检索中有一类叫做Ad Hoc(即席查询),比如说百度搜索,输入“机器学习”这个词,可以得到包含这个关键词的文章。这个搜索过程比表面上所看起来要复杂,因为机器不能提前知道你想要输入的关键词是什么,也就不能提前做好一些准备工作来找出存储相关文章的最佳位置(当然,目前百度已经有非常成熟的技术来根据用户的输入快速地返回结果给用户)。我们再从特征角度来思考。将每个单词作为一个特征来思考的话,会存在“同义词”和“多义词”的问题。因为有很多单词可以表达同一个意思,例如“机器学习”和“数据挖掘”,虽然词语不一样,但有可能在讨论同一个问题;或者一个单词表达多种意思,例如“Apple”,可以是一个表达水果,也可能是一家科技公司。“同义词”可能带来“去真”,而“多义词”可能带来“纳伪”。
为了解决上面的问题,一个直观的想法是,我们可以通过组合一些“同义词”来解决“去真”,比如说,我们搜索“car”关键词,想了解一些关于汽车相关的文章,为了避免搜索到关于Lisp语言的内容,我们可以组合一些单词,例如“Automobile”、“Tesla”等。
主成分分析(PCA,Principal Component Analysis)
给定数据点,PCA将旧坐标系统通过转化和轮换的方式获得新坐标系统,其中,新坐标系统中,坐标原点处于数据中心,轴的方向是方差最大化的方向,将轴移动与轴正交的方向。
主成分分析可以实现降维,即将较多的特征降低到较少的特征。
方差在统计学上,描述数据分布的范围,如果数据沿着某个方向的分布越分散,表示这个方向的方差越大。数据中的最大主成分方向就是方差最大的方向。这么做的原因是可以保留原始数据最大程度的信息。
人脸识别案例:https://scikit-learn.org/stable/auto_examples/applications/plot_face_recognition.html
sklearn的PCA库:https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html#sklearn.decomposition.PCA
独立成分分析(ICA,Independent Component Analysis)
前文所介绍的PCA是其中一种特征转换的方法,它主要研究的是特征的关联性,并通过最大化方差来得到。ICA则是最大程度地提高特征的独立性,通过将特征空间线性转换到一个新特征空间,且新特征空间的每个特征之间相互独立。
盲源分离问题(Blind Source Separation),又称鸡尾酒会问题,可以用来解释ICA。假设小明、小强、小红在一个鸡尾酒会上,他们都带着一个麦克风,每个人的麦克风会录下每个人说话的声音。最终三个麦克风都录有来自三个独立来源的声音的混合。盲源分离问题就是根据这三个混合声音样本,将每个人的声音分离出来。
每一个麦克风采样就是一个特征,这个特征由连续的时间步所录下的声音频率组成。通过将这三个特征转换为新的三个特征,其中每个特征都对应于每个人的声音,从而解决声音分离问题。
随机成分分析(RCA,Random Component Analysis)
RCA与PCA不同的是,它将旧坐标系统转换为新的坐标系统,其中新的系统的坐标轴方向是随机的。数据点投影到这个新的坐标系统,在数学上,相当于我们随机挑选了一个投影矩阵,然后计算
线性判别分析(LDA,Linear Discriminent Analysis)
LDA与PCA相同的是,也是基于某个线性坐标变换来将数据点投影到一个新的坐标系统,但不同的是,LDA是监督降维方法,即它会根据数据点的类别标签进行投影。