精华内容
下载资源
问答
  • 基于广义贝叶斯风险的递归联合轨迹间关联和传感器非线性偏差估计
  • 作者 | 腾讯 AI Lab 编辑 | 钰莹 一、概述 端到端语音识别技术将语音识别系统中的各个组件整合至同一个神经网络框架中,与传统语音识别系统相比具有建模简洁,赋能组件之间联合优化以及系统占用空间小等优点...
    72847121df94452cd18f1f39a4b3c7e2.png 作者 | 腾讯 AI Lab 编辑 | 钰莹 一、概述

    端到端语音识别技术将语音识别系统中的各个组件整合至同一个神经网络框架中,与传统语音识别系统相比具有建模简洁,赋能组件之间联合优化以及系统占用空间小等优点,近几年逐渐成为语音识别领域里最重要的研究方向之一。现有的端到端语音识别系统主要包括基于 Connnectionist Temporal Classification (CTC),基于 Sequence-to-sequence(Seq2Seq) 以及基于 RNN Transducer (RNNT) 三类系统。

    Minimum Bayes Risk (MBR) 作为序列学习中最常用的区分性训练准则之一,已经成功应用于传统的混合语音识别系统中并能显著提升模型性能。最近在工作 [1] 中谷歌的研究人员将 MBR 训练准则应用在了基于 Seq2Seq 的端到端识别系统中,并由腾讯人工智能实验室的研究人员在工作 [2] 中得到了进一步提升。然而,还未曾有针对 RNNT 端到端语音识别系统的 MBR 训练的相关研究。同时由于端到端系统中的语言模型在训练过程中仅使用了语料相对应的文本作为训练数据,无论从规模以及覆盖的领域都有很大欠缺,如何将在更大规模文本数据训练得到的外部语言模型信息同时在训练和解码时注入到端到端语音识别模型中仍然是一个尚未解决的问题。

    本论文由腾讯 AI Lab 独立完成,首次提出针对 RNNT 端到端语音识别系统的 MBR 训练并给出详细的数学推导。论文已被 Interspeech 2020 接收。

    2c17157581c3c83bb5534f33a090dfc1.png

    以 RNNT 损失函数训练的模型作为初始模型,本文在 MBR 训练过程中使用在线解码生成的 N 个最好假设 (Nbest) 作为假设空间,以最小化 Nbest 和标注序列之间的期望 Levenshtein 距离作为目标函数。同时为了能够将在更大规模文本数据训练得到的外部语言模型结合进 RNNT 端到端语音识别系统,文章探索并给出相应的策略将外部语言模型引入至 MBR 训练以及解码过程中以进一步提升性能。

    作者在 21000 小时的工业级语料规模上进行实验,在采用基于卷积和 Transformer 结构的 SOTA RNNT 系统上,团队观察到 MBR 训练可以带来显著的识别性能提升,同时在 MBR 训练和解码时采用文中提出的方法与外部语言模型结合时性能又能有进一步提升。最后在内部口语以及朗读测试集上 MBR 训练以及外部语言模型结合带来的识别率提升分别在 1.2% 以及 0.5%。

    RNNT 端到端语音识别系统由于系统占用空间小的特点非常适用于在终端上部署的语音识别服务场景,在此系统中端到端可以在离线环境下对用户提供高质量的语音识别服务。

    以下为方案详细解读。

    二、方案详解

    基于 RNNT 的端到端神经网络由 Transcription (Encoder), Prediction (Decoder) 以及 Joint 神经网络组成。其中 Transcription 和 Prediction 网络往往都是采用长短时记忆单元(LSTM) 的循环神经网络结构。最近,以自注意力机制为核心的 Transformer 网络结构在传统以及端到端识别系统中与 LSTM 相比都有显著提升。作者首先对 RNNT 端到端神经网络结构每个部分都进行了改进,采取卷积以及 Transformer 混合的网络结构。如图一,Transcription 网络由三个基本模块堆叠而成,其中每个模块由三层时延神经网络 (TDNN) 及一层 Transformer 组成。Prediction 网络同样包含三个基本模块,每个模块包含一层一维因果卷积及一个 Transformer 层。Transcription 及 Prediction 网络具体配置见表一及表二。Joint 神经网络通常会采用前向神经网络建模 (Feedforward Network), 但实验发现采用 Gated Linear Units (GLU) 的 Joint 网络可以获得显著的性能提升。

    f22522b174c6084fbe072915f9918fd5.png图一:本文采取 RNNT 网络结构

    aae483932c173db140c1c5df641b090e.png表一:Transcription(Encoder) 网络结构具体配置

    5bdc8ef77bc97e4d2ede38779d19847d.png表二:Prediction(Decoder) 网络结构具体配置

    MBR 训练

    如前文所提到的,MBR 训练的目标是将标注序列与 RNNT 模型在线解码生成 Nbest 之间的期望 Levenshtein 距离最小化,有了 MBR 训练的目标函数,为了进行 MBR 训练,还需要求出 MBR 目标函数针对 RNNT 网络输出节点的梯度。由于篇幅所限,对详细的数学推导过程感兴趣的读者可以阅读论文原文 [3] 。经过一系列的推导,可以得出 MBR 目标函数针对 RNNT 网络输出的梯度的具体形式,这个梯度形式就是作者进行 MBR 训练的数学基础。

    外部语言模型结合

    在端到端系统中常用的与外部语言模型结合的方法是 Shallow Fusion,其主要的思路就是在 RNNT 识别系统解码做 Beam search 时,将 RNNT 模型以及外部语言模型输出的得分做一个内插。然而对于 RNNT 端到端系统而言,不能做简单的内插,原因在于 RNNT 模型会输出一个额外的 blank 符号,而此符号在语言模型的输出中并不存在。为此本文提出一个 RNNT 模型与外部语言模型结合的策略,对于 RNNT 模型输出的 blank 概率保持不变,对于非 blank 概率输出部分,团队先和外部语言模型进行内插,为了保证最终的输出概率仍然保持概率分布的特性,需要对最终输出 RNNT 模型输出非 blk 概率进行归一化。具体的归一化细节可以参考论文原文 [3]。针对 RNNT 端到端系统做 MBR 训练附带的好处是可以在 RNNT 训练时引入外部语言模型的信息,由于在 MBR 训练时将 Beam Search 得到的 Nbest 作为假设空间,如果在 Beam Search 时使用上述介绍的办法结合外部的语言模型,很自然就可以将外部的语言模型信息引入至 RNNT 端到端模型的训练过程中。

    实验结果

    作者在 21000 小时的工业级语料规模上进行实验,测试集采用两个内部数据集,一个为包含朗读语音,另一个包含的是口语语音。从表三的第二行与第一行对比可以看到,文中提出的与外部语言模型结合的策略是有效的,在朗读的测试集上观察到了显著的提升。与基线 RNNT 系统相比较,本文提出的 MBR 训练在朗读和测试集上识别准别率分别提升了 0.6% 以及 0.4%。最后一行可以看到在内部口语以及朗读测试集上,同时在 MBR 训练以及解码时结合外部语言模型进行可以带来 1.2% 以及 0.5% 的识别率显著提升。

    f6e0ae8d740d7578016dcd9a753bf738.png表三:RNNT 基线,MBR 训练,在解码和 MBR 训练时引入外部语言模型的错字率比较

    三、总结及展望

    本文提出的技术可以提升 RNNT 端到端语音识别系统的性能以及跨领域的鲁棒性,可以应用的场景包括在终端上部署的语音识别服务场景,在离线环境下对用户提供高质量的语音识别服务。

    未来将进一步提升 MBR 训练的训练效率及稳定性,同时提出可以动态添加热词的外部语言模型结合算法,提升 RNNT 端到端识别系统在长尾词上的识别性能。

    参考文献

    1.R. Prabhavalkar, T. N. Sainath, P. N. Y. Wu, Z. Chen, C. Chiu, and A. Kannan, “Minimum word error rate training for attentionbased sequence-to-sequence models,” in ICASSP, 2018.

    2.C. Weng, J. Cui, G. Wang, J. Wang, C. Yu, D. Su, and D. Yu, “Improving attention based sequence-to-sequence models for end-to-end english conversational speech recognition,” in Proc. Interspeech 2018, 2018, pp. 761–765.

    3.C.Weng, C. Y, J. Cui, C. Zhang, D. Yu, " Minimum Bayes Risk Training of RNN-Transducer for End-to-End Speech Recognition", in Proc. Interspeech 2020

    517e5581fff0959fa746ccf2f0f92b6e.gif

    你也「在看」吗??

    展开全文
  • 贝叶斯最小风险判别

    千次阅读 2019-10-21 19:21:51
    贝叶斯最小风险判别 •当考虑到对于某一类的错误判决要比对另一类的判决更为关键时,就需要把最小错误概率的贝叶斯判别做一些修正,提出条件平均风险rj(x)。 •M类分类问题的条件平均风险rj(x) –对M类问题,如果...

    贝叶斯最小风险判别

    当考虑到对于某一类的错误判决要比对另一类的判决更为关键时,就需要把最小错误概率的贝叶斯判别做一些修正,提出条件平均风险rj(x)

    M类分类问题的条件平均风险rj(x)

    M类问题,如果观察样本被判定属于ωj类 ,则条件平均风险为:

    Lij称为将本应属于ωi类的模式判别成属于ωj类的是非代价。

    意义

    对于自然属性是属于ωi类的模式x来说,它来自ωi类的概率应为P(ωi |x)

    如果分类器判别x是属于ωj类,但它实际上来自ωi类,也就是说分类器失败,这时Lij为失分,对应的条件风险为后验概率进行Lij的加权运算。

    由于模式x的自然属性可能来自M类中的任一类,因此可将观察样本指定为ωj类的条件平均风险用rj(x)的公式运算。

    Lij的取值

    i=j,即判别正确,得分, Lij可以取负值或零,表示不失分。

    i<>j,即判别错误,失分, Lij应取正值。

    最小平均条件风险分类器

    分类器对每一个模式xM种可能的类别可供选择。

    若对每一个x计算出全部类别的平均风险值r1(x), r2(x),…, rM(x),并且将x指定为是具有最小风险值的那一类,则这种分类器称为最小平均条件风险分类器。

    表达式

    贝叶斯最小风险判别

    两类(M=2)的情况

    [例子]

    多类(M类)情况的贝叶斯最小风险判别

     

    展开全文
  • 最小风险贝叶斯

    2013-11-18 14:30:41
    最小风险 贝叶斯 分类器 自己写的
  • 最小风险贝叶斯决策

    万次阅读 多人点赞 2015-07-26 10:52:29
    最小风险贝叶斯决策

    在决策中,除了关心决策的正确与否,有时我们更关心错误的决策将带来的损失。比如在判断细胞是否为癌细胞的决策中,若把正常细胞判定为癌细胞,将会增加患者的负担和不必要的治疗,但若把癌细胞判定为正常细胞,将会导致患者失去宝贵的发现和治疗癌症的机会,甚至会影响患者的生命。这两种类型的决策错误所产生的代价是不同的。

    考虑各种错误造成损失不同时的一种最优决策,就是所谓的最小风险贝叶斯决策。设对于实际状态为wj的向量x采取决策αi所带来的损失为

    λ(αi,wj),i=1,...,k,j=1,...,c
    该函数称为损失函数,通常它可以用表格的形式给出,叫做决策表。需要知道,最小风险贝叶斯决策中的决策表是需要人为确定的,决策表不同会导致决策结果的不同,因此在实际应用中,需要认真分析所研究问题的内在特点和分类目的,与应用领域的专家共同设计出适当的决策表,才能保证模式识别发挥有效的作用。

    对于一个实际问题,对于样本x,最小风险贝叶斯决策的计算步骤如下:
    (1)利用贝叶斯公式计算后验概率:

    P(wj|x)=p(x|wj)P(wj)ci=1p(x|wi)P(wi),j=1,...,c
    其中要求先验概率和类条件概率已知。
    (2)利用决策表,计算条件风险:
    R(αi|x)=j=1cλ(αi|wj)P(wj|x),i=1,...k

    (3)决策:选择风险最小的决策,即:
    α=argmini=1,...,kR(αi|x)

    现在用之前的判别细胞是否为癌细胞为例。状态1为正常细胞,状态2为癌细胞,假设:

    P(w1)=0.9,P(w2)=0.1p(x|w1)=0.2,p(x|w2)=0.4λ11=0,λ12=6λ21=1,λ22=0

    计算得后验概率为:
    p(w1|x)=0.818,p(w2|x)=0.182

    计算条件风险:
    R(α1|x)=j=12λ1jP(wj|x)=λ12P(w2|x)=1.092

    R(α2|x)=j=12λ2jP(wj|x)=λ21P(w1|x)=0.818

    由于R(α1|x)>R(α2|x),即判别为1类的风险更大,根据最小风险决策,应将其判别为2类,即癌细胞。
    由此可见,因为对两类错误带来的风险的认识不同,从而产生了与之前不同的决策。显然,但对不同类判决的错误风险一致时,最小风险贝叶斯决策就转化成最小错误率贝叶斯决策。最小错误贝叶斯决策可以看成是最小风险贝叶斯决策的一个特例。
    展开全文
  • 贝叶斯网络风险系统实例

    千次阅读 2018-05-14 10:36:30
    贝叶斯网络 套袋算法 数据重命名、连接、聚合等等处理 code #加载所需的包 library(data.table) library(dplyr) library(psych) library(caret) library(smbinning) #设置工作路径 setwd('D:\\R\\...

    应用的知识

    最优分段
    主成分分析
    贝叶斯网络
    套袋算法
    spearman相关系数
    数据重命名、连接、聚合等等处理

    code

    #加载所需的包
    library(data.table)
    library(dplyr)
    library(psych)
    library(caret) 
    library(smbinning) 
    
    #设置工作路径
    setwd('D:\\R\\wokingdiretory\\work\\4_29')
    
    #读取数据
    ST2015 <- read.csv('xx.csv', sep = "",fileEncoding = 'utf-8')
    ST2016 <- read.csv('xxx.csv', sep = ",",fileEncoding = 'utf-8')
    ZC2015 <- read.csv('xxxx.csv', sep = ",",fileEncoding = 'utf-8')
    ZC2016 <- read.csv('xxxxx.csv', sep = ",",fileEncoding = 'utf-8')
    
    head(ST2015);dim(ST2015);str(ST2015)
    head(ST2016);dim(ST2016);str(ST2016)
    head(ZC2015);dim(ZC2015);str(ZC2015)
    head(ZC2016);dim(ZC2016);str(ZC2016)
    
    ###################################数据整合###################################
    
    ST2015 <- as.data.table(ST2015)
    ST2016 <- as.data.table(ST2016)
    ZC2015 <- as.data.table(ZC2015)
    ZC2016 <- as.data.table(ZC2016)
    
    ST2015 <- ST2015[,ClassName :='ST']
    ZC2015 <- ZC2015[,ClassName :='ZC']
    ST2016 <- ST2016[,ClassName :='ST']
    ZC2016 <- ZC2016[,ClassName :='ZC']
    
    dt_2015 <- rbind(ST2015,ZC2015)
    dt_2016 <- rbind(ST2016,ZC2016)
    data <- rbind(dt_2015,dt_2016)
    total_name <- names(data)
    
    split_name <- unlist(strsplit(names(data), "_"))
    dis_list <- seq(1,length(split_name),2)
    names(data)<- c(split_name[-dis_list],'ClassName')
    
    data <- as.data.frame(data)
    
    for (i in 4:(ncol(data)-1)) {
      data[,i] <- as.numeric(data[,i])
    }
    
    str(data)
    
    # 遍历计算data的缺失百分比
    num_na <- c()
    for (i in 1:ncol(data)) {
      num_na[i] <- sum(is.na(data[,i]))/nrow(data)*100
    }
    
    xuhao <- which(num_na>25)
    names(data)[xuhao] 
    data <- data[,-xuhao]
    dim(data)
    
    ################################ spearman相关系数检验
    
    data$ClassName[which(data$ClassName=="ZC")] <- 1
    data$ClassName[which(data$ClassName=="ST")] <- 0
    
    data$ClassName <- as.numeric(data$ClassName)
    
    spear_result <- corr.test(data[4:(ncol(data)-1)], data[ncol(data)], method = "spearman")
    spear_result $r 
    spear_result $p
    save_var_list <- which(abs(spear_result$r)>0.1)
    temp_dt_r <- (spear_result$r)[save_var_list,]
    temp_dt_p <- (spear_result$p)[save_var_list,]
    temp_dt_r <- as.data.frame(temp_dt_r)
    temp_dt_p <- as.data.frame(temp_dt_p)
    temp_dt <- data.frame(temp_dt_r,temp_dt_p)  
    temp_name <- row.names(temp_dt)
    temp_dt <- data.frame(temp_name,temp_dt)  
    names(temp_dt) <- c('var_name','r','p')
    order_result <- arrange(temp_dt, desc(r)) 
    temp_dt_result <- filter(order_result,p<0.05) 
    
    model_dt <- data[c('Enddt',as.character(temp_dt_result[,'var_name']),'ClassName')]
    dim(model_dt)
    head(model_dt)
    
    for (i in 2:(ncol(model_dt)-1)) {
      model_dt[,i] <- as.numeric(model_dt[,i])
    }
    str(model_dt)
    
    #set.seed(1230) 
    #preproc <- preProcess(model_dt[,-c(1,ncol(model_dt))],method="bagImpute")  
    #data1 <- predict(preproc,model_dt[,-c(1,ncol(model_dt))])  
    #data1$ClassName <- model_dt[,ncol(model_dt)]
    #data1$Date <- model_dt[,1]
    #model_dt <- data1
    #write.csv(data1,'model_dt.csv',fileEncoding = 'utf-8') 
    model_dt <- read.csv('model_dt.csv',encoding = 'utf-8') 
    head(model_dt)
    names(model_dt)
    model_dt <- model_dt[,-1]
    
    #######################################变量组合(主成分分析)################################################
    
    ################### 主成分分析
    
    cor(model_dt[,-c(16,17)])
    
    KMO(cor(model_dt[,-c(9,12,16,17)]))
    
    # (PC1= 0.39*Retearassrt + 0.50*Totprfcostrt + 0.55*Mopeprfrt)
    xlnl_num_factors <- fa.parallel(model_dt[,c(1,8,13)],fa='pc',n.iter = 100,show.legend = FALSE,
                             main = "Scree plot with parallel analysis")
    
    xlnl_pca <- principal(model_dt[,c(1,8,13)],nfactors = 1,rotate = "varimax")
    round(unclass(xlnl_pca$weights),2)
    
    # (PCA = 0.6911728*EPSgrrt + 0.6911728*Totassrat)
    chengznl_num_factors <- fa.parallel(model_dt[,c(10,14)],fa='pc',n.iter = 100,show.legend = FALSE,
                                    main = "Scree plot with parallel analysis")
    
    chengznl_pca <- principal(model_dt[,c(10,14)],nfactors = 1,rotate = "varimax")
    round(unclass(chengznl_pca$weights),8)
    
    
    # PC1 = 0.340575*Qckrt +0.340567*Cascurrt +0.082665*Dbgr + 0.275111*Wrkcapassrt -0.243764*Dbassrt 
    changznl_num_factors <- fa.parallel(model_dt[,c(2,4,5,11,15)],fa='pc',n.iter = 100,show.legend = FALSE,
                                    main = "Scree plot with parallel analysis")
    
    changznl_pca <- principal(model_dt[,c(2,4,5,11,15)],nfactors = 2,rotate = "varimax")
    round(unclass(changznl_pca$weights),6)
    
    # (PC1 = 0.687828*ARTrat + 0.687828*Invtrtrrat)
    zcglnl_num_factors <- fa.parallel(model_dt[,c(3,6)],fa='pc',n.iter = 100,show.legend = FALSE,
                                        main = "Scree plot with parallel analysis")
    
    zcglnl_pca <- principal(model_dt[,c(3,6)],nfactors = 1,rotate = "varimax")
    round(unclass(zcglnl_pca$weights),6)
    
    ###########各个综合指标值计算
    profitability_index <- 0.39*model_dt$Retearassrt + 0.50*model_dt$Totprfcostrt + 0.55*model_dt$Mopeprfrt
    growth_capability_index <- 0.6911728*model_dt$EPSgrrt + 0.6911728*model_dt$Totassrat
    debt_solvency_index <- 0.340575*model_dt$Qckrt +0.340567*model_dt$Cascurrt +0.082665*model_dt$Dbgr + 
                                  0.275111*model_dt$Wrkcapassrt -0.243764*model_dt$Dbassrt
    asset_management_capability_index <- 0.687828*model_dt$ARTrat + 0.687828*model_dt$Invtrtrrat
    cash_flow_level_index <- model_dt$OpeCPS
    
    modify_model_dt <- data.frame(Profitability=profitability_index,
                                  Growth_capability=growth_capability_index,
                                  Debt_solvency=debt_solvency_index,
                                  Asset_management_capability=asset_management_capability_index,
                                  Cash_flow_level=cash_flow_level_index,
                                  Date=model_dt$Date,ClassName=model_dt$ClassName)
    
    dim(modify_model_dt)
    str(modify_model_dt)
    
    library(smbinning) 
    
    n_rows <- ncol(modify_model_dt)
    Names <- names(modify_model_dt)[-c(n_rows-1,n_rows)] 
    Names
    
    for (i in 1:(ncol(modify_model_dt)-2)) {
      modify_model_dt[,i] <- as.numeric(modify_model_dt[,i])
    }
    str(modify_model_dt)
    summary(modify_model_dt)
    
    # 最优分段
    
    for (Name in Names) {
      index <- duplicated(modify_model_dt[c(Name)])
      assign(Name,smbinning(df=unique(filter(modify_model_dt[-which(index),c(Name,'ClassName')],eval(parse(text = paste0(Name,'<100'))))),
                            y="ClassName",x=Name,p=0.05))
    }
    
    summary(modify_model_dt$Profitability) 
    Profitability <- smbinning(df=filter(modify_model_dt,Profitability<10 ),y="ClassName",x='Profitability',p=0.05)
    
    summary(modify_model_dt$Debt_solvency) 
    Debt_solvency <- smbinning(df=filter(modify_model_dt,Debt_solvency<5329938277 ),y="ClassName",x='Debt_solvency',p=0.05)
    
    summary(modify_model_dt$Asset_management_capability)
    Asset_management_capability <- smbinning(df=filter(modify_model_dt,Asset_management_capability<30),
                                             y="ClassName",x='Asset_management_capability',p=0.05)
    
    
    Profitability$ctree 
    Growth_capability$ctree  
    Debt_solvency$ctree
    Asset_management_capability$ctree
    Cash_flow_level$ctree
    
    # 根据数据的分组将原始数据进行离散化赋值
    # 1、Profitability
    summary(modify_model_dt$Profitability) 
    Profitability$ctree 
    
    modify_model_dt$Profitability <- ifelse(modify_model_dt$Profitability <= -0.07826,c("(-4.6756,-0.07826]"), c("[-0.07826,1.8448)"))
    
    # 2、Growth_capability
    summary(modify_model_dt$Growth_capability) 
    Growth_capability$ctree 
    modify_model_dt$Growth_capability <- ifelse(modify_model_dt$Growth_capability <= -0.36902,c("(-17.0318,-0.36902]"),
                                                ifelse(modify_model_dt$Growth_capability <= 0.84242,c("(-0.36902,0.84242]"), c("(-0.84242,102.8643]")))
    
    # 3、Debt_solvency
    summary(modify_model_dt$Debt_solvency) 
    Debt_solvency$ctree 
    modify_model_dt$Debt_solvency <- ifelse(modify_model_dt$Debt_solvency <= 1.0049,c("(-868515548,1.0049]"),
                                                ifelse(modify_model_dt$Debt_solvency <= 131149421.3953,c("(1.0049,131149421.3953]"), c("(131149421.3953,5329938277]")))
    
    # 4、Asset_management_capability
    summary(modify_model_dt$Asset_management_capability) 
    Asset_management_capability$ctree 
    modify_model_dt$Asset_management_capability <- ifelse(modify_model_dt$Asset_management_capability <= 2.1183,c("(-10.55 ,2.1183]"), c("[2.1183,42392.45)"))
    
    
    # 5、Cash_flow_level
    summary(modify_model_dt$Cash_flow_level) 
    Cash_flow_level$ctree 
    modify_model_dt$Cash_flow_level <- ifelse(modify_model_dt$Cash_flow_level <= -0.3757,c("(-0.3757,1.0049]"),
                                            ifelse(modify_model_dt$Cash_flow_level <= -0.1337,c("(-0.3757,-0.1337]"), c("(-0.1337,8.15480]")))
    
    
    str(modify_model_dt)
    
    for (k in 1:(ncol(modify_model_dt)-2)) {
      modify_model_dt[,k] <- as.factor(modify_model_dt[,k])
    }
    
    str(modify_model_dt)
    modify_model_dt$Date <- as.Date(modify_model_dt$Date)
    modify_model_dt$ClassName <- as.factor(modify_model_dt$ClassName)
    
    ###############################################构建贝叶斯网络模型###########################################
    
    library(caret) 
    
    model_dt_2015 <- filter(modify_model_dt,Date< '2016-01-01')
    model_dt_2016 <- filter(modify_model_dt,Date>='2016-01-01')
    # 删除Date一列
    model_dt_2015 <- model_dt_2015[,-c(ncol(model_dt_2015)-1)]
    model_dt_2016 <- model_dt_2016[,-c(ncol(model_dt_2016)-1)]
    
    set.seed(123012)
    test_number <-createDataPartition(y=model_dt_2016$ClassName,p=0.40,list=FALSE) # 测试数据序号
    train_temp <- model_dt_2016[-test_number, ] #训练数据集
    test <- model_dt_2016[test_number, ] #测试集
    train <- rbind(train_temp,model_dt_2015)
    
    #####################################################
    #################################利用训练集训练模型
    
    library(bnlearn) 
    tan_train <- tree.bayes(train,"ClassName")
    plot(tan_train) 
    modelstring(tan_train) 
    fit_result_train <- bn.fit(tan_train,train,method = "bayes") 
    fit_result_train 
    predict_train_train <- predict(fit_result_train,train) 
    temp_result_train <- table(predict_train_train,train[,"ClassName"]) 
    # 正确率(97.42063%)
    accuracy_rate_train <- ((temp_result_train[1,1]+temp_result_train[2,2])/sum(temp_result_train))*100
    
    ################################################
    #################################预测2016年
    predict_train_2016 <- predict(fit_result_train,test) 
    temp_result_2016 <- table(predict_train_2016,test[,"ClassName"]) 
    # 正确率(96.8254%)
    accuracy_rate_2016 <- ((temp_result_2016[1,1]+temp_result_2016[2,2])/sum(temp_result_2016))*100
    

    结果

    在训练样本中该模型总体的预测正确率达到了97.42063%, 测试样本中总体的预测正确率为96.8254%

    这里写图片描述

    展开全文
  • 多类(M类)情况的贝叶斯最小风险判别
  • 1.基于最小错误率的贝叶斯决策 共w1~wn种决策 本质上就是最大后验概率P(wi | X)的贝叶斯决策 ...2.最小风险贝叶斯决策 共a1~aa种条件风险 对于决策ai可以在c个风险λ(ai,wj)中任选一个,...
  • 基于贝叶斯网络的移动支付风险评估模型
  • 结合专家知识和数据进行贝叶斯网络学习.首先利用专家知识建立初始贝叶斯网络结构和参数;然后基于变量之间基本依赖关系、基本结构和依赖分析方法,对初始贝叶斯网络结构进行修正和调整,得到新的贝叶斯网络结构;最后将...
  • 贝叶斯决策(Bayes Decision) 是十大经典机器学习算法之一,其实我们日常做判断时常常用到它,只是我们没有发现。    现假设你面前有10张卷子,老师告诉你有5份是说没有复习实际也没有复习的学渣的,有5份是说...
  • MATLAB代码最小风险贝叶斯决策

    热门讨论 2010-06-28 01:01:24
    一个最小风险贝叶斯决策的程序,很不错,推荐。
  • 贝叶斯决策

    2015-12-06 16:37:00
    参考文献:http://wenku.baidu.com/link?url=bCWUt2SDACsX6CXndtF8uEeYRo9r33hDVTaDORFcd8sAWbL4hYqmjDeyn5RfyYZ3VjzbnQvLVrNoBapp617_kmTCCKlDV4K_1E4-nTenauO ...3)贝叶斯风险最小准则 4)最大最小准则 ...
  • 基于贝叶斯网络的商业银行操作风险管理,王志祥,,针对商业银行操作风险的防范,达到降低操作风险的目的,本文引入工程学领域的贝叶斯网络模型,以实现操作风险的有效管理。贝叶斯网�
  • 一、知识脉络二、基本原理贝叶斯决策论通过相关概率已知的情况下利用误判损失来选择最优的类别分类。...h*称为贝叶斯最优分类器,与之对应的总体风险为贝叶斯风险,另lambda等于1时,最优贝叶斯分类器是使后验概率P(...
  • 最后以巨佬——“贝叶斯大爷”作为基本机器学习算法学习的压轴算法》》》》》》》》》》》》》膜拜!!!!!! 1 准备知识:条件概率公式   2 如何使用条件概率进行分类  假设这里要被分类的类别有两类,类c1...
  • 基于贝叶斯多步攻击图的安全风险评估
  • 通过历史资料形成的条件概率定量分析得出后验概率,利用贝叶斯网络因果推理算法,确定测评数据中各测评项概率值,同时根据测评项概率对被测评系统进行风险评价。通过上述风险评估过程使被测评机构感知风险态势。
  • 基于最小风险贝叶斯分类器

    热门讨论 2012-05-07 14:44:39
    基于最小风险贝叶斯分类器的设计程序代码
  • 贝叶斯风险 贝叶斯估计
  • 1. 朴素贝叶斯分类 1.1 理论: 1.2 朴素贝叶斯算法流程: 1.3 举例说明 1.3.1 计算步骤: 1.3.2 程序代码: 2. 贝叶斯估计 2.1 算法流程: 2.2 举例说明 1. 朴素贝叶斯分类 朴素贝叶斯是基于贝叶斯定理与...
  • 贝叶斯

    2015-04-23 16:01:00
    风险又是和损失紧密相连的,所谓最小风险贝叶斯决策就是考虑各种错误造成损失不同时而提出的一种决策规律,而基于最小错误率的贝叶斯决策不能确定决策带来的后果,即风险性 转载于:...
  • 首先阐述了贝叶斯网络的相关理论和在风险管理方面的应用研究,然后对人力资源管理风险的内涵和分类进行界定,在此基础上构建了人力资源管理风险预警指标体系。最后以贝叶斯网络为工具,建立了基于贝叶斯网络的人力资源...
  • 两类(M=2)情况的贝叶斯最小风险判别 选M=2,即全部的模式样本只有ω1和ω2两类,要求分类器将模式样本分到ω1和ω2两类中,则平均风险可写成: 当分类器将x判别为ω1时: 当分类器将x判别为ω2时: 若r1(x...
  • 基于贝叶斯网络的多状态系统概率风险评估

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 616
精华内容 246
关键字:

贝叶斯风险