ML三
二.算法
2.朴素贝叶斯算法
2.1定义
- 概率基础
- 条件概率:事件A在另外一个事件B已经发生条件下的发生概率。
P(A|B) - 联合概率:包含多个条件,且所有条件同时成立的概率。
P(A,B) - 相互独立:P(A,B)=P(A)P(B),则称事件A与事件B相互独立。
- 条件概率:事件A在另外一个事件B已经发生条件下的发生概率。
- 贝叶斯公式:P(C|W)= P(W|C)P©/P(W)
- 拉普拉斯平滑系数:
- 目的:防止计算出的分类概率为0.
- 公式:P(F|C)=(Ni+α)/(N+αm)
- α为指定系数,一般为1,m为训练文档中统计出的特征词数。
- 朴素贝叶斯:假设特征与特征之间相互独立。
朴素 + 贝叶斯:利用假设特征与特征之间是独立的和贝叶斯公式进行计算。
2.2应用场景
文本分类:以单词作为特征
2.3API
sklearn.naive_bayes.MultinomialNB(alpha = 1..0)
- 朴素贝叶斯分类
- alpha:拉普拉斯平滑
2.4案列:新闻分类
使用sklearn自带的数据集
(1)获取sklearn自带数据
(2)划分数据集
(3)特征工程
=>文本特征抽取
(4)朴素叶贝斯
(5)模型评估
2.5总结
- 优点:
- 有稳定的分类效率;
- 对缺失数据不敏感;
- 分类准确度高,速度快;
- 缺点:
- 由于使用了样本属性独立性的假设,所以如果特征属性有关联时其效果不好。
3.决策树
3.1什么是决策树
决策树的思想来源于程序设计中的条件分支if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。核心是如何高效的进行决策,即决定决策特征的先后顺序。
3.2决策树分类问题详解
先看房子,再看工作就已经可以决定是否贷款给这个人。
3.3如何提高决策效率——信息增益
需要用到信息论的知识!
- 香农(信息):消除随机不定性的东西
例:小明:我今年18岁“——信息
小李:”小明我明年19岁“——不是信息 - 信息熵:信息的衡量(衡量不确定性的大小)=>公式中底数随意,一般取值为2.
- 不确定性减少的程度最多,则优先选择这个特征
- 信息增益:特征A对训练数据集D的增益g(D,A),定义为集合D的信息熵H(D)与特征给定条件下D的信息条件熵H(D|A),即公式为:
g(D,A)=H(D)-H(D|A)
3.4API
class sklearn.tree.DecisionTreeClassifier(Criterion = 'gini',max_depth=None.random_state=None)
- 决策树分类器
- criterion:默认是’gini’系数,也可以选择信息增益的熵’entropy’
- max_depth:树的深度大小
- random_state:随机数种子
3.5决策树可视化
保存树的结构到dot文件
sklearn.tree.export_grapviz()
该函数能够导出DOT格式
tree.export_graphviz(estimator,out_file='tree.dot',feature_names=['',''])
使用网站:
webgraphviz.com打开(复制dot文件即可)
3.6总结
- 优点:
- (1)可以可视化——可解释能力强
- 缺点:
- (1)容易产生过拟合 。(决策树学习者可以创建不能很好的推广数据的过于复杂的树,这称为过拟合)
- 减枝cart算法(决策树API当中已经实现)
- 随机森林
- (1)容易产生过拟合 。(决策树学习者可以创建不能很好的推广数据的过于复杂的树,这称为过拟合)
3.7案例:泰坦尼克号乘客生存预测
- 需求分析:
(1)数据获取
(2)数据处理- 缺失值处理
- 特征值转换成字典类型,方便特征抽取
- 准备好特征值与目标值
- 划分数据集
(3)特征工程
字典特征抽取
(4)决策树预估流程
(5)模型评估
4.随机森林
4.1什么是集成学习方法
集成学习通过建立几个模型组合来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立发学习和做出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。
4.2什么是随机森林
在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
例如:我们训练了五棵树,其中有四个树输出为True,一个是Flase,则结果为True。
4.3随机森林原理
学习算法根据下列算法建造每一棵树:
- 用N来表示训练用例(样本)的个数,M表示特征数目。
- 1.一次随机选出一个样本,重复N次。(有可能出现重复样本)
- 2.随机取选出m个特征,m<<M,建立决策树。
- 采用bootstrap抽样(随机有放回的抽样)
4.4API
class sklearn.ensemble.RandomForestClassifier(n_estimators=10,criterion='gini',max_depth=None,bootstrap=True,random_state=None,min_samples_split=2)
4.5总结
- 有极好的准确率,在大数据集且具有高维特征的输入样本上有较好的应用结果,而且不需要降维。
- 能够聘雇各个特征在分类问题上的重要性。