朴素贝叶斯
重要知识点:【朴素贝叶斯的想法是每个特征都是相互独立,它们互不干涉,所以可以写成这样子的形式】
【P(X| A,B ) = P (X | A) * P(X| B )】
朴素贝叶斯的想法其实非常的简单,就是我们利用现有已知的概率前提条件下,然后将我们手头的信息进行逐一对应。有点可以说算是打表的操作。
举例:
学习类型 | 作业情况 | 考试情况 |
---|---|---|
学霸 0.6 | 优秀 0.5 | 高分 0.7 |
学渣 0.4 | 优秀 0.1 | 高分 0.1 |
稍微说明一下,我们现在要预测一个同学,通过它的作业情况和考试情况来分析这个同学是不是学霸。然后这个同学给我们的反馈是(作业优秀,考试高分)
那么我们通过这张表就可以进行计算这个同学的情况。
【注:这里作业不优秀未列出,P(作业不优秀) + P(作业优秀) = 1】
好了,那么我们就可以开始朴素贝叶斯的计算。
- P(学霸| 作业优秀,考试高分) = P(学霸) * P(作业优秀 | 学霸) * P(考试高分 | 学霸)
= 0.6 * 0.5 * 0.7 = 0.21 - P(学渣 | 作业优秀,考试高分) = P(学渣) * P(作业优秀 | 学渣) * P( 考试高分 | 学渣)
= 0.4 * 0.1 * 0.1 = 0.004
所以可以推断出这个人是一个学霸
从上述我们可以初窥,朴素贝叶斯其实就相当于是先对数据集合D做一个表的操作,然后我们下面的预测都是根据这一张表内的数据进行预测的。
所以从这方面我们也可以得出一点,朴素贝叶斯对测试集的数据情况非常的依赖,如果在噪声点多的情况下,朴素贝叶斯对于真实值的预测是不准确。
Tips:
对于连续数据的处理
我们知道一般来说我们所看到的概率都是非线性的数据(一般是离散型的数据),对于这类数据,我们可以方便来算出它们对于总体样本所占比例来估计它的概率。但是对于连续性的数据,我们就需要用概率密度函数进行映射,一般都是使用正太分布来对连续性数据进行预测赋值。【另外还有一种做法,我们将连续性的数据离散化,举个例子,比如人的年龄,我们可以将其分为大于30岁,和小于30岁,这样就相当于变成了一个0-1离散数据,之后我们再操作】
拉普拉斯平滑(修正)
根据上表我们可知,如果作业情况优秀有一个是0,那么我累乘的结果一定会是0。这种情况下,我们无论怎么做都会是0.拉普拉斯修正做的就是,将分子的数据 + 1 ,分母的数据 + N 。使得它不会有0解。
决策树
决策树分为:回归树与分类树,目前就我知道的回归树只有CART算法
分类树
ID3算法
ID3算法主要是通过信息增益来对集合进行分类。
简单来说的话公式我们可以写成这样子:Gain ={ Ent(根节点的信息熵) - SumEnt (某属性的信息熵)}
【某属性值有{ a,b },根节点在建树过程中是变化,像算法里 tree.root = tree.left 迭代】
【SumEnt(某属性的信息熵) = ( a在属性中的比例 ) * Ent(a) + ( b在属性中的比例) * Ent(b)】
然后选取信息增益最大的那个点作为分类点。
C4.5算法
C4.5是在ID3上进行了改进,它使用了增益率来进行划分.
公式就是上述的信息增益: Gain(C4.5) = Gain(ID3) / IV(a)
IV(a) 的公式与信息熵的公式相同
信息增益率大的为分类的结点。
CART算法【永远是二叉分类】
分类
CART算法使用Gini指数来进行分类,Gin指数小的进行分类。直观的来说,Gini(D)反映了从数据集中随机抽取两个样本,其类别标记不一致的概率。Gini(D)指数越小,则数据集D的纯度越高。
二叉的分发,就是在数据样本中随机抽取两个样本(即特征)进行比较。所以每次都是二叉的往下分,而C4.5,ID3可以是多叉分类。
简单来说,就是比如我用考试成绩高不高来判断这个人是不是学霸。如果我当前给的样本中,考试成绩高的学生全是学霸,那么我们得到的Gini(考试成绩高) = 0,说明只要考试成绩高就一定是学霸这样子的概念产生了,我们就以此进行了分类。
Tips
树的剪枝
因为树会对所给定的数据进行全部的分支。(在算法中,我们知道树的建立,相当于是遍历的过程)所以在很大概率上,一颗决策树的形成,他对预测数据的处理会是过拟合,这个时候就需要剪枝。剪枝的方式有点类似我们之前所说的,训练验证。我们先通过计算子树的损失函数,得到最下子树的剪枝。然后我们可以得到一串子树的序列{ T0,T1,T2, ..., Tn } 即右那么多课树,然后通过交叉验证来求取其中最优的解。
网友评论