Information Based
Information Based 是基于信息的特征选择,该模块共包括4种算法:信息增益(Information Gain)、基尼系数(gini)、信息增益率(Information Gain Ratio)以及对称不确定性(Symmetry Uncertainly)。.
- 信息增益公式:
- 基尼系数公式:
- 信息增益率公式:
- 对称不确定性公式:其中 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:特征的对称不确定性 。 示例:
# 特征重要度矩阵
X IGR GI MI SU
1 0.03 0.04 0.2 0.07
2 0.15 0.018 0.38 0.009
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 页面,脚本类型选择"纯文本",以下是配置文件格式:
subsample=0.6
colsample_bytree=0.9