自定义个体插件

以下各节介绍 Driverless AI 的个体插件功能。

了解个体插件

在 Driverless AI 中,每个已完成的实验都会 自动为该实验生成 Python 代码对应于用于构建最终模型的个体。可以离线编辑这段自动生成的 Python 代码并将其上传为插件,或使用内置的 custom recipe management editor 编辑并保存它。此功能能够以代码优先的方式访问相当一部分的 DAI 内部转换器和模型生成过程。

个体插件包含有关模型类型、模型超参数、输入特征的数据科学类型、使用的转换器和转换器参数的信息。它是一个通过在 DAI`s genetic algorithm 的上下文中突变而进行演变的对象。个体插件可以通过 Include specific individuals 参数在 DAI 的 专家设置 中使用。

此特征支持使用 DAI 1.7.2 或更高版本进行的实验。

使用自定义个体

自定义个体可以按原样运行,与其他模型或个体一同进化,或者被冻结并在最终进化阶段与实验中的其他模型一起按原样包括在内。

  • 按原样: 要按原样集成自定义个体,将 enable_genetic_algorithm 设置为关闭。注意,要获取可再现的结果,将可再现性设置为开启,并确保选择相同的准确度旋钮设置(因为准确性设置会影响内部交叉验证折叠数据分配)。

  • 与其他模型或个体一同演化: 这是默认行为,其中,自定义个体的行为类似于标准内部 DAI 个体,其特征和模型超参数在 genetic algorithm 过程中根据实验设置发生了突变。

  • 冻结的个体: 自定义个体的行为默认情况下类似于标准内部 DAI 个体,其特征和模型超参数在演化过程中发生了突变。要禁用特征和模型超参数的突变,并在 DAI 遗传演变过程中 “冻结” 自定义个体,设置 self.params 值(在代码中):

    self.params = {'prob_perturb_xgb': 0,
                  'prob_add_genes': 0,
                  'prob_prune_genes': 0,
                  'prob_prune_by_features': 0,
                  'prob_addbest_genes': 0,
                  'prob_prune_by_features': 0}
    

    若实验中的所有个体都被 冻结,则不会对它们执行 调优或演变。可以通过修改 Ensemble Level for Final Modeling Pipeline 专家设置,指定要与集成中任何其他个体包含在一起的此类个体的数量。

从实验中获取个体插件

在 Driverless AI 中,每次实验都会自动为最佳个体(或模型)生成可编辑的 python 代码。以下部分介绍如何为已完成的实验获取个体插件代码。

  • 从已完成的实验:从已完成的实验页面中,点击 调优实验 下拉菜单,然后选择 创建个体插件。将个体插件 上传 为自定义插件。选择此选项后,个体插件将在 插件 页面中和 包括特定个体 设置下的“专家设置”中变为可用。或直接将个体插件 Python 文件 下载 至您的本地文件系统。您可将下载的个体插件添加至 DAI,方法是点击主导航栏中的 插件,然后点击 添加自定义插件 -> 从计算机

    Create Individual Recipe
  • 从实验列表页面:点击要为其创建个体插件的实验旁的下拉按钮,选择 创建个体插件 选项。

    Create Individual Recipe
  • 从下载的摘要:包含个体插件 Python 文件,作为每个已完成实验的摘要文件的一部分。要下载摘要文件,点击任何已完成实验的 下载摘要和日志 按钮。个体插件文件名遵循此约定 final_indiv0.py

    Download Summary & Logs button

在实验中包括特定个体

创建新实验时,可以通过专家设置直接从计算机中上传下载的个体插件(zip 或 .py 文件)。

Include specific individuals

可执行以下步骤,使用 Include specific individuals 专家设置包含已上传的个人插件。

  1. 在“实验设置”页面上,点击 专家设置。将显示“专家设置”窗口。

  2. 点击 插件 选项卡,然后点击 包括特定个体 专家设置的 选择值

  3. 选择您想要包括在实验中的自定义个体,然后点击 完成

  4. 在“专家设置”窗口中,点击 保存。实验预览将更新,以反映包括的选定自定义个体。

    Include specific individuals

个体插件示例

用户可以自行创建个体插件,也可以编辑预先存在的个体插件。Driverless AI recipes GitHub repository 列示了一些示例。

最少必要参数

以下是自定义个体插件的最少必要参数的列表:

  • 模型类型: 指定模型类型。例如:

self.model_display_name = 'LightGBM'
  • 模型参数: 指定模型的参数。例如:

self.model_params = {'eval_metric': 'auc', 'objective': 'binary'}
  • 基因组: 指定基因的所有有效参数。例如:

def set_genes(self):
    params = {'num_cols': ['PAY_0'], 'random_state': 159699540}
    self.add_transformer('OriginalTransformer', **params)

对于有关遗传算法的 Driverless AI 实施的信息,请参阅 Driverless AI 中的遗传算法

以下是使用 Credit Card dataset 的自定义个体插件的示例:

from h2oaicore.ga import CustomIndividual

# Custom wrapper class used to construct the DAI Individual.
# Contains information related to model type, model parameters,
# feature types, and feature parameters.

class IndivCCsimple(CustomIndividual):

    # Function to set the model type and its parameters.

    def set_model(self):
        self.model_display_name = 'LightGBM'
        self.model_params = {'eval_metric': 'auc', 'objective': 'binary'}

    # Function to set genes / transformers.

    def set_genes(self):
        self.add_transformer('OriginalTransformer', num_cols=['PAY_0'])

如需采用所有参数的个体插件示例,请参阅 creditcard.py from the official Driverless AI recipes GitHub repository