数据挖掘算法_技术分享|大数据挖掘算法之朴素贝叶斯算法

5d54f832bdd4ae4fa5bda79bf409cb28.png

程一舰

数据技术处

      分类问题是我们日常生活中面对最多的问题,我们做各种事情其实都会或多或少的进行分类,最简单的,当你看到这篇文章的时候,因为公众号名、标题以及内容排版,你可能心里已经对本文的级别有了一个大概的分类(初级、中级或者进阶文章),这就是一种分类操作。我们对于分类问题了解最多的算法应该就是贝叶斯算法了,贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,也称为贝叶斯分类。本文作为分类算法的第一篇,将首先介绍分类问题,对分类问题进行一个正式的定义。然后,以大家最熟悉的吃火锅为例,介绍贝叶斯分类算法的基础分类。

一、事情是这样的

首先,我们有这样一个生活实例:我们做了一份关于大家选择火锅店意愿的调查,影响大家是不是去吃某一家火锅的因素有这家店的口味、到这家店的距离、这家店的价格以及服务如何。通过下面的这个调查来预测,如果有一家店,它的特点是口味不好吃,价格却贵,但是距离近而且服务好,这样一家店顾客会不会得到顾客的青睐呢?

445dbdaeeb9e32910ceeffa8b8e35787.png

这个就是朴素贝叶斯要解决的一个问题,那我们先来介绍一下贝叶斯理论。

二、分类是什么

对于分类问题,其实谁都不会陌生,说我们每个人每天都在执行分类操作一点都不夸张,只是我们没有意识到罢了。例如,当你看到一个陌生人,你的脑子下意识判断TA是男是女;你可能经常会走在路上对身旁的朋友说“这个人一看就很有钱、那边有个非主流”之类的话,其实这就是一种分类操作。

从数学角度来说,分类问题可做如下定义:

cd090935774bc7571ca9b6777e398aa3.png

其中C叫做类别集合,其中每一个元素是一个类别,而I叫做项集合,其中每一个元素是一个待分类项,f叫做分类器。分类算法的任务就是构造分类器f。

这里要着重强调,分类问题往往采用经验性方法构造映射规则,即一般情况下的分类问题缺少足够的信息来构造100%正确的映射规则,而是通过对经验数据的学习从而实现一定概率意义上正确的分类,因此所训练出的分类器并不是一定能将每个待分类项准确映射到其分类,分类器的质量与分类器构造方法、待分类数据的特性以及训练样本数量等诸多因素有关。

例如,医生对病人进行诊断就是一个典型的分类过程,任何一个医生都无法直接看到病人的病情,只能观察病人表现出的症状和各种化验检测数据来推断病情,这时医生就好比一个分类器,而这个医生诊断的准确率,与他当初受到的教育方式(构造方法)、病人的症状是否突出(待分类数据的特性)以及医生的经验多少(训练样本数量)都有密切关系。

三、 朴素贝叶斯

每次提到贝叶斯定理,心中的崇敬之情都油然而生,倒不是因为这个定理多高深,而是因为它特别有用。这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:3a2f28b4a7254769c186b0fa4c1c5144.png贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。

5affd22ca82925ca32a58317ec22e3d2.png

四、到底是去还是不去呢

36064ed1fcff9fb5b7e6d8bf160032af.png

有了以上的理论铺垫,那这个问题我们就很好解决了,我们也学着贝叶斯的公式,来分析一下我们的问题。我们的问题可以进行以下面描述:

问题:A表示特征因素(不好吃,近,贵,好) B:去不去吃

那根据贝叶斯定理:P(B|A) = P(B)P(A|B)/P(A)

我们也可以把问题写成这样:P(吃|特征) = P(特征|吃)P(吃)/P(特征)

再进一步,就变成了下面这样:

P(吃|不好吃,近,贵,好)

= P(不好吃,近,贵,好|吃)P(吃)/P(不好吃,近,贵,好)

=P(不好吃|吃) * P(近|吃) * P(贵|吃) * P(好|吃)/ P(不好吃) * P(近) * P(贵) *P(好)

=(2/5*4/5*1/5*4/5)/(2/7*4/7*2/7*4/7)

同样的道理,计算出P(不吃|不好吃,近,贵,好)的概率,两者一比较,就知道到底是去还是不去吃了~

P(不好吃,近,贵,好|吃)P(吃) = P(不好吃|吃) * P(近|吃) * P(贵|吃) * P(好|吃),那么我就要分别统计后面几个概率,也就得到了左边的概率!学过概率论的同学可能有感觉了,这个等式成立的条件需要特征之间相互独立吧。这也就是为什么朴素贝叶斯分类有朴素一词的来源,朴素贝叶斯算法是假设各个特征之间相互独立,那么这个等式就成立了~

五、代码

Spark的MLlib中也提供了贝叶斯算法的调用,可以非常方便地调用进行数据挖掘任务的实现。

87373d65e664f180e24bb1a93376ffcf.png

六、总结

经典的分类算法远不止贝叶斯,例如还有我们熟知的KNN-k最近邻、决策树等等。我们需要尽可能多的了解和学习这些算法,这样才能在某个场景出现的时候快速找到合适的解决方案。我们的大数据平台也将一如既往的为各种数据挖掘类应用提供算力支持,为我行金融科技发展打造坚持的大数据平台支撑。

5c613552f75651acadba6f2826400094.gif

488bf4bb4e15321129f066b1d094d937.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值