Information Based

Information Based 是基于信息的特征选择,该模块共包括4种算法:信息增益(Information Gain)、基尼系数(gini)、信息增益率(Information Gain Ratio)以及对称不确定性(Symmetry Uncertainly)。.

  • 信息增益公式:5.7. 特征选择 - 图1
  • 基尼系数公式:5.7. 特征选择 - 图2
  • 信息增益率公式:5.7. 特征选择 - 图3
  • 对称不确定性公式:5.7. 特征选择 - 图4其中 H(X) 与 H(Y) 为信息熵, IG(X/Y) 为信息增益。

输入

  • 数据形式:Dense
  • 格式:| label | 参与计算的features | 不参与计算的features |
  • label:仅存在0或1。通过算法参数中的目标标签所在列指定。
  • 参与计算的 features:可通过算法参数特征所在列指定。
  • 不参与计算的 features:可包括不参与计算的特征。

输出

格式:| X | IGR | GI | MI | SU || Id | IGRImp | GIImp | MIImp | SUImp |

  • X:无实际意义,用来形成有效的矩阵形式。
  • IGR:标题,表示信息增益率。
  • GI:标题,表示基尼系数。
  • MI:标题,表示信息增益。
  • SU:标题,表示对称不确定性。
  • Id:被选择的特征 ID。
  • IGRImp:特征的信息增益率。
  • GIImp:特征的基尼系数。
  • MIImp:特征的信息增益。
  • SUImp:特征的对称不确定性 。 示例:
  1. # 特征重要度矩阵
  2. X IGR GI MI SU
  3. 1 0.03 0.04 0.2 0.07
  4. 2 0.15 0.018 0.38 0.009
  5. 3 0.25 0.33 0.025 0.17

参数

  • 特征所在列:表示需要计算的特征所在列,例如“1-12,15”,其说明取特征在表中的1到12列,15列,从0开始计数。
  • 目标标签所在列:根据目标标签在表中的位置,从0开始计数。
  • 并行数:训练数据的分区数、Spark 的并行数。
  • 抽样率:输入数据的采样率。

ChiSqSelector

ChiSqSelector 模块基于卡方独立性检验进行特征选择。特征选择过程将根据卡方独立性检验结果,将每个特征对应的卡方统计量按照从大到小的顺序进行排序,根据这一排序用户可指定选择的特征个数,否则系统将根据默认值提取前几个特征。该模块对连续型数据也采用离散数据的方式进行统计,并且要求目标变量和特征的数值种类个数不能超过10000。因此,对于连续型数据最好先通过离散化方式进行处理,再进行特征选择。

输入

  • 数据形式:Dense
  • 格式:| label | 参与计算的features | 不参与计算的features |
  • label:通过算法参数中的目标标签所在列指定。
  • 参与计算的 features:可通过算法参数特征所在列指定。
  • 不参与计算的 features:可包括不参与计算的特征,如果存在则保留在输出中。

输出

格式:|不参与计算的 features | 被选择的特征 |

参数

  • 特征所在列:表示需要计算的特征所在列,例如“1-12,15”,其说明取特征在表中的1到12列,15列,从0开始计数。
  • 目标标签列:目标标签所在列,从0开始计数。
  • 选择的特征个数:选择的 top 特征个数。
  • 并行数:训练数据的分区数、Spark 的并行数。
  • 抽样率:输入数据的采样率。

FeatureImpByGBDT

FeatureImpByGBDT 模块是一个基于 XGBoost 组件计算特征重要度的模块。通过用特征数据训练出集成模型从而判断特征的重要度。该模块提供了三种衡量特征重要度的指标:weight、gain 和 cover。

  • weight: 特征在所有树中出现的总次数

  • gain: 特征在所有树中出现对于模型的平均提升(Gini不纯度增益)

  • cover: 特征在所有树中平均覆盖的样本数

Spark 集群必须选择:深汕 Spark 集群-若兰。

输入

  • 数据形式:Dense 或 Libsvm
  • 格式:| label | 参与计算的features | 不参与计算的features |
  • label:通过算法参数中的目标标签所在列指定。
  • 参与计算的 features:可通过算法参数特征所在列指定。
  • 不参与计算的 features:可包括不参与计算的特征。

输出

  • 特征重要度
  • 格式:|重要度类型|Id|重要度|
  • 重要度类型:weight、gain 还是 cover。
  • Id:参与建树的特征 ID。
  • 重要度:重要度数值。
  • modelOut:新训练的 XGBoost 模型。

参数

  • 目标标签所在列:从0开始计数。
  • 特征所在列:例如“1-10,12,15”,其说明取特征在表中的第1到第10列,第12列以及第15列,从0开始计数。
  • 并行数:训练数据的分区数、Spark 的并行数。
  • 抽样率:输入数据的采样率。
  • 迭代轮数:numRound
  • 收缩步长:eta
  • 最大深度:max_depth
  • 目标函数:同 XGBoost 的目标函数,如reg:linear” 表示线性回归;“reg:logistic” 表示逻辑回归。
  • worker 数:表示 xgboost 的并发度,worker 数量<=(spark 的 executor个数) * (每个 executor 上的 core 数)。
  • XGBoost 配置文件:XGBoost 其他参数的配置,在 tesla 页面,脚本类型选择"纯文本",以下是配置文件格式:
  1. subsample=0.6
  2. colsample_bytree=0.9