Reference: Hands-on Machine Learning with Scikit-Learn and Tensorflow
1. 确定需求和问题:
- 项目目标是什么?
- 在产品中如何实现?
- 是否有现行的模型或方法,如果有的话,是什么,效果怎么样?
- 要求是batch-learning还是online learning?
- 用哪些指标来衡量模型好坏?指标合理吗?
- 模型的最差结果应该比什么好(eg.现有的、盲猜等)
- 是否有可以迁移学习的模型?(之前碰到过NLP相关的,那doc2vec是否可以利用原先train好的)
- 列一下assumptions? 确认这些assumption是否正确
2. 数据提取:
- 确定需要什么数据(一般需要一些行业经验做支撑),确认这些数据是否都可以拿到(数据库中是否有这些变量,是否有权限得到这些数据,数据库中的这些变量是否可信)
- 确认用户敏感数据做了加密处理
- 确认数据量
- 确认建模环境
- 把数据进行一些格式上的整理(例如时间、空间变量的格式转变)
3. 数据探索:
- 如果数据量很大的话,sample一部分进行数据探索(尤其是画图的时候)
- Data Exploration的结果最好可以保留,跟建模的码分开放
- 数据质量检查:
- 变量类型:numeric/categorical/order/text or other unstructured data...
- 缺失值:是否有缺失值?缺失值占比多少?导致数据缺失的原因有哪些?
- 异常值: 是否有明显的outlier(例如违背了行业逻辑的值)
- 画变量的distribution,看大概像什么分布
- 如果是有监督学习,确认target variable
- 对连续变量做相关性分析 ->(新想到的是是否可以用互信息代替相关性分析,因为互信息的话对discrete的变量也能做,只是个人想法)
- Visualizetion 探究变量和target variable之间的关系
- 确定需不需要进行transformation
4. 数据准备:
- 数据清洗:异常值处理、缺失值处理(缺失量小的话可以drop,或者用mean/median代替,离散变量的话也可新建一个类别叫unk
- Feature Selection:
- Feature Engineering:
- 离散化连续变量
- transformation
- feature整合
- Feature Scaling: 标准化/中心化
5. 确定一些待用模型(此步骤不调参):
- 尝试一些不同的模型,确定每个模型的待调参数有哪些
- 用CV来评估不同模型的优劣性, 分析每个模型中最重要的变量有哪些?
- 分析模型为什么会犯错,然后进行模型的调整
- 根据以上结果再做feature selection 和 feature engineering
- 循环以上步骤,确定3个比较好的模型
6.确认模型:
- 用CV对模型进行调参,用randomgridsearch
- 尝试一些emsemble
- 确定模型后进行评估
7. Presentation: