1.5 特征(feature)
特征中有三种算法:ChiSqSelector、VectorSlicer和RFormula为特征选择方法;
有三种方法:CountVectorizer、TF-IDF和Word2Vec组成三种文本特征抽取方法;
其余方法为特征变换。
特征变换又分5个类:
- 自然语言相关特征转换,包括:Tokenizer、Stop Words Remover、n-gram。
- 连续变量的离散化,包括:Binarizer、Bucketizer、Quantile Discretizer。
- 标准化,归一化,正则化,包括:Standard Scaler、Min Max Scaler和Max Abs Scaler、Normalizer。
- 探索最优特征组合,包括:Elementwise Product、Interaction、Polynomial Expansion。
- 标签索引的转换与特征的组合,包括:String Indexer、Index To String、Vector Indexer、One Hot Encoder、Vector Assembler、SQL Transformer。
1.5.1 卡方选择器(ChiSqSelector)
对于建立模型而言并非特征越多越好,因为建模的目标是使用尽量简单的模型去实现尽量好的效果。减少一些价值小贡献小的特征有利于在表现效果不变或降低度很小的前提下,找到最简单的模型。我们之所以用机器学习的模型去学习特征,是为了更好地预测被特征影响着的应变量(标签)。那么那些根本不会对应变量产生影响或者影响很小的特征理应事先去掉。
对于如何判断特征对应变量的影响程度大小问题,我们可以使用卡方检验对特征与应变量进行独立性检验,如果独立性高,那么表明两者没太大关系,特征可以舍弃;如果独立性小,两者相关性高,则说明该特征会对应变量产生比较大的影响,应当选择。如化妆不化妆与性别相关性问题。
ChiSqSelector用于使用卡方检验来选择特征(降维)。
1.5.2 向量分割器(VectorSlicer)
VectorSlicer用于从原来的特征向量中切割一部分,形成新的特征向量,比如,原来的特征向量长度为10,我们希望切割其中的5~10作为新的特征向量,使用VectorSlicer可以快速实现。
VectorSlicer是一个处理特征向量的变换器,并输出一个新的原始特征子集的特征向量。从向量列中提取特征,VectorSlicer接受具有指定索引的向量列,然后输出一个新的向量列,其值通过这些索引进行选择。有两种类型的索引:
- 代表向量中的索引的整数索引,setIndices()。
- 代表向量中特征名称的字符串索引,setNames()。这需要想两列具有AttributeGroup,因为要实现在Attribute的name字段匹配。
1.5.3 R公式(RFormula)
RFormula用于将数据中的字段通过R语言的Model Formulae转换成特征值,输出结果为一个特征向量和Double类型的label。当前版本中,RFormula仅支持部分R操作,包括:~ . : + _ 如:假设有a,b两列作为2个特征,y是应变量,则y ~ a + b表示线性模型:y ~ w0 + w1 * a + w2 * b,其中w0是截距。
1.5.4 计数向量化程序(CountVectorizer)
CountVectorizer和CountVectorizerModel旨在通过计数来讲一个文档转换为向量。当不存在先验字典时,CountVectorizer可作为Estimator来提取词汇,并生成一个CountVectorizerModel。该模型产生文档关于词语的稀疏表示,其表示可以传递给其他算法如LDA。
在fitting过程中,CountVectorizer将根据语料库中的词频排序选出前vocabsize个词。一个可选的参数minDF也影响fitting过程,它指定词汇表中的词语在文档中最少出现的次数。另一个可选的二值参数控制输出向量,如果设置为真,那么所有非零的计数为1,这对二值型离散概率模型非常有用。
1.5.5 词频-逆向文件频率(TF - IDF(Term Frequency - Inverse Document Frequency))
TF - IDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
目前,真正的搜索引擎等实际应用中广泛使用的是TF-IDF模型,该模型的主要思想是:如果词w在一篇文档d中出现的频率高,并且在其他文档中很少出现,则认为词w具有很好的区分能力,适合用来把文章d和其他文章区分开来。该模型主要包含了两个因素:
- 词w在文档d中的词频TF,即词w在文档d中出现的次数count(w, d)和文档d中总词数size(d)的比值:TF(w, d) = count(w, d) / size(d)
- 词w在整个文档集合D中的逆向文档频率IDF,即文档总数n与词w所出现的文档数docs(w, D)比值的对数:IDF = log( n / docs(w, D)
TF - IDF模型根据TF和IDF为每一个文档d和由关键词w(1,2...)组成的查询串q计算一个权值,用于表示查询串q与文档d的匹配度:TF - IDF = TF * IDF。