机器学习相关原则与方法

前言

越学习,越发现自己的无知。——笛卡尔
笛卡尔的这句话,用在小编学习机器学习的进展,刚好合适。从开始搞机器学习到现在,一年多了,学习了很多课程,查阅了很多文档,阅读了很多书籍,编写了很多代码,然而,并没有什么实质性的进展。没有任何可以拿得出手的成绩,可以让面试官眼前一亮。
寒假了,继续“搞机”,参加kaggle和天池,边比赛边学习,学以致用,为自己书写一份优秀的简历。

接下来一段时间,小编会参考七月在线的《Kaggle案例实战班》教程,选择一些项目进行实战。

问题解决流程

1、了解场景和目标
2、了解评估准则
3、认识数据
4、数据预处理(清洗,调权)
5、特征工程
6、模型选择
7、模型调参(选择最佳超参数:交叉验证)
8、模型状态分析
9、模型融合

了解场景和目标

1、这是一个什么样的问题?
2、可以采集到哪些数据?
3、需要完成什么样的目标?

了解评估标准

https://www.kaggle.com/wiki/Metrics

认识数据

编程显示出前几行、前几列,观察特点。

1、数据有哪些维度?
2、数据是不是分布平衡?
3、数据是不是有缺省值?

数据预处理

1、数据清洗

  • 不可信的样本丢掉
  • 缺省值极多的字段考虑不用

2、数据采样

  • 上/下采样
  • 保证样本均衡(加权)
  • bagging,vote

3、工具

  • hive sql/spark sql
  • pandas

特征工程

1、特征处理

  • 数值型
  • 类别型
  • 时间类(离散型,间隔型,组合型)
  • 文本类(n-gram,bag of words,tf-idf,word2vec)
  • 统计型
  • 组合特征

2、特征抽取

http://scikit-learn.org/stable/modules/preprocessing.html

http://scikit-learn.org/stable/modules/classes.html#module-sklearn.feature_extraction

3、特征选择
http://scikit-learn.org/stable/modules/feature_selection.html

过滤型:sklearn.feature_selection.SelectKBest
包裹型:sklearn.feature_selection.RFE
Ž嵌入型:feature_selection.SelectFromModel,Linear model,L1正则化

模型选择

cheat-sheet

模型参数选择

交叉验证:

模型状态评估

1、模型状态过拟合还是欠拟合

2、学习曲线(learning curve)

3、绘制学习曲线(plot learning curve)

模型融合

1、群众的力量是伟大的,集体智慧是惊人的
(1)Bagging
(2)随机森林/Random forest

2、站在巨人的肩膀上,能看得更远
(1)模型stacking

3、一万小时定律
(1)Adaboost
(2)逐步增强树/Gradient Boosting Tree

Bagging

1、模型很多时候效果不好的原因是什么?
(1)过拟合啦!!!

2、如何缓解?
(1)少给点题,别让它死记硬背这么多东西
(2)多找几个同学来做题,综合一下他们的答案

3、sklearn.ensemble.BaggingClassifier

(1)用一个算法
不用全部的数据集,每次取一个子集训练一个模型
分类:用这些模型的结果做vote
回归:对这些模型的结果取平均

(2)用不同的算法
用这些模型的结果做vote 或 求平均

Stacking

用多种predictor结果作为特征训练

Boosting

考得不好的原因是什么?
(1)还不够努力,练习题要多次学习
解决办法:重复迭代和训练
(2)时间分配要合理,要多练习之前做错的题
解决办法:每次分配给分错的样本更高的权重
(3)我不聪明,但是脚踏实地,用最简单的知识不断积累,成为专家
解决办法:最简单的分类器的叠加

Ensemble Methods

原则和技巧

1、画出数据
2、简单实现
3、画出图表
4、根据图表优化

数据的重要性超过模型。

注意点与核心思路

1、拿到数据后怎么了解数据(可视化)
2、选择最贴切的机器学习算法
3、定位模型状态(过/欠拟合)以及解决方法
4、大量级的数据的特征分析与可视化
5、各种损失函数(loss function)的优缺点及如何选择

书签

机器学习系列(4)_机器学习算法一览,应用建议与解决思路

机器学习系列(19)_通用机器学习流程与问题解决架构模板

0%