知情方法:遗传算法

Python 中的超参数调优

Alex Scriven

Data Scientist

遗传学小课

 

在现实中的遗传进化中,流程如下:

  1. 存在许多个体("后代")
  2. 更强的个体存活并配对
  3. 配对产生后代时发生"交叉"
  4. 部分后代出现随机"突变"
    • 有时这些突变带来优势
  5. 回到(1)!
Python 中的超参数调优

机器学习中的遗传学

 

我们可将同一思路用于超参数调优:

  1. 生成一批模型(含不同超参数)
  2. 用评分函数挑选最佳者
    • 这些就是"幸存者"
  3. 基于最佳者生成相似的新模型
  4. 加入一定随机性,避免陷入局部最优
  5. 重复,直至满意!
Python 中的超参数调优

为何效果良好?

 

这是一种有信息的搜索,具备多项优势:

  • 可从先前迭代中学习,类似贝叶斯超参数调优。
  • 还具备一定的"随机性"优势
  • (我们将用的包)可处理机器学习中许多繁琐事务
Python 中的超参数调优

TPOT 简介

 

用于遗传式超参调优的实用库是 TPOT:

把 TPOT 当作您的数据科学助理。TPOT 是一款 Python 自动化机器学习工具,使用遗传编程优化机器学习流水线

流水线不仅包含模型(可为多个),还覆盖特征工程等环节。并且会返回该流水线的 Python 代码!

Python 中的超参数调优

TPOT 组件

TPOT 分类器的关键参数:

  • generations:训练迭代次数。
  • population_size:每次迭代后保留的模型数。
  • offspring_size:每次迭代生成的模型数。
  • mutation_rate:施加随机性的流水线比例。
  • crossover_rate:每轮用于"繁殖"的流水线比例。
  • scoring:用于评估最佳模型的函数。
  • cv:交叉验证策略。
Python 中的超参数调优

一个简单示例

一个简单示例:

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

我们保持 mutation_ratecrossover_rate 为默认值;在没有更深入的遗传编程知识时,默认值通常最佳。

注意:没有算法特定的超参数?

Python 中的超参数调优

Passons à la pratique !

Python 中的超参数调优

Preparing Video For Download...