1 数据分析
- 数据是如何产生的,数据又是如何存储的;
- 数据是原始数据,还是经过人工处理(二次加工的);
- 数据由那些业务背景组成的,数据字段又有什么含义;
- 数据字段是什么类型的,每个字段的分布是怎样的;
- 训练集和测试集的数据分布是否有差异;
注意思考
- 数据量是否充分,是否有外部数据可以进行补充;
- 数据本身是否有噪音,是否需要进行数据清洗和降维操作;
- 赛题的评价函数是什么,和数据字段有什么关系;
- 数据字段与赛题标签的关系;
2 赛题背景分析
赛题背景分析能够帮助我们理解赛题的任务,以及赛题数据的收集和评价方法。
一定要自己重新完整的理解,然后以自己的思路表达出来
思考如下问题
- 赛题业务场景是什么,数据是如何产生的,数据标签如何得来的?
- 赛题任务是什么,具体要解决的问题是如何定义的;历史是否有类似的赛题
- 赛题任务是否有对应的学术任务?如果历史有类似的比赛/学术上对应的问题,那么直接用解决方案
3 数据清洗
数据清洗步骤主要是对数据的噪音进行有效剔除。数据噪音可能有多个来源,来源于数据本身,来源于数据存储,或来源于数据转换的过程中。因为噪音会影响特征,也会影响最后的模型结果,因此数据清洗是非常有必要的。
考虑以下几个方面
- 对于类别变量,可以统计比较少的取值;
- 对于数字变量,可以统计特征的分布异常值;
- 统计字段的缺失比例;
4 特征预处理
- 量纲归一化:标准化、区间放缩
- 特征编码:
- 对于类别特征来说,有如下处理方式:
- 自然数编码(Label Encoding)
- 独热编码(Onehot Encoding)
- 哈希编码(Hash Encoding)
- 统计编码(Count Encoding)
- 目标编码(Target Encoding)
- 嵌入编码(Embedding Encoding)
- 缺失值编码(NaN Encoding)
- 多项式编码(Polynomial Encoding)
- 布尔编码(Bool Encoding)
- 对于数值特征来说,有如下处理方式:
- 取整(Rounding)
- 分箱(Binning)
- 放缩(Scaling)
- 对于类别特征来说,有如下处理方式:
- 缺失值处理
- 用属性所有取值的平均值代替
- 用属性所有取值的中位数代替
- 用属性所有出现次数最多的值代替
- 丢弃属性缺失的样本
- 让模型处理缺失值
5 特征工程
特征工程本质做的工作是,将数据字段转换成适合模型学习的形式,降低模型的学习难度。特征工程与EDA联系紧密,可以说是EDA具体的操作吧。因为数据分析本身就是“假设”-“分析”-“验证”的过程,这个验证的过程一般是指构建特征并进行本地Cross-Validation验证。
可以从一下几个角度构建新的特征:
- 数据中每个字段的含义、分布、缺失情况;
- 句子长度
- 前10个最高词频(除去标点符号)
- 数据中每个字段的与赛题标签的关系;
- 数据字段两两之间,或者三者之间的关系;
输入的字段缺失值处理,缺失值填充,
分析输入数据特征的分布
分类问题
可以采用kaggle书本中101页的思想,利用sklearn去得出每个分类输出的概率—-朴素贝叶斯分类器
输出类型是多个,数量不确定,应该是有阈值的。找到合适的阈值。但是概率是全部要,所以阈值应该是概率的阈值。
机器学习中的交叉验证,去获取多少维度的特征得到最高的准确性。
该赛题和titanic的经典数据分析类似。
- XGBoost的使用Kaggle138页
- 特征筛选107页
6 开会讨论
(1)小明
- 建议上机器学习
- stacking 做模型融合,Bagging做模型融合
- 建议的神经网络:TextCNN,ElMO
- (Word2Vec/Word Embeding/glove/fastText)+(TextCNN/RNN/Bert)
- 新模型,GPT3模型
- NLP做数据增强
建议:先模型搭建成功,再考虑提升模型
(2)改进模型
7 模型总结使用
(1)FastText被用作向量嵌入层的词,而LSTM是深度学习模型https://github.com/shamiul94/Amazon-Review-Classifier-FastText-LSTM