1 数据分析

  1. 数据是如何产生的,数据又是如何存储的;
  2. 数据是原始数据,还是经过人工处理(二次加工的);
  3. 数据由那些业务背景组成的,数据字段又有什么含义;
  4. 数据字段是什么类型的,每个字段的分布是怎样的;
  5. 训练集和测试集的数据分布是否有差异;

注意思考

  1. 数据量是否充分,是否有外部数据可以进行补充;
  2. 数据本身是否有噪音,是否需要进行数据清洗降维操作
  3. 赛题的评价函数是什么,和数据字段有什么关系;
  4. 数据字段与赛题标签的关系;

2 赛题背景分析

赛题背景分析能够帮助我们理解赛题的任务,以及赛题数据的收集和评价方法。
一定要自己重新完整的理解,然后以自己的思路表达出来
思考如下问题

  1. 赛题业务场景是什么,数据是如何产生的,数据标签如何得来的?
  2. 赛题任务是什么,具体要解决的问题是如何定义的;历史是否有类似的赛题
  3. 赛题任务是否有对应的学术任务?如果历史有类似的比赛/学术上对应的问题,那么直接用解决方案


3 数据清洗

数据清洗步骤主要是对数据的噪音进行有效剔除。数据噪音可能有多个来源,来源于数据本身,来源于数据存储,或来源于数据转换的过程中。因为噪音会影响特征,也会影响最后的模型结果,因此数据清洗是非常有必要的。
考虑以下几个方面

  1. 对于类别变量,可以统计比较少的取值;
  2. 对于数字变量,可以统计特征的分布异常值;
  3. 统计字段的缺失比例;

4 特征预处理

  • 量纲归一化:标准化、区间放缩
  • 特征编码:
    • 对于类别特征来说,有如下处理方式:
      1. 自然数编码(Label Encoding)
      2. 独热编码(Onehot Encoding)
      3. 哈希编码(Hash Encoding)
      4. 统计编码(Count Encoding)
      5. 目标编码(Target Encoding)
      6. 嵌入编码(Embedding Encoding)
      7. 缺失值编码(NaN Encoding)
      8. 多项式编码(Polynomial Encoding)
      9. 布尔编码(Bool Encoding)
    • 对于数值特征来说,有如下处理方式:
      1. 取整(Rounding)
      2. 分箱(Binning)
      3. 放缩(Scaling)
  • 缺失值处理
    • 用属性所有取值的平均值代替
    • 用属性所有取值的中位数代替
    • 用属性所有出现次数最多的值代替
    • 丢弃属性缺失的样本
    • 让模型处理缺失值

5 特征工程

特征工程本质做的工作是,将数据字段转换成适合模型学习的形式,降低模型的学习难度。特征工程与EDA联系紧密,可以说是EDA具体的操作吧。因为数据分析本身就是“假设”-“分析”-“验证”的过程,这个验证的过程一般是指构建特征并进行本地Cross-Validation验证。

可以从一下几个角度构建新的特征:

  1. 数据中每个字段的含义、分布、缺失情况;
  • 句子长度
  • 前10个最高词频(除去标点符号)
  1. 数据中每个字段的与赛题标签的关系;
  2. 数据字段两两之间,或者三者之间的关系;

输入的字段缺失值处理,缺失值填充,
分析输入数据特征的分布
分类问题
可以采用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