学习 Spark MLlib 特征工程(一):RFormula

RFormula 借鉴了 R 语言的 R model formula 进行特征选择。RFormula 仅支持部分 R 操作,包括:

  • ~ 分隔因变量(LHS 左侧)和自变量(RHS 右侧);
  • + 合并变量,+0 意为移除截距;
  • - 移除变量,-1 意为移除截距;
  • : 变量相交,(数字型值相乘,类别型值二值化);
  • . 除了因变量的所有变量。

对于字符型数据,RFormula 使用 StringIndexer 转为 double 类型,然后执行 OneHotEncoderEstimator

对于数字型数据,RFormula 将其转为 double 类型。

举🌰

样例数据:

id country hour clicked
7 "US" 18 1.0
8 "US" 18 1.0
9 "US" 18 1.0

字符型数据

Formula:

clicked ~ country  

结果:

label features
1.0 (2,[],[])
0.0 [1.0,0.0]
0.0 [0.0,1.0]

先 StringIndexer 再 OneHotEncoderEstimator。

合并

Formula:

clicked ~ country + hour  

结果:

label features
1.0 [0.0,0.0,18.0]
0.0 [1.0,0.0,12.0]
0.0 [0.0,1.0,15.0]

移除

Formula:

clicked ~ . - id  

结果:

label features
1.0 [0.0,0.0,18.0]
0.0 [1.0,0.0,12.0]
0.0 [0.0,1.0,15.0]

可见,clicked ~ . - id 等价于 clicked ~ country + hour