机器学习算法实验的重复次数估计

原文:Estimate the Number of Experiment Repeats for Stochastic Machine Learning Algorithms
作者: Jason Brownlee
编译: KK4SBB

我们在实验机器学习算法时,常常遇到一种情况:相同的算法,相同的数据,但每次计算得到的结果都不同。这是因为算法中存在随机的因素,导致最终的结果不稳定。因此,为了比较随机算法的优劣或是检验参数的最优解,我们需要多次重复实验,取平均值来衡量算法。

那么问题来了,假设场景不变,随机算法实验需要重复多少次才足以客观公正地反映模型的效果呢?

有些朋友建议至少重复30次,甚至100次,更有甚者重复上千次的实验。

在本文中,我们将会用统计学的方法来教你如何正确地估计随机算法实验的重复次数。本文所有代码的执行环境可以是Python 2或者3,并且安装了NumPy、Pandas和Matplotlib。

准备数据

假设我们在一组训练数据上重复训练了1000次结构相同的神经网络模型或是其它随机算法,并且记录模型在测试集的RMSE。另外,我们假设数据是正态分布的,这是开展后续分析的必要条件。

记得每次查看预测结果的分布,往往也是呈正态分布。这里我们随机生成一组均值为60、标准差为10的正态分布数据。生成数据的代码如下图所示,并将结果保存为CSV格式的文件,命名为results.csv。

我们用seed函数作为随机数生成器,以保证每次运行这段代码时得到的数据都一致。用normal()函数生成正态分布随机数,savetxt()函数保存结果。

from numpy.random import seed
from numpy.random import normal
from numpy import savetxt
# define underlying distribution of results
mean = 60
stev = 10
# generate samples from ideal distribution
seed(1)
results = normal(mean, stev, 1000)
# save to ASCII file
savetxt('results.csv', results)

运行这段代码,我们会得到包含1000个随机数的文件,模拟随机算法重复运行的结果。下图是该文件最后十行。

...
6.160564991742511864e+01
5.879850024371251038e+01
6.385602292344325548e+01
6.718290735754342791e+01
7.291188902850875309e+01
5.883555851728335995e+01
3.722702003339634302e+01
5.930375460544870947e+01
6.353870426882840405e+01
5.813044983467250404e+01

基本分析

首先,我们对上一步得到的结果简单地做一个统计分析。

基本的统计分析有三种常用方法:

  1. 计算统计信息,比如均值、标准差、百分位等等;
  2. 对数据绘制箱形图或者;
  3. 绘制数据的直方图分布。

下面的代码用来实现基本分析的功能。首先加载results.csv文件,然后计算统计信息和绘制图形。

from pandas import DataFrame
from pandas import read_csv
from numpy import mean
from numpy import std
from matplotlib import pyplot
# l
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值