目录
一、朴素贝叶斯模型
1 应用场景
朴素贝叶斯的主要应用有文本分类、垃圾文本过滤,情感判别,多分类实时预测等。
朴素贝叶斯分类器的核心假设为自变量之间是条件独立的。该假设的主要目的是为了提高算法的运算效率,如果实际数据集中的自变量不满足独立性假设时,分类器的预测结果往往会产生错误。
通常情况下,贝叶斯分类器的效果不会低于决策树。
2 模型优点
- 算法在运算过程中简单而高效
- 算法拥有古典概率的理论支撑,分类效率稳定
- 算法对缺失数据和异常数据不太敏感
3 模型缺点
- 模型的判断结果依赖于先验概率,所以分类结果存在一定的错误率
- 对输入的自变量X要求具有相同的特征(如变量均为数值型或离散型或0-1型)
- 模型的前提假设 (假设前提:自变量是条件独立的(自变量之间不存在相关性)) 在实际应用中很难满足等
4 模型种类
4.1 高斯贝叶斯分类器
利用高斯贝叶斯分类器对数据集进行分类时要求:
- 输入的数据集X为连续的数值型变量;
- 假设数值型变量服从正态分布。
python中,sklearn的子模块naive_bayes中的GaussianNB类。
GaussianNB(priors=None) # priors:用于指定因变量各类别的先验概率,默认以数据集中的类别频率作为先验概率。
4.2 多项式贝叶斯分类器
利用多项式贝叶斯分类器对数据集进行分类时要求:
- 输入的数据集X为离散型变量;
- 假设X变量服从多项式分布。
通常情况下,会利用多项式贝叶斯分类器作文本分类,如一份邮件是否垃圾邮件、用户评论是否为正面等。
python中,sklearn的子模块naive_bayes中的MultinomialNB类。
MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
alpha为平滑系数,为了避免概率为0而设置的
可利用pandas模块中的factorize函数对离散的自变量进行数值转换
4.3 伯努利贝叶斯分类器
利用伯努利贝叶斯分类器对数据集进行分类时要求:
- 输入的数据集X为0-1二元值;
- 假设X变量服从伯努利分布。
python中,sklearn的子模块naive_bayes中的BernoulliNB类。
BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
binarize:如果该参数为浮点型数值,则将以该值为界限,当自变量的值大于该值时,自变量的值将被转换为1,否则被转换为0;如果该参数为None时,则默认训练数据集的自变量均为0-1值。
二、SVM模型
Support Vector Machine,支持向量机。该算法具有较高的预测准确率,受企业界的欢迎,如利用该算法实现医疗诊断、图像识别、文本分类、市场营销等。
1 算法思想
**利用某些支持向量所构成的“超平面”,将不同类别的样本点进行划分。**不管样本点是线性可分的、近似线性可分的还是非线性可分的,都可以利用“超平面”将样本点以较高的准确度切割开来。(将低维线性不可分的空间转换为高维的线性可分空间。)
!如果样本点为非线性可分,就要借助于核函数技术,实现样本在核空间下完成线性可分的操作。
2 算法优点
- 由于SVM模型最终所形成的分类器仅依赖于一些支持向量,这就导致模型具有很好的鲁棒性(增加或删除非支持向量的样本点,并不会改变分类器的效果)
- 避免“维度灾难”的发生(模型并不会随数据维度的提升而提高计算的复杂度)
- 模型具有很好的泛化能力,一定程度上可以避免模型的过拟合
- 可以避免模型在运算过程中出现的局部最优
3 算法缺点
- 模型不适合大样本的分类或预测,因为它会消耗大量的计算资源和时间
- 模型对缺失样本非常敏感,这就需要建模前清洗好每一个观测样本
- 虽然可以通过核函数解决非线性可分问题,但是模型对核函数的选择也同样很敏感
- SVM为黑盒模型(相比于回归或决策树等算法),对计算得到的结果无法解释
4 几种常见的SVM模型
- 线性可分的SVM
- 近似线性可分SVM:牺牲少部分异常点的利益,确保大部分的样本点都能够被线性可分。
- 非线性可分SVM:核心思想就是把原始数据扩展到更高维的空间,然后基于高维空间实现样本的线性可分。
Python中提供了有关线性可分SVM或近似线性可分SVM的实现功能,读者只需要导入sklearn模块,并调用svm子模块中的LinearSVC类即可。
关于非线性可分SVM模型的功能实现,可以利用Python中的sklearn模块,读者可以通过调用svm子模块中的SVC类。
5 几种常用的SVM核函数
- 线性核函数
- 多项式核函数
- 高斯核函数
- Sigmoid核函数
在实际应用中,SVM模型对核函数的选择是非常敏感的,所以需要通过先验的领域知识或者交叉验证的方法选出合理的核函数。