scikit-learn 流程图
在机器学习过程中,一项重要问题就是针对不同类型的数据集和问题进行合适的模型选择。
在python的scikit文档库中提供了一般的模型选择流程:
Naive Bayes算法
NB算法的要点
朴素贝叶斯算法十分简单,需要注意以下几点:
1. 根据条件独立性假设,即
P(xi|y,x1,...,xi−1,xi+1,...,xn)=P(xi|y)
2. 利用极大似然估计得到 P(xi|y) 和 P(y) 的参数估计值
3. 然后选取后验概率 P(y=ci|X) 最大的分类项
4. NB算法是典型的生成算法,低方差,高偏差,适合在样本量较小的情况下(<100k)使用
不同分类假设的NB模型
- GaussianNB分类器
P(xi|y)=12πσ2y−−−−√exp⎛⎝−(xi−μy)22σ2y⎞⎠主要用来解决连续性变量问题
- Multinomial NB分类器是文本分类的经典NB算法。类样本出现特征的概率是频率的平滑估计
θ^yi=Nyi+αNy+αn若 α=1 是Laplace平滑
- Bernoulli NB分类器:对不出现的已知特征添加惩罚系数
不同分类的讨论
主要是对Multinomial 和 Bernoulli NB分类器进行区分(*^_^*)
- 二者均适用于文本分类模型
- Multinomial模型适用于word count vectors/ Bernoulli模型适用于word occourrence vectors
- 对于特别短的文档,Bernoulli NB模型可能更好一些
问题:
不能学习特征之间的交互关系,对于条件独立性假设不能满足的问题偏差较大(但是同时,速度很快,准确率还凑合)
scikit-learn的NB算法库
GaussianNB/MultinomialNB/BernoulliNB
常用的方法有.fit
,.predict
等等