精华内容
下载资源
问答
  • 半朴素贝叶斯算法

    2019-09-21 18:33:50
    前置知识: ... 朴素贝叶斯算法:https://blog.csdn.net/qq_32172681/article/details/101112211 ...1.、半朴素贝叶斯的“半” 前面说到,朴素贝叶斯(NB)的‘朴素’就体现在它假设各属性之间没有相互依赖,可以...

    前置知识:

    贝叶斯公式:https://blog.csdn.net/qq_32172681/article/details/98032205

    朴素贝叶斯算法:https://blog.csdn.net/qq_32172681/article/details/101112211

     

    1.、半朴素贝叶斯的“半”

    前面说到,朴素贝叶斯(NB)的‘朴素’就体现在它假设各属性之间没有相互依赖,可以简化贝叶斯公式中P(x|c)的计算。但事实上,属性直接完全没有依赖的情况是非常少的。如果简单粗暴用朴素贝叶斯建模,泛化能力和鲁棒性都难以达到令人满意。

    这就可以引出主角半朴素贝叶斯了,它假定每个属性最多只依赖一个(或k个)其他属性。它考虑属性间的相互依赖,但假定依赖只有一个(ODE)或k个(kDE)其他属性。这就是半朴素贝叶斯的’半’所体现之处。半朴素贝叶斯分类器适当考虑一部分属性之间的相互依赖信息,从而既不需要进行联合概率计算,又不至于彻底忽略比较强的属性依赖关系。

    "独依赖估计" (One-Dependent Estimator,简称ODE)是半朴素贝叶斯分类器最常用的一种策略。所谓"独依赖"就是假设每个属性在类别之外最多仅依赖于一个其他属性。

    于是半朴素贝叶斯分类器的公式为:

    其中为属性所依赖的属性,称为的父属性。

    问题的关键就转化为如何确定每个属性的父属性,不同的做法产生不同的独依赖分类器。

     

    2、 常见的半朴素贝叶斯算法SPODE和TAN

    SPODE算法:假设所有属性都依赖同一个属性,这个属性称为“超父”属性。

    TAN算法:通过最大带权生成树算法确定属性之间的依赖关系,简单点说,就是每个属性找到跟自己最相关的属性,然后形成一个有向边(只能往一个方向)。

    下面的图借自周志华老师西瓜书:

    è¿éåå¾çæè¿°

     

    3、详解TAN算法

    步骤如下:

    (1)计算任意两个属性之间的条件互信息(CMI,即相互依赖程度)

    è¿éåå¾çæè¿°

    (2)以每个属性为节点(nodenode),CMI为边(edgeedge)形成一张图。找到这张图的最大带权生成树。即找到一个节点之间的连接规则,这个规则满足三个条件:

    • 能够连接所有节点;
    • 使用最少数目的边;
    • 边长(CMI)总和最大

    (3)再把节点连接关系设置为有向,即从父节点指向子节点。在这里把最先出现的属性设置为根节点,再由根节点出发来确定边的方向。在代码中把第2步和第3步一起执行。

    (4)求  

     

     

    参考:http://www.luyixian.cn/news_show_3477.aspx

     

    展开全文
  • 这正是朴素的含义,虽然朴素贝叶斯的分类效果不错,但是属性之间毕竟是有关联的, 某个属性依赖于另外的属性, 于是就有了半朴素贝叶斯分类器: 因此, 对某个样本x 的预测朴素贝叶斯公式就由如下: 5、朴素贝叶斯...

    1、应用场景

    1.1 垃圾邮件分类

    在这里插入图片描述
    在这里插入图片描述

    2、概率基础

    概率定义为一件事情发生的可能性
    在这里插入图片描述
    问题:

    1、女神喜欢的概率?
    2、职业是程序员并且体型匀称的概率?
    3、在女神喜欢的条件下,职业是程序员的概率?
    4、在女神喜欢的条件下,职业是产品,体重是超重的概率?
    

    2.1 联合概率和条件概率

    以下主要来自:https://blog.csdn.net/sinat_30353259/article/details/80932111

    联合概率:包含多个条件,且所有条件同时成立的概率。记作:P(A,B)

    条件概率:就是事件A在另外一个事件B已经发生条件下的发生概率。记作:P(A | B),读做"在B条件下A的概率"
    若只有两个事件A,B,那么:
    在这里插入图片描述
    特性:P(A1,A2|B) = P(A1|B)P(A2|B)
    注意:此条件概率的成立,是由于A1,A2相互独立的结果。

    全概率公式:表示若事件A1,A2,…,An构成一个完备事件组且都有正概率,则对任何一个事件B都有公式成立。
    在这里插入图片描述
    在这里插入图片描述

    3、朴素贝叶斯介绍

    贝叶斯公式是将全概率公式带入到条件概率公式当中, 对于事件Ak和事件B有:
    在这里插入图片描述
    在这里插入图片描述
    朴素贝叶斯公式:
    在这里插入图片描述
    【例2】一起汽车撞人逃跑事件,已知只有两种颜色的车,比例为蓝色15% 绿色85%,目击者指证是蓝车,但根据现场分析,当时那种条件目击者看正确车的颜色的可能性是80%,那么,肇事的车是蓝车的概率到底是多少。
    答案:
    设A={目击者看到车是蓝色的}, B={车的实际颜色是蓝色}
    P(A)=80%×15%+20%×85%=29%
    即: 车是蓝色(15%)×目击者看正确(80%)+车是绿色(85%)×目击
    者看错了(20%)
    P(AB)=80%×15%=12%
    即: 车是蓝色(15%)×目击者看正确(80%)
    P(B|A)=P(AB)/P(A)=12%/29%≈41%

    3.2 朴素贝叶斯模型流程

    朴素贝叶斯的基本方法: 在统计数据的基础上,依据条件概率公式,计算当前特征的样本属于某个分类的概率,选最大的概率分类。

    对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别:

    ①计算流程:
    在这里插入图片描述
    例题:
    在这里插入图片描述
    在这里插入图片描述
    ②三个阶段:
    第一阶段——准备阶段, 根据具体情况确定特征属性, 对每个特征属性进行适当划分, 然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段, 其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

    第二阶段——分类器训练阶段, 这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计, 并将结果记录。 其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段, 根据前面讨论的公式可以由程序自动计算完成。

    第三阶段——应用阶段。 这个阶段的任务是使用分类器对待分类项进行分类, 其输入是分类器
    和待分类项, 输出是待分类项与类别的映射关系。这一阶段也是机械性阶段, 由程序完成。

    3.3 拉普拉斯平滑

    在这里插入图片描述

    4 半朴素贝叶斯分类器

    概念
    在朴素的分类中, 我们假定了各个属性之间的独立,这是为了计算方便,防止过多的属性之间的依赖导致的大量计算。这正是朴素的含义,虽然朴素贝叶斯的分类效果不错,但是属性之间毕竟是有关联的, 某个属性依赖于另外的属性, 于是就有了半朴素贝叶斯分类器:

    因此, 对某个样本x 的预测朴素贝叶斯公式就由如下:
    在这里插入图片描述

    5、朴素贝叶斯介绍(补)

    5.1 贝叶斯公式

    在这里插入图片描述
    在这里插入图片描述
    公式分为三个部分:

    1. :每个文档类别的概率(某文档类别词数/总文档词数)
    2. P(W|C):给定类别下特征(被预测文档中出现的词)的概率。

    计算方式:P(F1|C) = Ni / N
    Ni为该F1词在C类别所有文档中出现的次数
    N为所属类别C下的文档所有词出现的次数和

    1. P(F1,F2,…)预测文档中每个词的概率。

    训练集统计结果(指定统计词频):
    在这里插入图片描述
    现有一篇被预测文档:出现了影院,支付宝,云计算,计算属于科技、娱乐的类别概率?
    在这里插入图片描述
    思考:属于某个类别为0,合适吗?

    5.2 拉普拉斯平滑

    问题:从上面的例子我们得到娱乐概率为0,这是不合理的,如果词频列表里面有很多出现次数都为0,很可能计算结果都为零
    在这里插入图片描述

    5.3 sklearn朴素贝叶斯实现API

    sklearn.naive_bayes.MultinomialNB(alpha = 1.0, fit_prior= True, class_prior= None)     
    

    概念解释:
    针对多项式模型的朴素贝叶斯(Naive Bayes)分类器。
    多项式朴素贝叶斯分类器适合离散特征的分类问题。(例如:文本分类中的单词计数)。
    多项式分布一般要求特征计数是整数。然而,实际应用中,如tf-idf这种分类计数也可能有效。

    参数

    Parameters 数据类型 意义
    alpha float,optional (default=1.0) 附加的平滑参数(Laplace/Lidstone) ,0是不平滑(这个就是拉普拉斯平滑系数)
    fit_prior boolean,optional (default=True) 不管是否学习经典先验概率,如果False则采用uniform先验
    class_prior array-like, size (n_classes,), optional (default=None) 类别的先验概率,一经指定先验概率不能随着数据而调整

    属性Attributes

    Attributes 数据类型 意义
    class_log_prior_ array,shape(n_classes,) 平滑的经验对数概率
    intercept_ array,shape(n_classes,n_features) class_log_prior_的镜像将MultinomialNB解释为线性模型
    featur_log_prob_ array, shape (n_classes, n_features) 特征的经验对数概率P(X_i
    coef_ array, shape (n_classes, n_features) feature_log_prob_镜像用于将MultinomialNB解释为线性模型
    class_count_ array,shape(n_classes,) 拟合过程中每个类遇到的样本数,这个值用给定的权重值作为权重
    feature_count_ array, shape (n_classes, n_features) 拟合过程中每个(类、特征)遇到的样本数,这个值用给定的权重值作为权重

    方法Methods

    1、fit(self, X, y[, sample_weight])
    根据X,y拟合NB分类器
    
    2、get_params(self[, deep])
    获取这个评估器的参数
    
    3、partial_fit(self, X, y[, classes, sample_weight])
    对一批样本进行增量拟合
    
    4、predict(self, X)
    在测试向量X构成的数组上演示分类性能
    
    5、predict_log_proba(self, X)
    返回针对测试向量X的对数概率估算
    
    6、predict_proba(self, X)
    返回针对测试向量X的概率估算
    
    7、score(self, X, y[, sample_weight])
    返回针对特殊样本的准确性
    
    9、set_params(self, **params)
    为此评估器设置参数
    

    案例一:
    1、Out-of-core classification of text documents
    2、Classification of text documents using sparse features

    案例二
    A:朴素贝叶斯算法案例

    1、sklearn20新闻分类
    2、20个新闻组数据集包含20个主题的18000个新闻组帖子
    

    B:朴素贝叶斯案例流程

    1、加载20类新闻数据,并进行分割
    2、生成文章特征词
    3、朴素贝叶斯estimator流程进行预估
    

    C:代码

    from sklearn.datasets import fetch_20newsgroups
    from sklearn.naive_bayes import MultinomialNB
    from sklearn.model_selection import train_test_split
    from sklearn.feature_extraction.text import TfidfVectorizer
    from sklearn.metrics import classification_report
    
    def naviebayes():
        """
        朴素贝叶斯进行文本分类
        :return: None
        """
        news = fetch_20newsgroups(subset='all')
    
        # 进行数据分割
        x_train, x_test, y_train, y_test = train_test_split(news.data, news.target, test_size=0.25)
    
        # 对数据集进行特征抽取
        tf = TfidfVectorizer()
    
        # 以训练集当中的词的列表进行每篇文章重要性统计['a','b','c','d']
        x_train = tf.fit_transform(x_train)
    
        print(tf.get_feature_names())
    
        x_test = tf.transform(x_test)
    
        # 进行朴素贝叶斯算法的预测
        mlt = MultinomialNB(alpha=1.0)
    
        print(x_train.toarray())
    
        mlt.fit(x_train, y_train)
    
        y_predict = mlt.predict(x_test)
    
        print("预测的文章类别为:", y_predict)
    
        # 得出准确率
        print("准确率为:", mlt.score(x_test, y_test))
    
        print("每个类别的精确率和召回率:", classification_report(y_test, y_predict, target_names=news.target_names))
    
        return None
    
    if __name__ == "__main__":
        naviebayes()
    

    输出结果:

    在这里插入代码片
    

    5.4 朴素贝叶斯分类优缺点

    优点:
        1、朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率。
        2、对缺失数据不太敏感,算法也比较简单,常用于文本分类。
        3、分类准确度高,速度快
    缺点:
        1、需要知道先验概率P(F1,F2,…|C),因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。    
    

    6、朴素贝叶斯的面试题

    1、朴素贝叶斯与LR的区别
    简单来说:朴素贝叶斯是生成模型,根据已有样本进行贝叶斯估计学习出先验概率P(Y)和条件概率P(X|Y),进而求出联合分布概率P(XY),最后利用贝叶斯定理求解P(Y|X), 而LR(逻辑回归)是判别模型,根据极大化对数似然函数直接求出条件概率P(Y|X);朴素贝叶斯是基于很强的条件独立假设(在已知分类Y的条件下,各个特征变量取值是相互独立的),而LR则对此没有要求;朴素贝叶斯适用于数据集少的情景,而LR适用于大规模数据集。

    2、朴素贝叶斯“朴素”在哪里?
    简单来说:利用贝叶斯定理求解联合概率P(XY)时,需要计算条件概率P(X|Y)。在计算P(X|Y)时,朴素贝叶斯做了一个很强的条件独立假设(当Y确定时,X的各个分量取值之间相互独立),即P(X1=x1,X2=x2,…Xj=xj|Y=yk) = P(X1=x1|Y=yk)P(X2=x2|Y=yk)…*P(Xj=xj|Y=yk)。

    3、 在估计条件概率P(X|Y)时出现概率为0的情况怎么办?
    简单来说:引入λ,当λ=1时称为拉普拉斯平滑。
    4、朴素贝叶斯的优缺点
    优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。
    缺点:对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。
    重点:
    面试的时候怎么回答朴素贝叶斯呢?
    首先朴素贝斯是一个生成模型(很重要),其次它通过学习已知样本,计算出联合概率,再求条件概率。

    生成模式和判别模式的区别:
    生成模式: 由数据学得联合概率分布,求出条件概率分布P(Y|X)的预测模型;
    常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机
    **判别模式:**由数学得决策函数或条件概率分布作为预测模型。
    常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场。

    其它(非常好的一篇文章):

    《机器学习实现》
    https://blog.csdn.net/TeFuirnever/article/details/100108341

    打个赏呗,您的支持是我坚持写好博文的动力。
    在这里插入图片描述

    展开全文
  • 朴素贝叶斯算法

    2018-07-16 17:55:24
    一、概率基础知识 ...五、半朴素贝叶斯分类器 六、贝叶斯网络结构 6.1、概念 一、概率基础知识 1.1、条件概率 条件概率是指事件A在另外一个事件B已经发生条件下的发生概率。条件概率表...

    一、概率基础知识

    这里写图片描述

    1.1、条件概率

    条件概率是指事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为:P(A|B),读作“在B条件下A的概率”。
    这里写图片描述

    1.2、全概率公式

    指事件A在另外一个事件B已经发生条件下的发生概率。条件概率表示为:P(A|B),读作“在B条件下A的概率”

    若只有两个事件A,B,那么:
    P(B)=P(A1B)+P(A2B)++P(AnB)P(B) = P(A_1B) + P(A_2B) + ··· + P(A_nB)
             =P(AiB)~~~~~~~~~= ∑P(A_iB)
             =P(BAi)P(Ai)~~~~~~~~~= ∑P(B|A_i)* P(A_i)
    1.3、贝叶斯公式

    贝叶斯公式是将全概率公式带入到条件概率公式当中,对于事件Ak和事件B有:
    P(AkB)=P(Ak)P(BAk)P(Ai)P(BAi)i=12nP(A_k|B) =\frac{P(A_k)P(B|A_k)}{∑P(A_i)P(B|A_i) }(i=1,2,····,n)

    对于P(AkB)P(A_k|B)来说,分母 P(BAi)P(Ai)∑P(B|A_i)*P(A_i) 为一个固定值,因为我们只需要比较P(AkB)P(A_k|B)的大小, 所以可以将分母固定值去掉,并不会影响结果。
    因此,可以得到下面公式:
    P(AkB)=P(Ak) P(BAk)P(A_k|B) =P(A_k)~P(B|A_k)

    后验 = 先验 × 似然函数
    P(Ak|B) 后验概率;P(Ak) 先验概率;P(B|Ak) 似然函数
    1.4、特征条件独立假设

    在分类问题中,常常需要把一个事物分到某个类别中。一个事物又有许多属性,即 x=(x1,x2,,xn)x=(x_1,x_2,···,x_n)
    常常类别也是多个(y1,y2,,yk)P(y1x),P(y2x),,P(ykx)(y_1,y_2,···,y_k)P(y_1|x), P(y_2|x),…,P(y_k|x),表示x属于某个分类的概率,
    那么,我们需要找出中最大的那个概率P(ykx)P(y_k|x)

    1.5、拉普拉斯平滑

    为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率, 所以加法平滑也叫做拉普拉斯平滑。
    拉普拉斯平滑详情-请点击

    二、朴素贝叶斯分类

    对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,
    就认为此待分类项属于哪个类别

    ①计算流程:

    (1) x = {a1,a2,...ama_1,a_2,... a_m} 为待分类项,每a个为 x 的一个特征属性

    (2) 有类别集合 $C = {y_1,y_2,… y_n} $

    (3) 计算 P(y1x),P(y2x),...P(ynx)P(y_1|x),P(y_2|x),...P(y_n|x)

    (4) 如果 P(ykx)=maxP(y1x),P(y2x),...P(ynx),xykP(y_k|x) = max{P(y_1|x),P(y_2|x),...P(y_n|x)},则 x \in y_k
    这里写图片描述

    ②三个阶段:

    第一阶段——根据具体情况确定特征属性,对每个特征属性进行适当划分,
    然后由人工对一部分待分类项进行分类,形成训练样本集合。
    这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。

    这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段,
    其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

    这里写图片描述

    第二阶段——分类器训练阶段,
    这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计,并将结果记录。
    其输入是特征属性和训练样本,输出是分类器。
    这一阶段是机械性阶段,根据前面讨论的公式可以由程序自动计算完成。

    第三阶段——应用阶段。
    这个阶段的任务是使用分类器对待分类项进行分类,
    其输入是分类器和待分类项,输出是待分类项与类别的映射关系。
    这一阶段也是机械性阶段,由程序完成。

    三、连续变量贝叶斯(高斯分布)

    当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。即:
    这里写图片描述
    因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即
    可得到需要的估计值。
    均值与标准差的计算在此不再赘述。

    四、优缺点

    优点

    1, 算法逻辑简单,易于实现(算法思路很简单,只要使用贝叶斯公式转化即可!)
    2,分类过程中时空开销小(假设特征相互独立,只会涉及到二维存储)

    缺点

    1、理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。

    2、而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类
    的算法通过考虑部分关联性适度改进。

    五、半朴素贝叶斯分类器

    在朴素的分类中,我们假定了各个属性之间的独立,这是为了计算方便,
    防止过多的属性之间的依赖导致的大量计算。
    这正是朴素的含义,虽然朴素贝叶斯的分类效果不错,
    但是属性之间毕竟是有关联的,某个属性依赖于另外的属性,

    于是就有了半朴素贝叶斯分类器。
    这里写图片描述

    确认依赖

    1.SOPDE方法。这种方法是假定所有的属性都依赖于共同的一个父属性。

    2.TAN方法。每个属性依赖的另外的属性由最大带权生成树来确定。
    (1)先求每个属性之间的互信息来作为他们之间的权值。
    (2)构件完全图。权重是刚才求得的互信息。然后用最大带权生成树算法求得此图
    的最大带权的生成树。
    (3)找一个根变量,然后依次将图变为有向图。
    (4)添加类别y到每个属性的的有向边。

    3 . 朴素贝叶斯与两种半朴素贝叶斯分类器所考虑的属性依赖关系,
    假定每个属性仅依赖于其他最多一个属性,称其依赖的这个属性为其超父属性,
    这种关系称为:独依赖估计(ODA)。

    这里写图片描述

    六、贝叶斯网络结构

    6.1、概念

    贝叶斯网络(Bayesian Networks)也被称为信念网络(Belif Networks)或者因果网络(Causal Networks)。

    简单说网络结构就是用来描述变量之间相互依赖的关系的结构,提供了一种方便的框架结构来表示因果关系,
    这使得不确定性推理变得在逻辑上更为清晰、可理解性强。
    这里写图片描述
    这里写图片描述

    6.2 三种贝叶斯网络结构情况

    这里写图片描述

    展开全文
  • 朴素贝叶斯 半朴素贝叶斯 In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server. 在本文中,我们将逐步介绍SQL Server中的Microsoft Naive Bayes算法。 In my previous ...

    朴素贝叶斯 半朴素贝叶斯

    In this article, we will walk through Microsoft Naive Bayes algorithm in SQL Server.

    在本文中,我们将逐步介绍SQL Server中的Microsoft Naive Bayes算法。

    In my previous article, SQL data mining, we discussed what data mining is and how to set up the data mining environment in SQL Server. We briefly said that there are several algorithms which you can select during the setting up of the data mining environment. As mentioned before, we are going to discuss the first algorithm which is Microsoft Naive Bayes in this article.

    在我的前一篇文章SQL数据挖掘中 ,我们讨论了什么是数据挖掘以及如何在SQL Server中设置数据挖掘环境。 简短地说,在设置数据挖掘环境期间,可以选择几种算法。 如前所述,我们将在本文中讨论第一个算法,即Microsoft Naive Bayes。

    什么是朴素贝叶斯 (What is Naive Bayes)

    Bayes theory was discovered by Rev. Thomas Bayes in 1763 with the example of a newborn child who is witnessing a sunrise for the first time. Let us look at a more modern example. Let us look at an example from the medical arena. The hospital that sees patients for dengue has started to collect data. So they have found that there are several symptoms of dengue patients. High fever, body ache, vomiting, and headaches are few those symptoms and we will limit the symptoms for only those for the purpose of discussion. Now, if you are statistician, you would say, out of the dengue patients, 75% had a high fever and 80% had vomiting. Though these numbers give you some idea, what we need to know as a policy decision-maker, what is the percentage that the patient will have dengue given that he has a fever? Naive Bayes theory can convert to unknown from what you know.

    贝叶斯理论是由托马斯·贝叶斯牧师在1763年发现的,以一个初次目睹日出的新生婴儿为例。 让我们看一个更现代的例子。 让我们从医疗领域来看一个例子。 看到有登革热病人的医院已经开始收集数据。 因此,他们发现登革热患者有几种症状。 高烧,身体疼痛,呕吐和头痛是这些症状的极少数,出于讨论目的,我们仅将这些症状限制为仅这些症状。 现在,如果您是统计学家,您会说登革热患者中有75%的人发高烧,而80%的人有呕吐。 尽管这些数字使您有所了解,但作为政策决策者我们需要知道的是,患者发烧后登革热的百分比是多少? 朴素贝叶斯理论可以从您所知道的转变为未知。

    Following is the equation for the famous Bayes theory.

    以下是著名的贝叶斯理论的方程式。

    P ( A / B) = P ( B / A) * P (A) / P(B)

    P(A / B)= P(B / A)* P(A)/ P(B)

    P ( A / B) = The likelihood of event A occurring, given that B is true.

    P(A / B)=如果B为真,则发生事件A的可能性。

    P ( B / A ) = The likelihood of event B occurring given that A is true.

    P(B / A)=假设A为真,则事件B发生的可能性。

    P ( A) and P(B) are the probabilities of events A and B independently of each other.

    P(A)和P(B)是事件A和B彼此独立的概率。

    Let us look at this from the dengue and fever example.

    让我们从登革热和热病的例子来看一下。

    The likelihood of having dengue given that the patient is having fever = the likelihood of the patient is having fever given that the patient is suffering from dengue * Probability of patient having dengue / Probability of patient having a fever.

    假设患者发烧而患有登革热的可能性=鉴于患者患有登革热而患有发烧的可能性*患有登革热的患者的可能性/患有发烧的患者的可能性。

    In the above example, to decide whether the patient is suffering from dengue, there are more than one parameter such as vomiting, body ache, headache etc. So you need all these parameters to be analyzed in order to predict whether the patient has dengue.

    在上面的示例中,要确定患者是否患有登革热,有多个参数,例如呕吐,身体疼痛,头痛等。因此,需要对所有这些参数进行分析,以预测患者是否患有登革热。

    微软朴素贝叶斯 (Microsoft Naive Bayes)

    Microsoft Naive Bayes is a classification supervised learning. This data set can be bi-class which means it has only two classes. Whether the patient is suffering from dengue or not or whether your customers are bike buyers or not, are an example of the bi-class data set. There can be multi-class data set as well.

    Microsoft Naive Bayes是分类监督学习。 该数据集可以是双类别的,这意味着它只有两个类别。 患者是否患有登革热,或者您的顾客是否是自行车购买者,都是双类数据集的一个例子。 也可以有多类数据集。

    Let us take the example which we discussed in the previous article, AdventureWorks bike buyer example. In this example, we will use vTargetMail database view in the AdventureWorksDW database.

    让我们以在上一篇文章中讨论过的AdventureWorks自行车购买者示例为例。 在此示例中,我们将在AdventureWorksDW数据库中使用vTargetMail数据库视图。

    During the data mining algorithm wizard, the Microsoft Naive Bayes algorithm should be selected as shown in the below image.

    在数据挖掘算法向导中,应选择Microsoft Naive Bayes算法,如下图所示。

    Selection of Naive Bayes Algorithm during the creation of dat mining structure.

    Next is to select relevant attributes which we will think will be impacted on bike buying. As we said last time, there are three types of attributes, Key, Predictable and Input.

    接下来是选择相关属性,我们认为这些属性会影响自行车的购买。 正如我们上次说的,属性共有三种类型,键,可预测和输入。

    So, we are going to predict, whether the customer will buy a bike or not. Therefore the predictable column is Bike Buyer. Each row should be uniquely identified using a Key and Customer Key is the key in this example.

    因此,我们将预测客户是否会购买自行车。 因此,可预测的列是“ 自行车购买者”。 在此示例中,应使用键唯一地标识每一行,而客户键是键。

    Next is to select inputs which will impact customer buying.

    接下来是选择将影响客户购买的输入。

    After choosing the Key and Predictable attributes and before the selection of input ttributes.

    In most cases, you can choose the necessary columns with your experience and sense. However, if you are unable to choose, there is a Suggest button which will give you suggestions as shown in the below image.

    在大多数情况下,您可以根据自己的经验和感觉选择必要的列。 但是,如果您无法选择,则有一个“ 建议”按钮,它将为您提供建议,如下图所示。

    Suggest Related Columns

    By analyzing data, a suggestion will provide you attributes which the system thinks will have a higher impact. You can choose the impact columns directly from this screen itself.

    通过分析数据,建议将为您提供系统认为会产生更大影响的属性。 您可以直接从此屏幕本身选择影响列。

    After completing the selection of input columns, the following screen will be displayed as shown in the below image.

    完成输入列的选择后,将显示以下屏幕,如下图所示。

    Selection of Key, Input and Predictable attributes.

    After the selection of attribute is completed, the next screen is to choose Content-Type and Data Type. You would notice that Age, Bike Buyer, Number Cars Owned, Number Children At Home and Total Children will have Discretized Content-Type and Data Type is Long. Discretized Content-Type is not compatible with Microsoft Naive Bayes. Therefore, those attributes have to be changed to Discrete, and Data type should be selected as text. The screen will appear like the following after you correctly configure the content type.

    属性选择完成后,下一个屏幕是选择Content-TypeData Type 。 您会注意到,年龄,自行车购买者,拥有的汽车数量,在家中的子代数和子代总数将具有离散化的Content-Type和Data Type为Long 。 离散内容类型与Microsoft Naive Bayes不兼容。 因此,必须将那些属性更改为“离散”,并且应选择“数据类型”作为文本。 正确配置内容类型后,屏幕将显示如下。

    Specify Column Content and Data Type

    After this, next is to provide the test and train data set parameters and default values are used here. Next is to process the mining model so that it can be consumed by the end-users.

    此后,下一步是提供测试和训练数据集参数,此处使用默认值。 接下来是处理挖掘模型,以便最终用户可以使用它。

    挖掘模型查看器 (Mining Model Viewer)

    After the mining model is built, next step is to analyze the model. The mining model Viewer is next to the model viewer. In the model viewer, there are four options namely, Dependency Network, Attribute Profiles, Attribute Characteristic and Attribute Discrimination as shown in the below image.

    构建挖掘模型后,下一步是分析模型。 挖掘模型查看器位于模型查看器旁边。 在模型查看器中,有四个选项,即依赖网络,属性配置文件,属性特征和属性区分,如下图所示。

    Options in Mining Model Viewer.

    依赖网络 (Dependency Network)

    The dependency network is a clear indicator of which attributes make a high or low impact towards the predictable attribute. In the following image, it elaborates what are the attributes which have a higher impact to decide Bike Buyer.

    依存关系网络可以清楚地指示哪些属性对可预测属性产生高低影响。 在下图中,它详细说明了对决定“ 自行车购买者”具有更高影响的属性。

    Dependency Network of Bike Buyer prediction.

    The above image indicates that Total Children, Commute Distance, Region, Marital Status, Number Children at Home, Number Cars Owned and English Education out of the other selected attributes. Out of these attributes, different attributes have different weightages of impacts. This can be identified by moving down the All Links to Strongest Links Slide bar which is at the left-hand side of the screen.

    上图显示了其他所选属性中的“总孩子数”,“通勤距离”,“地区”,“婚姻状况”,“在家中的孩子数”,“拥有的汽车数量”和“英语教育”。 在这些属性中,不同的属性具有不同的影响权重。 可以通过将所有链接向下移动到最强链接滑动条(位于屏幕左侧)来识别此问题。

    If the slide is at the very lowest place in the slide bar, you will see the strongest link as shown in the below image.

    如果幻灯片位于幻灯片栏中的最低位置,您将看到最牢固的链接,如下图所示。

    Strongest linked attribute for Bike Buyer.

    属性配置文件 (Attribute Profile)

    In this classification problem, we will have two classes. Buying Bike (1) or Not Buying Bikes (0). Attribute Profile shows how each category has different combinations.

    在这个分类问题中,我们将有两个类。 购买自行车(1)或不购买自行车(0)。 属性配置文件显示每个类别如何具有不同的组合。

    Attribute Profiles for Bike Buyers and Not Buke Buyers.

    This view can provide you a better view of understanding your data.

    此视图可以为您提供更好的理解数据的视图。

    属性特征 (Attribute Characteristics)

    As a user, it would be nice to know what feature will make people buy a car so that they can target the customers who have those attributes.

    作为用户,很高兴知道什么功能将使人们购买汽车,以便他们可以针对具有这些属性的客户。

    Attribute Characteristic for customers whi are buying bikes.

    The above image indicates that customers who do not have children at home tend to buy bikes. Also, North America Region and Customers who commute 0-1 Miles will tend to buy bikes. This information is handy for the marketing department so that they can specifically target customers with these parameters.

    上图表明,在家中没有孩子的顾客倾向于购买自行车。 同样,北美地区和通勤0-1英里的客户也倾向于购买自行车。 此信息对于市场部门很方便,因此他们可以使用这些参数专门针对客户。

    属性区分 (Attribute Discrimination)

    This tab gives you an answer to the question,” What is the difference between a bike buyer and not bike buyer”.

    此标签为您提供了以下问题的答案:“自行车购买者与非自行车购买者有什么区别”。

    Attribtue discrimination between customers who are buying and not buying bikes.

    We will leave the prediction and accuracy calculation in a separate article as it is a discussion for all the algorithms.

    我们将把预测和准确性计算放在单独的文章中,因为它是所有算法的讨论。

    型号参数 (Model Parameters)

    Depending on the environment, there are model parameters for each algorithm. By using these parameters, you can fine-tune the model. In the case of Microsoft Naive Bayes, there are four parameters which can be modified from the Mining Models and by selecting Set Algorithm Parameters from the Mining Model option in the main menu.

    根据环境的不同,每种算法都有模型参数。 通过使用这些参数,您可以微调模型。 对于Microsoft Naive Bayes,有四个参数可以从挖掘模型中修改,也可以通过从主菜单的“ 挖掘模型”选项中选择“ 设置算法参数”来修改。

    Naive Bayes Algorithm Parameters

    Maximum_Input_Attributes (Maximum_Input_Attributes)

    Specifies the maximum number of input attributes that the algorithm can handle before invoking feature selection. Setting this value to 0 disables feature selection for input attributes. This is an Enterprise edition feature. The default value is 255.

    指定在调用功能部件选择之前算法可以处理的最大输入属性数。 将此值设置为0将禁用输入属性的特征选择。 这是企业版功能。 默认值为255。

    Maximum_Output_Attributes (Maximum_Output_Attributes)

    Specifies the maximum number of output attributes that the algorithm can handle before invoking feature selection. Setting this value to 0 disables feature selection for output attributes. This is an Enterprise edition feature. The default value is 255.

    指定在调用功能选择之前算法可以处理的最大输出属性数。 将此值设置为0将禁用输出属性的功能选择。 这是企业版功能。 默认值为255。

    Maximum_States (Maximum_States)

    Specifies the maximum number of attribute states that the algorithm supports. If the number of states that an attribute has is greater than the maximum number of states, the algorithm uses the attribute’s most popular states and treats the remaining states as missing. This is an Enterprise edition feature. The default value is 100.

    指定算法支持的最大属性状态数。 如果某个属性具有的状态数大于最大状态数,则该算法将使用该属性的最受欢迎状态,并将其余状态视为丢失。 这是企业版功能。 默认值为100。

    Minimum_Dependency_Probability (Minimum_Dependency_Probability)

    Specifies the minimum dependency probability between input and output attributes. This value is used to limit the size of the content generated by the algorithm. This property can be set from 0 to 1. Increasing this value reduces the number of attributes in the model. If this has a higher values, you might not see some attributes in the Dependency Network. The default value is 0.5.

    指定输入和输出属性之间的最小依赖关系概率。 该值用于限制算法生成的内容的大小。 可以在0到1之间设置此属性。增加该值将减少模型中的属性数量。 如果此值较高,则在依赖网络中可能看不到某些属性。 默认值为0.5。

    Microsoft朴素贝叶斯算法的局限性 (Limitations of the Microsoft Naive Bayes Algorithm)

    The major issue is Microsoft Naive Bayes cannot handle continuous data. In the above example, we had to drop the yearly income though it is a very important attribute, simply because that attribute is a continuous variable.

    主要问题是Microsoft Naive Bayes无法处理连续数据。 在上面的示例中,我们必须删除年收入,尽管它是一个非常重要的属性,只是因为该属性是一个连续变量。

    Naive Bayes Algorithm has a basic assumption that input attributes are independent of each other. If you look at the example, we know that Occupation and Qualification have a link between them. However, this algorithm will not be able to understand the relation between inputs.

    朴素贝叶斯算法有一个基本假设,即输入属性彼此独立。 如果您看一下示例,我们知道职业和资格之间存在联系。 但是,该算法将无法理解输入之间的关系。

    摘要 (Summary)

    Microsoft Naive Bayes algorithm is a basic algorithm when you start into a data mining project. It will provide you a basic understanding about your data.

    当您开始数据挖掘项目时,Microsoft Naive Bayes算法是一种基本算法。 它将为您提供有关数据的基本知识。

    In the next article, we will discuss Microsoft Decision Trees algorithms.

    在下一篇文章中,我们将讨论Microsoft决策树算法。

    目录 (Table of contents)

    Introduction to SQL Server Data Mining
    Naive Bayes Prediction in SQL Server
    Microsoft Decision Trees in SQL Server
    Microsoft Time Series in SQL Server
    Association Rule Mining in SQL Server
    Microsoft Clustering in SQL Server
    Microsoft Linear Regression in SQL Server
    Implement Artificial Neural Networks (ANNs) in SQL Server
    Implementing Sequence Clustering in SQL Server
    Measuring the Accuracy in Data Mining in SQL Server
    Data Mining Query in SSIS
    Text Mining in SQL Server
    SQL Server数据挖掘简介
    SQL Server中的朴素贝叶斯预测
    SQL Server中的Microsoft决策树
    SQL Server中的Microsoft时间序列
    SQL Server中的关联规则挖掘
    SQL Server中的Microsoft群集
    SQL Server中的Microsoft线性回归
    在SQL Server中实现人工神经网络(ANN)
    在SQL Server中实现序列聚类
    在SQL Server中测量数据挖掘的准确性
    SSIS中的数据挖掘查询
    SQL Server中的文本挖掘

    翻译自: https://www.sqlshack.com/naive-bayes-prediction-in-sql-server/

    朴素贝叶斯 半朴素贝叶斯

    展开全文
  • 朴素贝叶斯 半朴素贝叶斯In this article, we’ll show you how to classify a tweet into either positive or negative, using two famous machine learning algorithms: Naive Bayes and N-Gram. 在本文中,我们将...
  • 朴素贝叶斯设定了一个假设前提:输入实例的各个属性之间是相互独立的,其结构图如下图所示 但是在现实中很多时候这种假设是不成立的,本文要介绍的SuperParent是对朴素贝叶斯的一种扩展,打破了这种属性之间相互...
  • 作者:張張張張 ...【转载请注明出处,谢谢!】 文章目录一、朴素贝叶斯概述... 拉普拉斯修正及例题三、朴素贝叶斯算法小结 一、朴素贝叶斯概述     \quad\;\;贝叶斯分类是一类分类算法的...
  • 这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。 1   分类问题综述  对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类过程。...
  • 序言最近开始学习机器学习,机器学习算法大致可以分为监督学习,无监督学习,监督学习,强化学习。...这篇文章我们要讨论的是简单学习里面的分类问题,而朴素贝叶斯算法是分类问题的一种解决方案。
  • 概率机器学习的系列博文已经写到第四篇...1.朴素贝叶斯算法 2.Python代码阅读能力:基于python3.6实现,无须安装机器学习模块。 1. 半朴素贝叶斯的“半” 前面说到,朴素贝叶斯(NB)的‘朴素’就体现在它假设...
  • EM算法 Python实现课后题数据集朴素贝叶斯算法代码半朴素贝叶斯(AODE)分类器代码 课后题 试编程实现拉普拉斯修正的朴素贝叶斯分类器和半朴素贝叶斯分类器中的AODE分类器,并以⻄瓜数据集3.0为训练集,对P.151“测...
  • 这篇文章我尽可能用直白的话语总结一下我们学习会上讲到的朴素贝叶斯分类算法,希望有利于他人理解。 1 分类问题综述  对于分类问题,其实谁都不会陌生,日常生活中我们每天都进行着分类...
  • 总结 * 扩展 * 扩展 对于第二个问题朴素贝叶斯算法是在假定各个特征属性相互独立的情况下提出来这在现实生活中是很难实现的所以针对这个问题人们做了大量工作...ve bayesian 算法称为半朴素贝叶斯算法 * 扩展 该算法
  • 朴素和半朴素贝叶斯

    2018-07-22 21:27:01
    贝叶斯决策论是概率框架下实施决策的基本方法,它基于概率和误判误差的最小化来进行判别,是一种分类问题的解法。 原理 首先,将数据及其属性记为x,对于多分类任务,其可能的取值有N种,设为{c1,c2,c3.....cNc1...
  • 由于作为朴素贝叶斯分类器的主要特征的条件独立性假设条件过强且在不同数据集上表现出的...从降低后验概率的估计误差入手提出一种条件熵匹配的半朴素贝叶斯分类器。实验证明,该方法能有效提高朴素贝叶斯分类器的性能。
  • 朴素贝叶斯

    2019-06-29 15:33:54
    朴素贝叶斯算法看了几篇文章 ...觉得下面这片文章写的还可以:其中借鉴了西瓜书上的内容,还有半朴素贝叶斯分类器(比较笼统了),还有朴素贝叶斯方面的面试问题。 机器学习之朴素贝叶斯算法详解 ...
  • 对于贝叶斯算法来说,我们首先需要一个训练集数据,这个训练集是一个已经打好标签的数据。而要对一堆的数据打标签,人工来做是不太合适的,在这里需要结合人类与计算机各自的优势,来自动化的识别出比较明显的有...
  • 机器学习:半朴素贝叶斯分类器

    千次阅读 2017-11-27 00:00:00
      主要推送关于对算法的思考以及应用的...最近,阐述了朴素贝叶斯的2个例子引出了朴素贝叶斯的分类原理,给出了苹果的三个特征通过朴素贝叶斯分类器预测了第11个苹果是好果Or不好果,预测时发现某个分类中某个属性
  • 半朴素贝叶斯算法 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔,我会非常开心的~ 0. 前言 贝叶斯算法根据概率,选择概率最大的一类。 1. 朴素贝叶斯算法 朴素贝叶斯(naive Bayes)采用了属性条件...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 141
精华内容 56
关键字:

半朴素贝叶斯算法