本系列目的在于总结每一个分类器的特点(优点、缺点、使用数据类型、使用时的注意事项等)。相关代码自己搜。
python:建议使用2.7
python常用函数库:NumPy、scikit-learn等
python集成环境:anaconda
优点:
1、可以处理多元分类问题
2、对异常值不敏感
3、训练数据较少也比较有效
4、简单高效
缺点:
1、文本分类,对于其他的特征数量较少的训练数据集,不宜使用NB
2、NB的两个假设:条件独立假设、每个特征的权重一样(同等重要)假设,往往不成立。(但效果还不错....)
使用数据类型:
1、连续型(先做离散化处理)
2、离散型
使用时注意事项:
0、注意计算过程中两个易错点:
分子有一项为零,造成整个概率为零:使用Laplace smooth
分子的每一项都很小,造成连乘的结果趋于0,甚至下溢出错:使用 log(x*y) = log(x) + log(y)
1、最常用的场景:文本分类,对于其他的特征数量较少的训练数据集,不宜使用NB
2、特征数量较多时,可以观察特征的直方图分布分析特征之间的关系
3、深刻理解NB的两个假设:条件独立假设、每个特征的权重一样(同等重要)假设
4、注意set-of-words model和bag-of-words model的区别(词袋模型一般较优):
每个word取值的区别
计算条件概率(模型参数)的区别
5、理解NB的两种实现方式(伯努利模型实现、多项式模型实现)在产生文章词汇过程中的区别
6、如何根据NB训练得到的模型解释数据集的内在知识(其实发现数据的内在知识才是我们希望做的):
1)在预测集上表现不错,说明训练得到的模型还不错
2)那么,训练得到的模型中,每个类别下的概率最大的一些词汇,就是最能表征该类别特征的词汇,分析这些词汇并得出数据集的内在知识
7、最后是一些文本建模中的注意点:
构建词汇表:分词、大小写转换 | 超链接合并 | 停用词去除 | 高频词去除 | 正则项匹配 | 长度限制 | 等等 --->得到词汇表、
语义分析:同义词合并、pLSA、LDA等