zoukankan      html  css  js  c++  java
  • 朴素贝叶斯分类器

    上概率论大家都知道这个大名鼎鼎的贝叶斯公式

    $Pleft ( Amid B ight )=frac{Pleft ( Bmid A ight )Pleft ( A ight )}{Pleft ( B ight )}$  

    它是由

    $Pleft ( Aigcap B ight )=Pleft ( Amid B ight )Pleft ( B ight )=Pleft ( Bmid A ight )Pleft ( A ight )$

    推导过来的。

    实际中,朴素贝叶斯分类器解决这样的问题:

    1.给定了一有标签样本

    X={a1,a2,,,am,yi} n个观察对象

    2.给定一无标签样本x(只有m个特征,无y),求

    $Pleft ( y_{i}mid x ight )=maxleft { Pleft ( y_{1}mid x ight ),Pleft ( y_{2}mid x ight ),,,Pleft ( y_{i}mid x ight ) ight }$  

    用公式去求解

    第一步:根据现有样本X,求出每种标签下,每个特征的概率,即$Pleft ( a_{j} mid y_{i} ight )$,共n*m个

    第二步:

    $Pleft ( y_{i}mid x ight )=frac{Pleft ( xmid y_{i} ight )Pleft ( y_{i} ight )}{Pleft ( x ight )}$,

    又分母都一样,所以分子最大,$Pleft ( y_{i}mid x ight )$最大

    所以单独算分子,其中$Pleft ( xmid y_{i} ight )$相当于在yi为条件下,各个特征概率的乘积,表示如下:

    $Pleft ( xmid y_{i} ight )Pleft ( y_{i} ight )=left [ Pleft ( a_{1}mid y_{1} ight )Pleft ( a_{2}mid y_{1} ight ),,,Pleft ( a_{i}mid y_{1} ight ) ight ] Pleft ( y_{1} ight )cdotleft [ Pleft ( a_{1}mid y_{2} ight )Pleft ( a_{2}mid y_{2} ight ),,,Pleft ( a_{i}mid y_{2} ight ) ight ] Pleft ( y_{2} ight )...=Pleft ( y_{i} ight )prod Pleft ( a_{j}mid y_{i} ight )$

    连乘符号后面的部分,用到我们前面算出的n*m个概率

    当$Pleft ( a_{j}mid y_{i} ight )=0$,引入Laplace校准平滑

    实例:

    判断社交账号真假(真实用户、假用户),根据给定的数据集(sample size=10K)选出了三个条目,1.说说数/time,2.好友数/time,3.是否使用真实头像

    人工凭经验的将三个条目划分为若干特征

    条目1分为a1:≤0.05、a2:0.05< <0.2、a3:≥0.2

    条目2分为a4:≤0.1、a5:0.1< <0.8、a6:≥0.8

    条目3分为a7:0=否、a8:1=是

    每个样本都已经划分了是否为真假用户(此处要求样本的真实、可靠,否则影响最后的判断)

    第一步:下面的P值均为样本计算所得:

     

    第二步:现给定一个无标签样本x(0.1,0.2,0),问该样本是真实用户还是假用户

    那么,是真实用户的概率为:P(Yi|X)->>P(Yi)P(X|Yi)=P(Y1)P(a12|y1)P(a22|Y1)P(a31|Y1) 0.89*0.5*0.7*0.2=0.062

    假用户的概率为0.1*0.1*0.1*0.1*0.9=0.0009

    所以,是真实用户的概率大于假用户的概率。

    Valar morghulis
  • 相关阅读:
    第34天-文件_system (2013.09.04)
    第33天-文件I/O _2(2013.09.03)
    小项目 : 计算库函数中单词的个数第30天
    第32天-文件I/O _1(2013.09.02)
    嵌入式培训学习历程第二十九天
    大作业 :学生信息管理系统。。。
    嵌入式培训学习历程第二十六天
    读取一个文件中哪一行 的一个参数
    LINUX C 语言 快速获取调用SHELL命令后的结果
    C语言制造一个随机数
  • 原文地址:https://www.cnblogs.com/super-yb/p/11052546.html
Copyright © 2011-2022 走看看