数据切分与拟合问题

数据切分

留出法

一部分为训练集、一部分为测试集

  • 应尽量保证数据分布的一致性
  • 划分比例: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等), 筛选特征,正则化
    • 特征数据范围差距大 数据缩放(归一化,标准化)

你可能感兴趣的:(Python数据挖掘,python)