AutoAI可自动准备数据、应用算法或估算器,并建立最适合您的数据和用例的模型管道。
下文将介绍生成管道的一些技术细节,并提供一份研究论文清单,介绍AutoAI是如何设计和实施的。
为训练准备数据(数据预处理)
在自动数据准备或预处理过程中,AutoAI会分析训练数据,为模型选择和管道生成做好准备。 大多数数据集都包含缺失值,但机器学习算法通常不希望出现缺失值。 xgboost 第3.4节介绍了这一规则的例外情况。 AutoAI算法通过各种技术对数据集进行各种缺失值替换,使数据为机器学习做好准备。 此外,AutoAI还能根据数据类型(如分类或数字)对特征进行检测和分类。 它探讨了基于特征分类的编码和缩放策略。
数据准备包括下列步骤:
特征列分类
- 检测特征列的类型,并将其分类为分类或数字类
- 检测各种类型的缺失值(缺省缺失值、用户提供的缺失值以及离群值)
特征工程
- 处理缺失目标值的行(删除(缺省)或目标插补)
- 删除唯一值列(日期时间和时间戳记除外)
- 删除常量值列
预处理(数据插补和编码)
- 应用 Sklearn 插补/编码/扩展策略(在每个特征类上单独应用)。 例如,产品中使用的缺失值估算策略的当前默认方法是分类变量的 "
most frequent
和数值变量的 "mean
。 - 处理在训练集合中不可见的测试集合标签
- HPO 功能:根据数据集和算法优化估算/编码/缩放策略
自动模型选择
AutoAI实验训练的第二阶段是自动模型选择。 自动模型选择算法采用上界数据分配策略。 这种方法在一大套算法中依次分配小的训练数据子集。 我们的目标是选择一种算法,在对所有数据进行训练时,它能提供接近最优的准确率,同时还能最大限度地降低错误分配样本的成本。 该系统目前支持所有 Scikit-learn 算法以及流行的 XGBoost 和LightGBM算法。 在大型数据集上训练和评估模型的成本很高。 从小规模子集开始,逐步将更大规模的子集分配给在数据集上运行良好的模型,这种方法既节省时间,又不影响性能。为了进一步提高性能,该系统还添加了 Snap 机器学习算法。
为模型选择算法
选择算法以匹配模型的数据和性质,但如果为该选项配置了模型,它们也可以平衡运行时的准确性和持续时间。 例如,Snap ML 算法通常比 Scikit-learn 算法更快速。 对于需要优化训练以缩短运行时间和提高准确性的情况,AutoAI通常会自动选择这些算法。 如果优先考虑训练速度,您可以手动选择算法。 有关详细信息,请参阅 Snap ML 文档。 有关SnapML算法何时有用的讨论,请参阅这篇有关使用SnapML算法的博文。
用于分类模型的算法
这些算法是用于分类问题模型选择的默认算法。
算法 | 描述 |
---|---|
决策树分类器 | 将对某个项目的观察结果(以分支表示)映射到对该项目目标值的结论(以叶片表示)。 支持二元和多类标签,以及连续和分类特征。 |
额外树分类器 | 基于随机决策树的平均算法。 |
梯度提升树分类器 | 以一个决策树的形式生成分类预测模型。 它支持二进制标签以及连续和分类特征。 |
LGBM 分类器 | 使用基于叶子生长(水平)树的学习算法的梯度提升框架。 |
Logistic 回归 | 分析一个数据集,其中一个或多个独立变量决定两个结果中的一个。 仅支持二元 Logistic 回归 |
随机林分类器 | 构造多个决策树以生成作为每个决策树的模式的标签。 它支持二元和多类标签,以及连续和分类特征。 |
SnapDecisionTreeClassifier | 该算法利用IBMSnap ML 库提供了一个决策树分类器。 |
SnapLogisticRegression | 该算法使用IBMSnap ML 解算器提供正则化逻辑回归。 |
SnapRandomForestClassifier | 该算法使用IBMSnap ML 库提供随机森林分类器。 |
SnapSVMClassifier | 该算法通过使用IBMSnap ML 解算器提供正则化支持向量机。 |
XGBoost 分类器 | 精确确保可用于分类问题的过程。 XGBoost 模型应用于多个领域,包括网络搜索排名和生态学。 |
SnapBoostingMachineClassifier | 用于二元和多类分类任务的提升机,将二元决策树与带有随机傅立叶特征的线性模型相结合。 |
用于回归模型的算法
这些算法是用于回归问题自动模型选择的默认算法。
算法 | 描述 |
---|---|
决策树回归 | 将有关项的观测值(在分支中表示)映射到有关项的目标值的结论(在叶中表示)。 支持连续和分类特征。 |
额外树回归 | 基于随机决策树的平均算法。 |
梯度提升回归 | 以一个决策树的形式生成回归预测模型。 支持连续和分类特征。 |
LGBM 回归 | 使用基于树的学习算法的梯度提升框架。 |
线性回归 | 对标量因变量 y 与一个或多个解释性变量(或自变量)x 之间的线性关系建模。 |
随机林回归 | 构造多个决策树以生成每个决策树的平均值预测。 支持连续和分类特征。 |
脊线 | 脊线回归类似于普通最小二乘法,但对系数大小施加惩罚。 |
SnapBoostingMachineRegressor | 该算法通过使用IBMSnap ML 库提供了一种增强型机器,可用于构建决策树集合。 |
SnapDecisionTreeRegressor | 该算法利用IBMSnap ML 库提供决策树。 |
SnapRandomForestRegressor | 该算法利用IBMSnap ML 库提供随机森林。 |
XGBoost 回归 | GBRT 是一种可用于回归问题的准确且有效的现成过程。 梯度树提升模型被用于多个领域,包括网络搜索排名和生态学。 |
按模型类型划分的度量
以下指标可用于衡量管道在训练和数据评分过程中的准确性。
二元分类度量
- 准确性(缺省用于对管道进行排名)
- 受试者工作特征曲线下面积
- 平均精度
- F
- 负对数损失
- 精度
- 查全率
多类分类度量
多类模型的度量标准会根据指定度量标准对管道的性能进行评分。 例如,F1分数是精确度(在所做的预测中,有多少正面预测是正确的)和召回率(在所有可能的正面预测中,有多少预测是正确的)的平均值。
您可以通过限定分数来进一步完善分数,以计算全局(宏观)、每个标签(微观)的给定指标,或对不平衡的数据集进行加权,使其更有利于具有更多代表性的类别。
- 带有微型限定符的度量指标通过计算真阳性、假阴性和假阳性的总数来计算全局度量指标。
- 使用宏限定符的度量值计算每个标签的度量值,并找出它们的非加权平均值。 所有标签的权重相等。
- 使用加权限定符的度量方法会计算每个标签的度量值,并根据每个类别的贡献度加权求出平均值。 例如,在一个包含苹果、桃子和李子类别的数据集中,如果苹果的实例较多,那么加权指标就会更重视对苹果的正确预测。 这就改变了宏观的标签不平衡。 对不平衡数据集使用加权指标,如F1-weighted。
多类分类度量如下所示:
- 准确性(缺省用于对管道进行排名)
- F1
- 微 F1
- 宏 F1
- 加权 F1
- 精度
- 微精度
- 宏精度
- 加权精度
- 查全率
- 微查全率
- 宏查全率
- 加权查全率
回归度量
- 负均方根误差(缺省用于对管道进行排名)
- 负平均绝对误差
- 负均方根对数误差
- 可释方差
- 负均方误差
- 负均方对数误差
- 负中值绝对误差
- R2
自动化特征工程
AutoAI流程的第三个阶段是自动特征工程。 自动特征工程算法以 Cognito 为基础,在研究论文《Cognito:监督学习的自动特征工程》和《使用强化学习进行预测建模的特征工程》两篇论文中所述。 该系统以分层和非穷尽的方式探索各种特征构建选择,同时通过探索-开发策略逐步实现模型准确性的最大化。 这种方法的灵感来自于特征工程的 "试错 "策略,但由自主代理代替人类来执行。
用于特征重要性的度量
对于基于树的分类和回归算法,如决策树、额外树、随机森林、XGBoost、梯度提升和 LGBM,特征重要度是其固有的特征重要度分数,基于用于选择分割点的标准的减少,并在这些算法对训练数据进行训练时计算得出。
对于 Logistic 回归、LInear 回归、SnapSVM,和 Ridge 等非树算法,特征导入量是在与非树算法相同的训练数据上训练的随机森林算法的特征导入量。
对于任何算法,所有特征重要性都在 0 到 1 之间,并已归一化为相对于最大特征重要性的比率。
数据转换
在特征工程方面,AutoAI采用了一种新颖的方法,以结构化、非穷尽的方式探索各种特征构建选择,同时通过强化学习逐步实现模型准确性的最大化。 这就为数据生成了最符合模型选择步骤算法的优化转换序列。 下表列出了一些常用的转换,以及一些众所周知的有用条件。 这不是变换有用的场景的详尽列表,因为这可能复杂且难以解释。 最后,列出的方案不是如何选择变换的说明。 以反复试验、面向性能的方式完成要应用的变换的选择。
Name | 代码 | 函数 |
---|---|---|
主体组件分析 | pca | 减少数据维度,并在更合适的坐标系上重新对齐。 有助于解决线性相关数据中的 "维度诅咒 "问题。 其消除冗余,并分离数据中的重要信号。 |
标准定标器 | stdscaler | 根据标准范围对数据特征进行缩放。 这有助于提高某些学习算法和其他转换(如 PCA)的功效和效率。 |
对数 | 记录 | 降低特征中的右偏度,并使其更对称。 生成的特征对称可帮助算法更好地理解数据。 基于平均值和方差的均匀缩放对于对称数据更有意义。此外,它还能捕捉特征与目标之间的特定物理关系,而这种关系通过对数来描述最为恰当。 |
多维数据集根 | cbrt | 降低算法之类的数据中的右偏度,但是比其影响的对数更弱,在某些情况下可能更适合。它也适用于对数不适用的负值或零值。多维数据集根也可能更改单位,例如,将卷缩小为长度。 |
平方根(Q) | sqrt | 减少数据中的轻微右偏度。 它比对数或多维数据集根弱。 它可以使用零,并将面积等空间维度缩小为长度。 |
正方形 | square | 适度降低左偏度,使此类分布更加对称。 它还有助于捕捉某些现象,如超线性增长。 |
产品 | 产品 | 与单个特征值相比,两个特征值的乘积可以揭示一种非线性关系,从而更好地预测目标值。 例如,商品成本和销售商品数量比任何一项都更能说明企业的规模。 |
数字 XOR | nxor | 这种变换有助于捕捉变量之间的 "排他性析取 "关系,类似于比特 XOR,但在一般的数值上下文中。 |
总和 | 总和 | 有时,两个特征之和与预测目标的相关性比单个特征更强。 例如,将不同来源的贷款加在一起,就能更好地了解信贷申请人的负债总额。 |
除 | divide | 除法是一种基本运算符,用于表示诸如 GDP 总值除以人口(人均 GDP)等数量,比单纯的 GDP 或单纯的人口更能代表一个国家的平均寿命。 |
最大值 | max | 取两个值中的较大值。 |
舍入 | round | 这种转换可视为扰动或添加一些噪音,以减少可能因观测不准确而导致的过拟合。 |
绝对值 | abs | 只考虑大小而不考虑观测值的符号。 有时,观察结果的方向或符号并不重要,重要的是观察结果的大小,例如物理位移,同时还要考虑实际运动所消耗的燃料或时间。 |
双曲正切 | tanh | 非线性激活函数可以提高预测精度,与神经网络激活函数类似。 |
正弦 | sin | 可调整数据以发现周期性趋势,例如,简谐运动。 |
餘弦 | cos | 可调整数据以发现周期性趋势,例如,简谐运动。 |
正切 | tan | 三角正切变换通常可以与其他变换配合使用。 |
特征聚集 | 特征合并 | 根据距离或亲疏程度将不同的特征进行分组,便于学习算法进行分类。 |
S 型 | sigmoid | 非线性激活函数可以提高预测精度,与神经网络激活函数类似。 |
隔离林 | isoforestanomaly | 通过使用“隔离林”创建新特征(其中包含每个样本的异常分数)来执行聚类。 |
词到向量 | word2vec | 该算法用于文本分析,在所有其他转换之前使用。 它以文本语料库为输入,输出一组向量。 通过将文本转换为数字表示形式,它可以检测和比较相似词。 使用足够的数据进行训练后,word2vec 可以准确地预测单词的含义或与其他单词的关系。 预测结果可用于分析文本和预测情感分析应用中的含义。 |
超参数 优化
AutoAI的最后阶段是超参数优化。 AutoAI方法会优化前几个阶段中性能最佳的管道参数。 具体做法是使用名为 RBFOpt 的黑盒超参数优化器,探索这些管道的参数范围。 RBFOpt 在研究论文RBFOpt: an open source library for black-box optimization with costly function evaluations 中有所描述。 RBFOpt 适用于AutoAI实验,因为它是为评估成本较高的优化而构建的,例如在训练和评分算法的情况下。 RBFOpt 方法建立并迭代完善未知目标函数的代理模型,尽管每次迭代的评估时间较长,但收敛速度很快。
AutoAI 常见问题及解答
以下是有关创建 AutoAI 试验的常见问题及解答。
创建多少个管道?
两个 AutoAI 参数确定管道数:
max_num_daub_ensembles:所选算法的最大数量(按 DAUB 模型选择排名前 K 个),或要在管道组合中使用的估计量类型,例如,LGBMClassifierEstimator、XGBoostClassifierEstimator 或 LogisticRegressionEstimator。 缺省值为 1,其中仅使用按模型选择算法排名最高的类型。
num_folds:除完整数据集外,用于训练管道的完整数据集的子集数量。 缺省值为 1,用于训练完整数据集。
对于每种折叠和算法类型,AutoAI都会创建四个细化程度更高的管道,分别对应于
- 具有此算法类型的缺省 sklearn 参数的管道
- 使用 HPO 优化算法的管道
- 具有优化的特征工程的管道
- 利用 HPO 优化特征工程和优化算法的管道
生成的管道总数为
TotalPipelines= max_num_daub_ensembles * 4, if num_folds = 1:
TotalPipelines= (num_folds+1) * max_num_daub_ensembles * 4, if num_folds > 1 :
将哪种超参数优化应用于我的模型?
AutoAI采用基于模型的无衍生全局搜索算法,称为RBfOpt,该算法专为超参数优化 (HPO) 所需的高成本机器学习模型训练和评分评估而定制。 与将贝叶斯模型与未知目标函数进行拟合的贝叶斯优化相比,RBfOpt 拟合径向基函数模式以加速发现超参数配置,这最大限度地提高眼前机器学习问题的目标函数。 通过使昂贵训练数量降至最低并对机器学习模型评估进行评分,同时消除计算部分派生的需求,实现此加速。
对于每种折叠和算法类型,AutoAI 创建使用 HPO 来优化算法类型的两个管道。
- 第一种是根据预处理(估算/编码/缩放)数据集(上述管道 2)优化该算法类型。)
- 第二个管道根据预处理(估算/编码/缩放)数据集的优化的特征工程来优化算法类型。
AutoAI生成的所有管道算法的参数值都会在状态消息中公布。
有关 RbfOpt 算法的更多详细信息,请参阅:
如何计算特征显著性?
在配置分类或回归实验时,可以选择性地指定如何处理对模型没有影响的特征。 可以选择始终移除特征、在提高模型质量时移除特征或不移除特征。 特征显著性的计算方法如下
- 根据数据样本计算特征重要性。
- 有些估算器没有返回特征导入值的内置功能。 在这种情况下,使用RandomForest等估计器来衡量影响。
- 特征的数量很重要--如果某个特征的重要度值为0.0000000001,但存在大量低重要度特征(例如,超过 200 个),那么保留或删除这些特征会对实验结果产生一定影响。
在自动模式下,可通过以下步骤验证去除低重要性特征不会影响实验结果:
- 如果去除所有重要度为 0 的特征会对模型的准确性造成一定影响,则会对这些特征采用主成分分析算法,选出能解释这些不重要特征 90% 方差的前 K 个成分。
- 然后,将转换后的成分作为新的特征来代替原始特征,并再次对模型进行评估。
- 如果精确度仍有下降,则将所有原始特征添加回实验中。
研究参考资料
本列表包括一些基础研究文章,这些文章进一步详细介绍了如何设计和实施AutoAI,以提高自动建模过程的信任度和透明度。
后续步骤
父主题: AutoAI概述