一.分类模型选择
- 计算样本的数量/每个样本中单词的数量这个比率。
- 如果这个比率小于1500,那么将文本标记为n-grams并使用简单的MLP模型进行分类(下面的流程图的左边分支):
a. 将样本分解成word n-grams;把n-grams转换成向量。
b. 给向量的重要性打分,然后根据分支选择前20K。
c. 构建一个MLP模型。 - 如果比率大于1500,则将文本标记为序列,并使用sepCNN模型进行分类(流程图右边分支):
a. 将样本分解成单词;根据频率选择前20K的单词。
b. 将样本转换为单词序列向量。
c. 如果原始样本数/每个样本的单词数这个比率小于15K,则使用微调的预训练sepCNN模型,可能得到最优的结果。 - 用不同的超参数值来测量模型的性能,以找到数据集的最佳模型配置
二.常见的机器学习分类算法比较
1.NB
在属性个数比较多或者属性之间相关性较大时,NBC模型的分类效率比不上决策树模型
2.KNN
[1]对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合
[2]算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分
[3]样本不平衡时可能会误分
3.决策树(Decision Trees)
优点:
[1]决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义。
[2]对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性。
[3]能够同时处理数据型和常规型属性。其他的技术往往要求数据属性的单一。
[4]在相对短的时间内能够对大型数据源做出可行且效果良好的结果。
[5]可以对有许多属性的数据集构造决策树。
缺点:
[1]对于那些各类别样本数量不一致的数据,在决策树当中,信息增益的结果偏向于那些具有更多数值的特征。
[2]决策树处理缺失数据时的困难。
[3]过度拟合问题的出现。
[4]忽略数据集中属性之间的相关性。
4.Adaboosting方法
[1]adaboost是一种有很高精度的分类器。
[2]可以使用各种方法构建子分类器,Adaboost算法提供的是框架。
[3]当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。
[4]简单,不用做特征筛选。
p5[不用担心overfitting。
5.支持向量机(SVM)
优点:
[1]可以解决小样本情况下的机器学习问题。
[2]可以解决高维问题。
[3]可以解决非线性问题。
缺点:
[1]对缺失数据敏感。
[2]对非线性问题没有通用解决方案,必须谨慎选择Kernelfunction来处理。
6.人工神经网络
优点:
分类的准确度高,并行分布处理能力强,分布存储及学习能力强,对噪声神经有较强的鲁棒性和容错能力,能充分逼近复杂的非线性关系,具备联想记忆的功能等。
缺点:
神经网络需要大量的参数,如网络拓扑结构、权值和阈值的初始值;不能观察之间的学习过程,输出结果难以解释,会影响到结果的可信度和可接受程度;学习时间过长,甚至可能达不到学习的目的。
三.文本分类项目
1.数据预处理
去除指定无用的符号
对文本进行jieba分词
去除停用词
将文本转为tfidf向量并输入到算法中