特征操作
特征操作主要是对特征的样本数据值进行修改,也可以重命名、删除、筛选特征列。同时模型训练服务集成了基于开源的交互式开发调试工具,支持用户编辑算法自定义修改特征列。模型训练服务支持的特征操作有重命名、归一化、数值化、标准化、特征离散化、One-hot编码、数据变换、删除列、选择特征、卡方检验、信息熵、新增特征、PCA。
重命名
模型训练服务特征工程支持用户修改特征名,操作步骤如下。
- 单击表头,选中需要执行重命名的一个特征列。
不支持同时选择多列进行重命名操作。
- 单击“特征操作”,从下拉框中选择“重命名”。
弹出“重命名”对话框。参数设置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 新特征名:新特征名不能与数据集中其他特征列的名称重复,且只能由字母、数字(0~9)、下划线(_)和(-)组成。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“重命名”节点。
归一化
归一化是一种简化计算的方式。模型训练服务支持三种归一化算法:
- MaxAbsScaler:将特征列的样本数据映射到[-1,1]区间上。
- MinMaxScaler:将特征列的样本数据映射到[0,1]区间上。
- StandardScaler:处理后的样本数据服从均值为0,方差为1的标准正态分布。
归一化操作过程如下。
- 单击表头,选中需要执行归一化的特征列。
- 单击“特征操作”,从下拉框中选择“归一化”。
弹出“归一化”对话框。参数配置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“归一化算法”。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“归一化”节点。
数值化
很多情况下样本数据并不是数值型,例如“性别”的值为男和女,“姓名”的值为“Alex”。这时无法执行特征操作,需要通过数值化将其转换为数值型。数值化的思路是根据特征列的样本数据的种类进行编码,数值化后样本数据为取值范围在[0,样本数据种类-1]区间内的整型数据。以特征列Sepal(样本数据为abcadc)为例,数值化后,样本数据为012032。
- 选中需要执行数值化的特征列。
- 单击“特征操作”,从下拉框中选择“数值化”。
弹出“数值化”对话框。检查“已选择特征”是否为用户选择的特征列。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“数值化”节点。
标准化
标准化支持L1_norm和L2_norm两种算法对特征列的样本数据进行处理:
- L1_norm:所有样本数据的绝对值求和作为分母;样本数据作为分子。将样本数据映射到(-1,1)区间。
- L2_norm:所有样本数据求平方和后开根号作为分母;样本数据作为分子。将样本数据映射到(-1,1)区间。
标准化操作步骤如下。
- 单击表头,选中需要执行标准化的特征列。
选中的特征列必须为数值型。
- 单击“特征操作”,从下拉框中选择“标准化”。
弹出“标准化”对话框。参数配置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“标准化算法”。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“标准化”节点。
特征离散化
特征离散化是将特征列连续的样本数据离散化为[0,离散数量-1]区间内的整型数据。
特征离散化操作步骤如下。
- 单击表头,选中需要执行特征离散化的特征列。
选中的特征列必须为数值型。
- 单击“特征操作”,从下拉框中选择“特征离散化”。
弹出“特征离散化”对话框。参数配置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“离散数量”。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“特征离散化”节点。
One-hot编码
One-hot编码定义是使用N位状态寄存器来对N个状态进行编码。直观来说,在特征工程中One-hot是将特征列根据样本数据的种类拆分成多列,将原特征列数据映射到新特征列中,样本数据相同编码为1,不同则编码为0。以特征列Sepal样本数据为(2,9,2,8,4)为例,One-hot编码后,则拆分为四列特征列,每列样本数据为:
- Sepal_2:10100
- Sepal_4:00001
- Sepal_8:00010
- Sepal_9:01000
One-hot编码操作步骤如下。
- 单击表头,选中需要执行One-hot编码的特征列。
选中列不同值的数量不能小于2,不能大于100。
- 单击“特征操作”,从下拉框中选择“One-hot编码”。
弹出“One-hot编码”对话框。检查“已选择特征”是否为用户选择的特征列。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“One-hot编码”节点。
数据变换
数据变换是通过以自然常数e为底的自然对数(log)、以自然常数e为底的指数函数(exp)对特征列的样本数据进行变换:
- log:如果当前样本数据比较大,可以通过对数函数进行变换。
- exp:如果当前样本数据比较小,可以通过指数函数进行变换。
数据变换操作步骤如下。
- 单击表头,选中需要执行数据变换的一个特征列。
选中的特征列必须为数值型,且不支持同时选中多列进行数据变换。
- 单击“特征操作”,从下拉框中选择“数据变换”。
弹出“数据变换”对话框。参数配置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“算法”。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“数据变换”节点。
删除列
特征操作支持删除数据集中指定的特征列,操作步骤如下。
- 单击表头,选中需要执行删除的特征列。
- 单击“特征操作”,从下拉框中选择“删除列”。
弹出“删除列”对话框。检查“已选择特征”是否为用户选择的特征列。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“删除列”节点。
选择特征
特征操作支持选择并保留数据集中指定的特征列,删除其余特征列。操作步骤如下。
- 单击表头,选中需要执行的特征列。
- 单击“特征操作”,从下拉框中选择“选择特征”。
弹出“选择特征”对话框。检查“已选择特征”是否为用户选择的特征列。
- 单击“确定”。
在“特征操作流总览”区域会新增一个“选择特征”节点。
卡方检验
卡方检验通过计算数据集的特征列和标签列之间的偏离程度(即卡方值)筛选出有价值的特征列。将卡方值由小到大排序,筛选出TOPN的特征列:
- 特征列与标签列之间的偏离程度越大,卡方值越大,说明特征列与标签列不符
- 特征列与标签列之间的偏离程度越小,卡方值越小,说明特征列越接近于标签列
- 如果特征列与标签列完全相等,卡方值为0,说明特征列与标签列完全符合
以投掷硬币为例,投掷一枚硬币50次,记录正面特征值和反面特征值的实际值分别是多少。假设硬币是均匀的,正面特征值的理论值是25,反面特征值的理论值也是25,如果实际投掷结果为:正面22,反面28,则卡方值为(22-25)*(22-25)/25+(28-25)*(28-25)/25=0.72。
- 选定特征列不同值的数量不能超过10000。
- 如果特征列的样本数据中存在负数,在进行卡方检验之前,系统会采用MinMaxScaler算法对特征列进行归一化。
- 如果特征列的样本数据为字符型,在进行卡方检验之前,系统会先对特征列进行数值化,再采用MinMaxScaler算法进行归一化。
卡方检验操作方法如下。
- 单击表头,选中一个特征列作为标签列。
- 单击“特征操作”,从下拉框中选择“卡方检验”。
弹出“卡方检验”对话框。参数设置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“变换特征数”,保留指定“变换特征数”的特征列。
- 单击“确定”,执行卡方检验。
在“特征操作流总览”区域会新增一个“卡方校验”节点。
信息熵
信息熵是通过计算数据集的特征列与标签列之间的相关性筛选出有价值的特征列。相关性越大,信息熵越大;相关性越小,信息熵越小。将信息熵由大到小排序,筛选出信息熵较大的有价值的特征列。
信息熵操作方法如下。
- 单击表头,选中一个特征列作为标签列。
选定列不同值数量不能超过100。
- 单击“特征操作”,从下拉框中选择“信息熵”。
弹出“信息熵”对话框。参数设置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“变换特征数”,保留指定“变换特征数”的特征列。
- 单击“确定”,执行信息熵。
在“特征操作流总览”区域会新增一个“信息熵”节点。
新增特征
新增特征支持用户基于已有的特征列,按照样本数据行的维度,通过求和、求均值,构造出新的特征列。例如,两个特征列ID1(2,7,1)和特征列ID2(3,2,7),求和后构造出的特征列为ID_SUM(5,9,8)。
选择的多列特征必须是数值型,并且没有异常值。
新增特征操作步骤如下。
- 单击表头,依次选中多个特征列。
- 单击“特征操作”,从下拉框中选择“新增特征”。
弹出“新增特征”对话框。参数设置如下所示:
- 检查“已选择特征”是否为用户选择的特征列。
- 配置“新增列名”。列名只能以字母(A~Z a~z)开头,由字母、数字(0~9)、下划线(_)、(-)组成,不能以下划线结尾,且长度为[1-50]个字符。
- 配置“新增规则”:
- sum:按照样本数据行的维度,对已选择特征列进行求和。
- mean:按照样本数据行的维度,对已选特征列的求均值。
- 单击“确定”,执行新增特征。
PCA
PCA的实质就是在尽可能代表原特征的情况下,将原特征进行线性变换,寻找数据分布的最优子空间,从而达到降维、去相关的目的。
模型训练服务支持两种主成分分析算法:
- PCA:主成分分析。将数据集从高维投影到低维,从而用极少的几个特征来涵盖大部分的数据集信息。主成分分析认为,沿某特征分布的数据的方差越大,则该特征所包含的信息越多,也就是所谓的主成分。适用于线性可分的数据集。
- KPCA:基于核函数的主成分分析。KPCA与PCA基本原理相同,只是需要先升维再进行投影,因为有些非线性可分的数据集只有在升维的视角下才线性可分。
在执行PCA之前,系统会对所有数值型的特征字段先做标准化处理。对于字段类型为text的字段,系统会先做数值化处理,然后做标准化处理。
PCA操作步骤如下。
- 单击“特征操作”,从下拉框中选择“PCA”。
弹出“PCA”对话框。参数配置如下所示:
- 转换数目:转换后的特征列数。例如,待降维的特征列有5列,配置转换数目为2后,执行PCA后,系统会计算出2个涵盖信息最多的两个特征列。
- 选择算法:PCA和KPCA。Spark开发平台不支持KPCA算法。
- 单击“确定”,执行PCA。