朴素贝叶斯
朴素:给定目标值时属性之间相互条件独立。
P ( D j ∣ x ) P ( x ) = P ( x ∣ D j ) P ( D j ) P\left(D_{j} | x\right) P(x)=P\left(x | D_{j}\right) P\left(D_{j}\right) P(Dj∣x)P(x)=P(x∣Dj)P(Dj)
一般简写为
P ( A ∣ B ) P ( B ) = P ( B ∣ A ) P ( A ) P(A | B) P(B)=P(B | A) P(A) P(A∣B)P(B)=P(B∣A)P(A)
- P(A)叫做A时间的先验概率,就是一般情况下A发生的概率
- P(B|A)叫做似然度,是A假设条件成立的情况下B发生的概率
- P(A|B)叫做后验概率,在B发生的情况下发生A的概率,也就是要计算的概率
- P(B)叫做标准化常量,和A的先验概率定义相似,也就是要计算的概率
Scikit-learn有以下几种贝叶斯分类的变种模型封装:
- 高斯朴素贝叶斯 - 利用高斯概率密度公式进行分类拟合的
- 多项式朴素贝叶斯 - 多用于高维度向量分类,最常用的场景是文章分类
- 伯努利朴素贝叶斯 - 一般是针对布尔型特征值的向量做分类的过程
from sklearn. naive_bayes import GaussianNB
clf = GaussianNB().fit(X, y)
clf.predict(p)
贝叶斯理论体系其实揭示的是一种非常典型的人类自身的推测逻辑行为。
例如走在小区里,前面光线很昏暗,前面突然闪过一个影子,从路的一边窜到另一边,速度较快体型较大,这时候大概会猜测这是一只较大的家犬。如果在非洲大草原上,可能就会猜测是一头狮子,或者猎豹。因为环境不同导致两种事件的概率不同,带有明确的倾向性,这种推断的思路或者方式本身就是贝叶斯理论体系的核心内容。
决策树
- 如何选择树根?
信息增益最大,也就是熵最小的,希望使得消除信息混杂的能力最强- 枚举型直接求即可
- 连续型需要找适合切割的位置
构造树的思路
- 找到信息增益最大的字段A和信息增益最大的切分点v(无论是连续类型还是枚举型)
- 决定根节点的字段A和切分点v
- 把字段A从所有待选的字段列表拿走,再从第一步开始找
缺点是归纳出来的树可能会非常复杂,分支和层级极多,这样在可视化上也有问题
- 所以使用剪枝法进行树的修剪,有
- 前剪枝
- 后剪枝
两种方法,前剪枝就是提前终止树的构造,如只用了两个字段,两层树就构造完整个树了,保持了树的精简性,后剪枝就是等树完全构造完,如建模一共用了7个字段,全部用上,这样就形成了一个7层的树,如果一个分支下分类已经比较‘纯粹’了,就没必要再通过其他条件分支来进行细化,那么整个枝可以直接剪掉变成一个叶。
剪枝这个动作其实是在分类精度上和算法繁琐程度上做了一个妥协,这种思路几乎贯穿所有分类算法的始终。
随机森林
- 强调在数据挖掘中很多算法实际是一种问题处理方式或者原则,而不是针对某一个具体的问题所书写的代码。这也是个哲学上的矛盾,针对性越强,深度越大,适应度越窄;而反过来,针对性越弱,深度越小,适应度越宽。在学习数据挖掘算法时还是更多注重这些适应度较宽的算法思路。
- 在决策树的构造中会遇到过拟和欠拟的问题,在随机森林算法中,通常在一棵树上时不会追求及其精确的拟合的,而相反,希望的是决策树的简洁和计算的快速。
步骤和原则:- 随机挑选一个字段构造树的第一层
- 随机挑选一个字段构造树的第二层
- 。。。随机挑选一个字段构造树的第n层
- 本棵树构造完毕后,还需要这种方式构造m棵决策树
补充原则:
1.树的层级通常比较浅
2.每棵树的分类都不能保证精度很高
3.一个样本进行分类时同时对这m棵决策树做分类概率判断
会为一个训练集构造若干颗决策树,具体数量根据样本属性的数量和杂乱程度决定。当有新样本需要进行分类时,同时把这个样本给这几颗树,然后用类似民主投票表决的方式来决定新样本应该归属于哪类,哪类票多就归为哪类
隐马尔可夫模型
马尔可夫链的核心是,在给定当前知识或信息的情况下,观察对象过去的历史状态对预测将来是无关的。也就是在观察一个系统变化的时候,它下一个状态(第n+1个状态)如何的概率只需要观察和统计当前状态(第n个状态)即可正确得出
- 隐马尔可夫链和贝叶斯信念网络的模型思维方式接近,区别在于,隐马尔科夫链的模型更为简化,或者可以认为隐马尔科夫链就是贝叶斯信念网络的一种特例。
- 隐马尔科夫链是一个双重的随机过程,不仅状态转移之间是一个随机事件,状态和输出之间也是一个随机过程
- 和HMM模型相关的算法主要分为三类,分别解决三种问题
- 知道骰子有几种(隐含状态数量)、每种骰子是什么(转换概率)、根据掷骰子掷出的结果(可见状态链),想知道每次掷出来的都是哪种骰子(隐含状态链)
- 这个问题在语音识别领域叫做解码问题。有 两种解法
- 最大似然路径,求一串骰子序列,这串骰子序列产生观测结果的概率最大
- 第二种解法不是求一组骰子序列,而是求每次掷出的骰子分别是某种骰子的概率
- 这个问题在语音识别领域叫做解码问题。有 两种解法
- 知道骰子有几种(隐含状态数量),每种骰子是什么(转换概率),根据掷骰子掷出的结果(可见状态链),想知道掷出这个结果的概率
- 其实目的是检测观察到的结果与已知的模型是否吻合,因为掷出来的结果很多时候都对应了一个比较大的概率。如果很多次结果都对应比较小的概率,那么已知的模型很可能是错的,有人偷偷换了骰子
- 知道骰子有几种(隐含状态数量),不知道每种骰子是什么(转换概率),观测到很多次掷骰子的结果(可见状态链),想反推出每种骰子是什么(转换概率)。这个问题很重要,因为是常见的情况,很多时候只有可见结果,不知道HMM中的参数,需要从可见结果中估计出。
- 知道骰子有几种(隐含状态数量)、每种骰子是什么(转换概率)、根据掷骰子掷出的结果(可见状态链),想知道每次掷出来的都是哪种骰子(隐含状态链)
维特比算法
解最大似然路径问题
对于问题一:关心概率最大值
- 首先不管序列多长,要从序列长度为1算起,算序列长度为1时取到的每个骰子的最大概率。然后,逐渐增加长度,每增加一次长度,重新算一遍在这个长度下最后一个位置取到每个骰子的最大概率,当计算到最后一位时就知道最后一位是哪个骰子的概率最大了。
- 然后,要把对应这个最大概率的序列从后往前推出来
前向算法
对于问题二:关心概率和
支持向量机SVM
关键点1:切下去点在SVM算法体系里叫“超平面”,这个“超平面”是一个抽象的概念,在一维空间里是一个点,二维是一条线。。
关键点2:过拟问题,一般来说设计分类器都要避免过拟,只要精度达到标准就足够了。
关键点3:不纯度问题。不纯度和精确度是一对矛盾,只能说在实际操作成本一样的情况下,不纯度越低越好。
- 简洁 - 不过拟
- 精确 - 不纯度极低
让类别X中与该直线最近的样本点的距离和非类别X中的样本点与该直线的距离最大,这里画出的这条直线是希望让被分开的两个类别尽可能远
在平面直角坐标系中,如果有一条支线方程是
A