「这是我参与11月更文挑战的第24天,活动详情查看:2021最后一次更文挑战」
通用的机器学习文本分类Pipline
对于通用的机器学习版文本分类Pipline,基本遵循以下程式:
每个步骤概览:
1.数据预处理
- 数据可能比较脏、比如带html标签、不合法数据、需要除去;
- 文本数据可能需要分词,然后再去掉停用词(的、了、等)及标点;
2.特征构造
- 一般情况我们会使用词特征作为文本分类的特征
- 你还可以增加其它人为定义的特征,比如:文本长度、n-gram特征 (将连续的n个词当成一个词特征) 等
3.特征选择
- 用词做特征,不做特征选择,很容易出现上万维、甚至几十万维, 这对计算来说可能是个灾难。即使计算资源充足,那也是对资源的浪费,因为真正对分类起作用的词,可能就只是少部分;
- 经常使用卡方检验、互信息等指标筛选1000~5000维的特征;
4.权重计算
- 使用了词特征,还有一个重要的点就是如何为每个特征赋值,常见的权重有: TF (词频) 、TFIDF (词频°倒排文档频率)
- 至此,我们得到了样本特征矩阵;
5.归一化
-
在实践中,我们征往需要对连续的特征进行标准化和归-化。即让不同特征的取值范围差别不能过大;
-
标准化和归一化可以:加快模型训练收敛速度、可能会提高模型精度;
-
对于离散的特征,我们需要使用OneHot进行编码;
6.数据集划分
- 我们往往需要使用留出法或者交叉验证法,对数据进行训练集、验证集、测试集的划分;
- 训练集用来训练模型、验证集用来调参、测试集用来评估模型泛化效果;
7.训练分类模型
●特征矩阵已经就绪,接下来,就是要选择一个分类模型,比如SVM或LR或者集成模型RF,然后训练模型;
8.模型评估
●如何衡量模型的好坏呢?我们自然想到精度(acc) :对是对,错是错,对的样本数/整个样本数;
●对于类别分布不怎么均匀的情况,精度并不怎么靠谱,理想的指标是:准确率(准不准)、召回率(全不全)以及F1 (两者的折中) ;
9.参数搜索
- 有了指标后,一个分类模型可能有几十个参数我们该如何选择某个特定的参数组合,使得此时的模型效果最好呢?
- 可以使用网格搜索,在限定的参数空间内进行调参;也可以使用随机搜索,每次随机选择特定参数组合,然后取n次里面最好的参数组合;
10.保存模型
选择了最优参数的模型,我们需要将其保存下来,以供后续加载使用;
可以用Python的pickle
库持久化模型对象;
11.预测
- 你可以加载上一步保存的模型,对新的数据进行离线label预测;
- 你还可以将已加载的模型预测功能封装成HTTP服务,提供即时预测功能;