数据挖掘十大算法——Naive Bayes

简介

Naive和Bayes

Naive:假定向量中的所有特征是相互独立的

Bayes:

面向的问题

NB主要用于解决有监督分类问题。相比于其他模型,其具备简单(不需要复杂的迭代式参数估计,由此方便处理大数据)、可解释性强(生成模型)、效果佳的特点。

目标

针对二分类问题,利用训练集数据学习一个判断阈值α,对于新来的数据做判定,大于α的数据属于正类,小于α的数据属于负类。有监督分类中存在两大流派 diagnostic paradigmsampling paradigm ,前者注重于发现类间的区别,后者注重于发现类本身的分布形式,NB兼而有之。

算法描述

从sampling paradigm角度出发,定义P(i|x)为样本x=(x1,x2...xp)属于类别 i 的概率;f(x|i)为条件为 i 类样本的分布;P(i)为在没有任何已知数据情况下,样本属于 i 类的先验概率;f(x)是样本的总体分布,有f(x)=f(x|1)P(1)+f(x|0)P(0)。显然,P(i|x)∈[0,1]就是我们要找的阈值计算公式,一个典型的情况是设置阈值为 0.5。

由Bayes公式,

P(i|x)=f(x|i)P(i)f(x)

P(i)是类别先验概率,很好估计,f(x)在所有样本上一致,因此可以忽略。那么问题就是怎么求f(x|i)。根据朴素性假设f(x|i)=∏pj=1f(xj|i),这样,多元问题就被我们拆分为单变量估计问题。此时,我们可以采用直方图形式估计,也可以进行正态假设估计等。

一个优雅的特点

根据上述算法描述,可以得知,如果对P(i|x)作任意的严格单调性变换,并相应地改变阈值α,分类结果将保持不变。即

P(i|x)>P(i|y)?T(P(i|x))>T(P(i|y))

P(i|x)>α?T(P(i|x))>T(α)

那么我们可以对目标函数进行例如比例变换,log变换等操作。

讨论

独立性假设是NB中的一个核心观点,但是很明显在现实中,这个假设通常都是不合理的,偏偏NB又能产生很好的效果。由“不合理”的假设得到合理的结果,这看起来是违背常理。下面我们讨论具体原因

复杂度

独立单变量模型的复杂度远低于相关多变量模型,在估计时少量数据即可达到较好的精度。

模型变种

Laplacian correction

先验概率 nj/N 修正为 (nj+cj?1)/(N+1) ,这样可以对具备新特征的样本进行处理

相关关系引入

引入特征的两两相关

f(x|i)=f(x1|i)f(x2|x1,i)f(x3|x1,x2,i)...f(xp|x1,x2,,,xp?1,i)

引入马尔科夫模型

f(x|i)=f(x1|i)f(x2|x1,i)f(x3|x2,i)...f(xp|xp?1,i)

Logistic Regression

与NB很相似,但是参数估计不能用直接简单的概率完成,而需要通过迭代的方法。因此更为复杂

应用实例

Time with Emp(T) Size of Loan(S) Homeowner(H) Default(D)
5 10000 1 N
20 10000 1 N
1 25000 1 N
1 15000 3 N
15 2000 2 N
6 12000 1 N
1 5000 2 Y
12 8000 2 Y
3 10000 1 Y
1 5000 3 Y

我们期望通过左侧三列数据,预测该用户进行信用欺诈的可能性。

各特征的估计

连续数据离散化

我们注意到,这里的T,S都是毕竟分散的连续型数据,因此我们可以通过设定阈值的方法使其离散化。

T 我们设定阈值为10, S 我们设定阈值为10000

由此可得:

f(T<10|D=N)=4/6

f(T≥10|D=N)=2/6

f(T<10|D=Y)=3/4

f(T≥10|D=Y)=1/4

f(S<10000|D=N)=5/6

f(S≥10000|D=N)=1/6

f(S<10000|D=Y)=3/4

f(S≥10000|D=Y)=1/4

f(H=1|D=N)=4/6

f(H=2|D=N)=1/6

f(H=3|D=N)=1/6

f(H=1|D=Y)=1/6

f(H=2|D=Y)=2/6

f(H=3|D=Y)=1/6

现在,有一个新用户申请信用卡,他的 T=5, S=7000,H=1

则,P(Y|x)P(N|x)=P(1)f(T|1)f(S|1)f(H|1)P(0)f(T|0)f(S|0)f(H|1)=0.422

又根据 P(1|x)=1?P(0|x), 可得 P(0|x)=0.703, P(1|x)=0.296

如果我们设定阈值为0.5,则该用户是可以被授信的

(完)

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-02 02:08:48

数据挖掘十大算法——Naive Bayes的相关文章

数据挖掘十大算法之CART详解

在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms ),可以参见文献[1].本博客已经介绍过的位列十大算法之中的算法包括: [1] k-means算法(http://blog.csdn.net/baimafujinji/article/details/50570824) [2] 支持向量机SVM

数据挖掘十大算法之决策树详解(2)

在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms ),可以参见文献[1].本博客已经介绍过的位列十大算法之中的算法包括: [1] k-means算法(http://blog.csdn.net/baimafujinji/article/details/50570824) [2] 支持向量机SVM

数据挖掘十大算法之决策树详解(1)

在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms ),可以参见文献[1].本博客已经介绍过的位列十大算法之中的算法包括: [1] k-means算法(http://blog.csdn.net/baimafujinji/article/details/50570824) [2] 支持向量机SVM

数据挖掘十大算法--Apriori算法

一.Apriori 算法概述 Apriori 算法是一种最有影响力的挖掘布尔关联规则的频繁项集的 算法,它是由Rakesh Agrawal 和RamakrishnanSkrikant 提出的.它使用一种称作逐层搜索的迭代方法,k- 项集用于探索(k+1)- 项集.首先,找出频繁 1- 项集的集合.该集合记作L1.L1 用于找频繁2- 项集的集合 L2,而L2 用于找L2,如此下去,直到不能找到 k- 项集.每找一个 Lk 需要一次数据库扫描.为提高频繁项集逐层产生的效率,一种称作Apriori

数据挖掘十大算法

大数据时代 数据挖掘十大经典算法 不不过选中的十大算法,事实上參加评选的18种算法.实际上随便拿出一种来都能够称得上是经典算法,它们在数据挖掘领域都产生了极为深远的影响. 1.C4.5 C4.5算法是机器学习算法中的一种分类决策树算法,其核心算法是ID3算法.C4.5算法继承了ID3算法的长处.并在下面几方面对ID3算法进行了改进: 1)用信息增益率来选择属性.克服了用信息增益选择属性时偏向选择取值多的属性的不足: 2)在树构造过程中进行剪枝: 3)可以完毕对连续属性的离散化处理. 4)可以对不

数据挖掘十大算法之Apriori详解

在2006年12月召开的 IEEE 数据挖掘国际会议上(ICDM, International Conference on Data Mining),与会的各位专家选出了当时的十大数据挖掘算法( top 10 data mining algorithms ),可以参见文献[1].本博客已经介绍过的位列十大算法之中的算法包括: [1] k-means算法(http://blog.csdn.net/baimafujinji/article/details/50570824) [2] 支持向量机SVM

数据挖掘十大算法总结--核心思想,算法优缺点,应用领域

本文所涉算法均只概述核心思想,具体实现细节参看本博客"数据挖掘算法学习"分类下其他文章,不定期更新中.转载请注明出处,谢谢. 参考了许多资料加上个人理解,对十大算法进行如下分类: ?分类算法:C4.5,CART,Adaboost,NaiveBayes,KNN,SVM ?聚类算法:KMeans ?统计学习:EM ?关联分析:Apriori ?链接挖掘:PageRank 其中,EM算法虽可以用来聚类,但是由于EM算法进行迭代速度很慢,比kMeans性能差很多,并且KMeans算法 聚类效果

数据挖掘十大算法之贝叶斯分类算法

1.引言 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Na?ve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单.分类准确率高.速度快. 由于贝叶斯定理假设一个属性值对给定类的影响独立于其它属性的值,而此假设在实际情况中经常是不成立的,因此其分类准确率可能会下降.为此,就衍生出许多降低独立性假设的贝叶斯分类算法,如TAN(tree augmented Bayes network)算

数据挖掘十大算法之Appriori算法

1.引言      Appriori算法是用来干什么的?主要是用来解决类似于这样的问题:如果客户买了啤酒,他还会去买尿布吗? 理论的核心: 频繁项目集的子集仍是频繁项目集:非频繁项目集的超集是非频繁项目集.这个理论一直作为经典的数据挖掘理论被应用. 定理(Appriori 属性1). 如果项目集X是频繁项目集,那么它的所有非空子集都是频繁项目集. 定理(Appriori 属性2). 如果项目集X是非频繁项目集,那么它的所有超集都是非频繁项目集. 2.以一个实例来说明Appriori算法 题目:数