问题
步骤
1. 准备数据(数据探索)
2. 分析问题(分类,回归,聚类)
3. 特征工程(特征选择,新特征构建,特征降维)
这里的特征其实表示,例如用Bow表示一段文本,用TFIDF表示文本,用若干属性构成的向量表示心脏病(特征)
低维结构化数据:传统的机器学习分类问题,维度一般很低,可以全部feed给模型。
高维结构化数据:
非结构化数据:比如文本,通过BOW后会变成高维稀疏特征,对于高维稀疏特征,需要降维或者做特征选择,才能feed给模型,不然一些模型可能会比较慢。
比如图片,一般用NNDL处理。
4. 模型选择
模型的选择主要根据数据row * column,以及其他一些指标定。
row低,column低
row高,column低,
row低,column高,小量数据,高维特征
row高,column高,海量数据,高维特征
各个模型的优缺点,适合的场景
LR适合处理海量数据,高维特征,但是注意要归一化,否则会造成收敛慢甚至不收敛。
SVM适合处理小量数据,对特征维度应该不是很敏感,因为计算的时候,在用数据的时候,只用到内积运算。
RandomForest:数据量可以大,维度可以高。在计算每棵树的时候会用到数据。RandomForest在学习树的时候,会遍历特征,以及特征的取值,因此如果维度高,并且每个维度特征取值较多的话,RandomForest速度会慢一些,但好处在于RF各个树互不影响,RF可以并行化
GBDT,XGB,lightGBM:数据量不能太大,维度不能太高。在计算每棵树的时候,会用到数据。首先GBDT的第n棵树是依赖前n-1棵树的,要用到前n-1棵树的结果计算残差,不能并行化。其次在计算完残差,拟合树的时候,需要用到特征及特征的取值,所以对特征维度以及特征的取值都是比较敏感的。因此GBDT的性能一般要低于RF。
模型 | 数据 | 训练并行化 | 预测并行化 |
感知机 | |||
KNN | |||
NB | |||
LR | 海量,高维 | ||
SVM | 数据量不能太大 | ||
DecisionTree | |||
RF | 数据量可以大,维度可以高, | Y | Y |
GBDT | 数据量不能太大,维度不能太高 | ||
NN |
5. 调参
sklearn中各个模型的参数
6. 模型验证
评价指标
(train上的训练过程loss输出,test上的loss)
7. 分析badcase,改进模型
8. 上线部署
可以写的,特征工程,sklearn模型参数,模型指标评价,上线部署(大规模机器学习)
竞赛
多打比赛,多积累积累经验很重要
Kaggle
天池
DC
多玩数据,多玩玩工具,多实现
实现的前提你要对理论和算法步骤特别了解
自己实现后,会更好的掌握工具
掌握好工具以后,可以多玩玩数据
模型融合的方式
Voting
Averaging
Bagging
Boosting
Stacking
https://zhuanlan.zhihu.com/p/25836678
网站和博客:
数据科学社区 http://sofasofa.io/
Kaggle https://www.kaggle.com/
Python Cookbook https://www.kaggle.com/
利用Python进行数据分析 第二版 https://github.com/BrambleXu/pydata-notebook
Python AI CheatSheet https://github.com/kailashahirwar/cheatsheets-ai
RF,XGB,lightGBM的对比:https://blog.csdn.net/yingfengfeixiang/article/details/80210145