1.交叉验证背景
在机器学习算法中,当数据量不充分时,需要对数据进行重复使用,就出现了交叉验证方法(Cross Validation),简称CV。交叉验证顾名思义就是重复使用数据,把数据分为训练集(Trading Set)、验证集(Validation Set)、测试集(Test Set),每次随机选出n组数据,用训练集训练出n个模型,测试集对n个模型进行评价,选出最终模型。
2.交叉验证方法
(1)简单交叉验证
首先,我们按照确定比例把数据划分为测试集和非测试集,比如测试集10%,非测试集90%;对于非测试集,我们把数据按照固定比例随机划分出训练集、验证集,比如对于非测试集部分,训练集占70%,验证集占30%;然后对于非测试集部分,重新按照该比例获取训练集和验证集,共获取n组数据,然后对n个训练集进行训练得到n个模型,最后用测试集部分数据对n个模型进行评价,得出最终模型。
(2)S折交叉验证(S-Folder Cross Validation)
S折交叉验证是把数据集划分为s组,每次随机抽取s-1组作为训练集,剩下的一组作为测试集,随机抽取n次,得到n个模型,然后用损失函数评价最优的模型和参数
(3)第三种是留一交叉验证(Leave-one-out Cross Validation)
它是第二种情况的特例,此时S等于样本数N,这样对于N个样本,每次选择N-1个样本来训练数据,留一个样本来验证模型预测的好坏。此方法主要用于样本量非常少的情况,比如,N小于50时,一般采用留一交叉验证。
这三种模型的使用场景,如果只是对数据做一个初步的模型建立,不是要做深入分析的话,简单交叉验证就可以了。否则就用S折交叉验证。在样本量少的时候,使用S折交叉验证的特例留一交叉验证(s=n)
3.网格搜索算法
网格搜索算法是一种通过遍历给定的参数组合来优化模型表现的方法。以决策树为例,当我们确定了要使用决策树算法的时候,为了能够更好地拟合和预测,我们需要调整它的参数。在决策树算法中,我们通常选择的参数是决策树的最大深度。
实证分析:
知识点1:
np.reshape(-1)的用法:
np.reshape(-1,1),指数据转换为未知行,仅一列
np.reshape(1,-1),指数据转换为仅一行,所有列
知识点2:
1e-1=0.1(科学记数法,python可以直接使用)