证据权模型(C#版)
证据权法是通过计算和利用各种不同证据的权重(表示相对重要性)并将多种证据结合起来,预测某个时间是否会发生的一种方法
证据权法以概率论中的贝叶斯定理为基础。设D表示要一个随机事件。用P(D)表示这一事件概率,即D发生的概率。假设P(D)事先知道,即它是先验概率。则D不发生的概率为:

定义:
称为事件D的几率(Odd Ratio),也称优势率,它能更好的表示事件D发生的可能性大小。
用集合 
表示与D有关的n个证据,并设Xj都是逻辑变量。用D|X表示"单元中存在X的情况下D发生"这一事件。用P(D|X)表示概率,也称为后验概率(后验概率是获得有关信息后对先验概率修正后的概率)。由贝叶斯定理:

可以得出优势率:

假设n个条件相互条件独立,并在两边同时去对数:

令:


于是:

事件D|X的几率为

于是后验概率为:

其中wi称为证据X的证据权,反应Xi的存在对D的重要性:

其中,各条件概率的计算:

定义:

为X的对比系数,可以用来综合评价各证据的重要性
在数据较少的情况下,采用C来选择证据,回增大结果的不确定性,定义

其中:
为第i个证据后验概率的正负方差:

- /// <summary>
- /// 计算先验似然概率
- /// </summary>
- private void GetMinePriorLikelihoodProb()
- {
- mineral_PriorProbability = sum_EvidenceCount[0] / (double)gridNumber;
- minreal_PriorLiklihoodProbablity = mineral_PriorProbability / (1 - mineral_PriorProbability);
- }
- /// <summary>
- /// 计算证据权参数
- /// </summary>
- private void GetEvidenceStatistc()
- {
- for (int i = 0; i < mineral_EvidenceCount - 1; i++)
- {
- //证据权正定义
- /* Count(BjD)/Count(D)
- * ln----------------------
- * Count(Bj~D)/Count(~D)
- */
- evidence_PosWeight[i] = Math.Log((sumEvidence_MineralOccur[i] / sum_EvidenceCount[0]) /
- ((sum_EvidenceCount[i + 1] - sumEvidence_MineralOccur[i]) / (gridNumber - sum_EvidenceCount[0])));
- //证据权负定义
- /* Count(~BjD)/Count(D)
- * ln-------------------------
- * Count(~Bj~D)/Count(~D)
- */
- evidence_NegWeight[i] = Math.Log(((sum_EvidenceCount[0] - sumEvidence_MineralOccur[i]) / (sum_EvidenceCount[0]))
- / ((gridNumber - sum_EvidenceCount[0] - sum_EvidenceCount[i + 1] + sumEvidence_MineralOccur[i]) / (gridNumber - sum_EvidenceCount[0])));
- //证据权正方差
- /* 1 1
- * -----------+--------------
- * Count(BjD) Count(Bj~D)
- */
- evidence_PosVariance[i] = (1 / sumEvidence_MineralOccur[i]) +
- (1 / (sum_EvidenceCount[i + 1] - sumEvidence_MineralOccur[i]));
- //证据权负方差
- /* 1 1
- * -----------+--------------
- * Count(~BjD) Count(~Bj~D)
- */
- evidence_NegVariance[i] = (1 / (sum_EvidenceCount[0] - sumEvidence_MineralOccur[i])) +
- (1 / (gridNumber - sum_EvidenceCount[0] - sum_EvidenceCount[i + 1] + sumEvidence_MineralOccur[i]));
- //对比度
- //Cj=weightj+ - Weightj-
- evidence_ContrastRatio[i] = evidence_PosWeight[i] - evidence_NegWeight[i];
- //显著性统计量
- //Stud(C)=Cj/s(c)
- //s(c)=1/Sqrt(s2(weight+)+s2(weight-))
- evidence_StatisticalSignficance[i] = evidence_ContrastRatio[i] /
- (Math.Sqrt(evidence_PosVariance[i] + evidence_NegVariance[i]));
- }
- }
- /// <summary>
- /// 证据权合成
- /// </summary>
- private void SynthesisEvidence()
- {
- double[] evidence_PostProbLog = new double[gridNumber];
- double[,] evidence_Data = (double[,])mineralAndEvidence.Clone();
- for (int i = 1; i < mineral_EvidenceCount; i++)
- {
- for (int j = 0; j < mineralAndEvidence.GetLength(1); j++)
- {
- //将复制证据图层中与对调
- if (evidence_Data[i, j] == 0)
- {
- evidence_Data[i, j] = 1;
- }
- else
- {
- evidence_Data[i, j] = 0;
- }
- evidence_PostProbLog[j] += evidence_Data[i, j] * evidence_NegWeight[i - 1] +
- mineralAndEvidence[i, j] * evidence_PosWeight[i - 1];
- }//for
- }//for
- GetPostProb(evidence_PostProbLog);
- }//Method End
- /// <summary>
- /// 计算后验概率
- /// </summary>
- /// <param name="postProbLog"></param>
- private void GetPostProb(double[] postProbLog)
- {
- evidence_PostProb = new double[gridNumber];
- for (int i = 0; i < postProbLog.Length; i++)
- {
- evidence_PostProb[i] = (Math.Exp(postProbLog[i] + Math.Log(minreal_PriorLiklihoodProbablity)))
- / (1 + Math.Exp(postProbLog[i] + Math.Log(minreal_PriorLiklihoodProbablity)));
- }//for
- }
证据权模型(C#版)的更多相关文章
- Reactor模型-单线程版
Reactor模型是典型的事件驱动模型.在网络编程中,所谓的事件当然就是read.write.bind.connect.close等这些动作了.Reactor模型的实现有很多种,下面介绍最基本的三种: ...
- 网络IO模型-异步选择模型(Delphi版)
其实关于这个模型,网络上也有一个案例说明 老陈使用了微软公司的新式信箱.这种信箱非常先进,一旦信箱里有新的信件,盖茨就会给老陈打电话:喂,大爷,你有新的信件了!从此,老陈再也不必频繁上下楼检查信箱了, ...
- Linux提权(2)-高级版
当你在攻击受害者的电脑时即使你拥有了一个shell,依然可能会有一些拒绝执行指令的限制.为了获得目标主机的完整控制权限,你需要在未授权的地方绕过权限控制.这些权限可以删除文件,浏览私人信息,或者安装并 ...
- Linux提权(1)-基础版~
利用Linux内核漏洞提权 VulnOS version 2是VulHub上的一个Linux提权练习,当打开虚拟机后,可以看到 获取到低权限SHELL后我们通常做下面几件事 1.检测操作系统的发行版本 ...
- IO模型-java版
描述IO,我们需要从两个层面: 编程语言 实现原理 底层基础 从编程语言层面 BIO | NIO | AIO 以Java的角度,理解,linux c里也有AIO的概念(库),本文只从Java角度入手. ...
- java 高性能Server —— Reactor模型单线程版
NIO模型 NIO模型示例如下: Acceptor注册Selector,监听accept事件 当客户端连接后,触发accept事件 服务器构建对应的Channel,并在其上注册Selector,监听读 ...
- NLP学习(2)----文本分类模型
实战:https://github.com/jiangxinyang227/NLP-Project 一.简介: 1.传统的文本分类方法:[人工特征工程+浅层分类模型] (1)文本预处理: ①(中文) ...
- 模型(Model)– ASP.NET MVC 4 系列
为 MVC Music Store 建模 在 Models 目录中为专辑.艺术家.流派建模: public class Album { public virtual int ...
- 《ASP.NET MVC 5 高级编程(第5版)》
第1章.入门 本章主要内容: ASP.NET MVC 5概述 其应用程序的创建方法 其应用程序的及结构 概述:将MVC设计模式应用于ASP.NET框架 ASP.NET 1.0支持两层抽象: Syste ...
随机推荐
- Retrofit相关资料
高速Android开发系列网络篇之Retrofithttp://www.w3c.com.cn/%E5%BF%AB%E9%80%9Fandroid%E5%BC%80%E5%8F%91%E7%B3%BB% ...
- FineUI开发实践
ASP.NET-FineUI开发实践-7 摘要: 下拉显示grid列表.其实很简单,但是试了很多方法,水平有限,主要是都不好使,还是简单的好使了,分享下.先是看了看网上的,是直接写个了extjs控件类 ...
- cocos2d的-X- luaproject的LUA脚本加密
2014/1/26 更新 近期又发现了一个非常easy的方法,事实上coco2dx已经给我们提供设置loader的方法. 注意:有个局限性,在非android平台下调用pEngine->exec ...
- 开源Asp.Net MVC网上商城BrnShop
开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载 BrnShop网上商城是以Asp.Net mvc3为基础开发的网上商城,源代码完全开源(企业版的源代码目前还没有完全整理完成,一 ...
- 如果gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧
如果著名的gen.lib.rus.ec这个电子书下载站上不去了,那就用这个吧: 万千合集站 http://www.hejizhan.com/ 里面除了镜像索引了gen.lib.rus.ec上的所有英文 ...
- 【值得收藏】绘图工具Origin的学习资料汇编【可免费下载】
Origin使用教程 Origin为OriginLab公司出品的较流行的专业函数绘图软件,是公认的简单易学.操作灵活.功能强大的软件,既可以满足一般用户的制图需要,也可以满足高级用户数据分析.函数拟合 ...
- 【ios开发】iOS App测试方案
之前IOS测试一半都是采用的Testflight,但是2014.2.19日以后,testflight已经不提供新注册的用户下载SDK了. 但是不用担心我们还可以采用其他几种方案. 1)Ubertest ...
- jQuery的入门与简介
jQuery的入门与简介<思维导图> <初学者请各位高手指点指点> jQuery是继Prototype之后又一个优秀的JavaScript库,在JavaScript基础上我 ...
- 在MVC中添加异常增加日志
MVC的结构非常棒,基本你能想到注入的地方都可以找到地方,譬如IActionFilter,IResultFilter,IAuthorizationFilter以及IExceptionFilter 以下 ...
- C# 从Excel2003将数据导入到SQL2005,数据发生截断的问题分析
C# 从Excel2003将数据导入到SQL2005,数据发生截断的问题分析 问题描述:大家没有遇到过这种情况使用自己编写的工具读取Excel2003文件中的数据,然后执行插入语句将数据批量导入到SQ ...