Kaggle学习笔记(一)

1、应用机器学习,千万不要一上来就试图做到完美,先撸一个baseline的model出来,再进行后续的分析步骤,一步步提高,所谓后续步骤可能包括『分析model现在的状态(欠/过拟合),分析我们使用的feature的作用大小,进行feature selection,以及我们模型下的bad case和产生的原因』等等。

 2、各属性值之间scale差距太大,将对收敛速度造成几万点伤害值!甚至不收敛! 对这类数据做一个scaling,所谓scaling,其实就是将一些变化幅度较大的特征化到[-1,1]之内。 

3、对过拟合而言,通常以下策略对结果优化是有用的:

  • 『对数据的认识太重要了!』:看看我们的数据每个/多个 属性和最后的分类结果之间有着什么样的关系呢。(可以用图标表示,大概看一下相关程度)
  • 『特征工程(feature engineering)太重要了!』 
  • 通常遇到缺值的情况,我们会有几种常见的处理方式
    • 如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入noise,影响最后的结果了
    • 如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
    • 如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
    • 有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。
  • 『模型融合(model ensemble)很重要!』 
    • 最简单的模型融合大概就是这么个意思,比如分类问题,当我们手头上有一堆在同一份数据集上训练得到的分类器(比如logistic regression,SVM,KNN,random forest,神经网络),那我们让他们都分别去做判定,然后对结果做投票统计,取票数最多的结果为最后结果
    • 如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把NaN作为一个新类别,加到类别特征中
    • 如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个step(比如这里的age,我们可以考虑每隔2/3岁为一个步长),然后把它离散化,之后把NaN作为一个type加到属性类目中。
    • 有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上。
  • 做一下feature selection,挑出较好的feature的subset来做training
  • 提供更多的数据,从而弥补原始数据的bias问题,学习到的model也会更准确

     对于欠拟合而言,我们通常需要更多的feature,更复杂的模型来提高准确度。 

用机器学习解决问题的过程大概如下图所示: 

 机器学习解决问题的过程

猜你喜欢

转载自blog.csdn.net/keil_/article/details/82422772
今日推荐