数据切分
留出法
一部分为训练集、一部分为测试集
- 应尽量保证数据分布的一致性
- 划分比例:7:3左右
留一法
m个样本,令k=m,作为cv的特例。只有一种划分方法,即每个测试集只有一条数据。
- 优势:每个模型都能很好的反映原始数据集的特性
- 劣势:计算量在数据量大时会非常大,还不算调参的计算量
自助取样法
对D中的m个数据随机取样,接着将数据放回原数据集继续取样,重复m次,产生一个新的数据集D‘。最后用未取到的数据作为测试集
- 未取到的数据占比36.8%
网格搜索与交叉验证
交叉验证
划分为K个互斥子集,用k-1作为训练集,剩下一个为测试集,最终每个子集都会作为测试集,其余子集作为训练集,共进行k次建模,最终得到测试结果的均值。
- k一般取值为3—7
- 随机取k个互斥子集,进行p次,最后对p个k-fold cv 进行取平均,叫作p次k折交叉验证
网格搜索参数,sklear的使用
- Grid Search 是一种穷举的调参方法。通过循环遍历的方式,把每一种候选的参数组合,全部调试 一遍。最后表现效果最好的参数就是最终的结果。
- 嵌套循环方式实现:(每次调参时,数据集要保持一致性)。为了避免test data既用于检验模型参数,又用于测试模型好坏,会提高模型结果的评分。
- sklearn.model_selection.GridSearchCV(estimator,param_grid,cv)
- estimator:估计器对象
- param_grid:估计器参数,参数名称(字符串)作为key,要测试的参数列表作为value的字典,或这样 的字典构成的列表
- cv:整型,指定K折交叉验证
- 方法
- fit:输入训练数据
- score:准确率
- best_score_:交叉验证中测试的最好的结果
- best_estimator:交叉验证中测试的最好的参数模型
- best_params_:交叉验证中测试的最好的参数
- cv_results:每次交叉验证的结果
拟合程度
- 欠拟合:欠拟合指的是数据没有训练完成,得出来的训练模型对训练集拟合效果不好。对于测试集的操作效 果也不高
- 过拟合:过拟合指的是数据进行过度训练,得出来的训练模型虽然对于训练数据来说,拟合地非常好,但是 对于测试数据,将会有糟糕的表现,原因是过度地拟合将会把噪声也极大地引入。
方差和偏差
- 偏差描述样本偏离实际值的情况
- 方差描述样本的分布疏密情况。
简单解决方法
- 欠拟合
- 数据特征少 ,升维(特征扩展)
- 数据量少 获取更多的数据
- 过拟合
- 数据特征多,降维(PCA,SVD,LDA等), 筛选特征,正则化
- 特征数据范围差距大 数据缩放(归一化,标准化)