机器学习:软件工程方法与实现
上QQ阅读APP看书,第一时间看更新

3.4.3 随机数应用场景介绍

在了解了随机数的生成后,下面讲讲在数据集的划分中随机数的作用和影响。

1.数据集的随机划分

在机器学习建模的过程中,往往需要对数据集进行划分:将原始样本按照一定方法,随机划分成训练集、验证集和测试集。有多种方法可用于数据集的随机划分,比如K折交叉验证、留出法、随机划分法等。

以留出法为例,首先对原始数据进行一次或若干次随机数据混洗,然后取指定的比例作为训练集,剩余样本作为测试集。对于原始数据中的每条样本,我们无法确定它被分到哪类数据集中,是随机的,所以单次划分数据集得到的结果是不稳定的。在实践中,一般将数据集进行多次随机划分,重复执行求平均值。

原始数据集的随机划分,确保了划分后数据子集的内部结构尽可能与原始数据集保持一致,避免因划分而引入额外偏差,对结果造成影响。需要说明的是,当原始数据集为时间序列时,随机划分会破坏样本的时序信息,所以可直接按时序划分,此处不涉及随机数。

2.优化算法中的随机数

机器学习算法会用到各种形式的损失函数,如何快速有效地对损失函数求最小值,从而估计出模型的参数,这就涉及了优化问题。优化方法中常会用到随机数,例如利用随机数“跳出”局部极值点,使优化结果更接近全局最优解。

除少数简单模型外,机器学习涉及的优化问题通常无法直接给出显式解,实践中需借助数值优化算法进行求解。数值优化算法通常从某个初始参数值出发,按照一定策略搜索并更新参数,直到优化目标函数变化小于容忍幅度,或者搜索次数达到最大迭代次数为止。

对于凸目标函数,优化问题在理论上存在唯一解,只要搜寻次数足够多,总可以得到近似最优数值解。然而,如果优化在触及最大迭代次数后停止,最终参数所能到达的位置会依赖于初始出发位置。而对于非凸目标函数,由于存在局部极值,即使迭代次数足够长,也无法确保从不同的初始参数出发最终能够得到一致的结果。总之,如果赋予参数不同的初始值,就可能得到不同的结果。

为了解决上述问题,可以随机赋予若干组不同的初始解,得到与之对应的一组“最优”解。如果解与初始值无关,那么全部的解应该较接近,此时,任意一组解都可以作为备选最优解;如果解与初始值相关,那么在各组“局部”最优解中,寻找“全局”最优解对应参数作为最终参数即可。

此处使用随机数的作用是防止迭代次数不足时,参数搜索陷入局部最优。

以上我们对机器学习中随机数应用场景做了简单介绍。理论上,固定随机数种子后,机器学习的结果应保持不变。然而在实践过程中,不同机器学习方法中,固定随机数种子的方法也不尽相同,需要读者在熟悉使用算法包的过程中多加操作实践。