决策树与规则引擎
来源:互联网 发布:能帮人找东西的软件 编辑:程序博客网 时间:2024/06/06 08:26
人们对决策树的使用
决策树常常被应用于数据挖掘之中,是最基础的算法之一,几乎每一个学习过数据挖掘的朋友都知道决策树。但还原决策树本来的用途,它被用于一些决策或决定时,还是比较实用和直观的。其树型结构指导人们进行在面对某个决策时,先关注其中几个最重要的方向,这几方向定下来后,再细分下去。近年来泳道路,思维导向图之类的图形/办公自动化工具慢慢兴起,得到大家的广泛好评,也就是决策树的一个很好的实现。
不过在各企业的应用系统中,又决策树又不是很常用,归根到底,决策树是思维导向的内容,是飘忽不定的东西,要形成结构化的内容非常困难。而且市面上大多数的业务系统都是使用关系型数据库,在处理格式数据时非常的方法,但处理树形数据就不一定性。所以也慢慢有部分技术公司开始使用对象型数据库。另一方面,决策树中的决策和判断都比较不规则,很多内容更像是程序员在编程,是一些规则,不是信息,这导致了传统的业务系统处理困难。
决策树的组成与程序表现
决策树使用一个树型结构来表达业务规则。如下图所示。
每一个非叶子结点都代码一个决策/决定,而叶子结点执行动作。而每一条边表达决策的可选定值,可以理解为判断。
如下图,A=red或=blue是可选值,而B属于决策结点。
但在程序实现中,就不一定是这样的组织方式,一般而言,结点的文字会比线上的文字更容易看清楚,加上各种编程语言都基于上有树型控件的处理,都是以结点的形式表达,很少使用连接线来表来。所以上图在程序中,最常见的表示方法,是把大量信息都集中在结果中。如A=red的结点,就直接写A=red,而不是另外命名,而对于叶子结点,则需要有更详细的地方显示其执行的动作(Action),实现的效果可能如下
部分决策表的数据,其实也可以组织为决策树,或使用决策树来表达更加的合适。决策树可以快捷有效地关联多个相关的规则,通过树型的关系,可能非常清晰地查看各个层级的决策逻辑。运算执行时,可以快速遍历各个决策结点,检查是否符合条件,如果符合条件再往下遍历。最终找到适用的条件和适用的操作动作。
停车场收费例子使用决策树
业务系统的调用方不用填空任何代码,所有的计算都在CKRule中进行了。CKRule中的设置正如上图。
ParkFee _pf = new ParkFee();
_pf.ParkType = cmbParkType.Text;
_pf.DistType = cmbDistType.Text;
_pf.CardType = cmbCardType.Text;
_pf.PartTime = Convert.ToDouble(numericUpDown1.Value);
_pf = new RuleFacade().Exec("费用-停车费计算-决策树", _pf);
txtFee.Text = _pf.Fee + "";
要查看规则的设置内容,请使用CKRule编辑器,打开“费用-停车费计算-决策树.ckp”文件,找到决策树和主规则进行查看。
相关源代码,Demo下载: http://www.ckrule.com/cn/demo.html
0 0
- 决策树与规则引擎
- 决策树与决策规则
- MongoDB与规则引擎
- 数据挖掘之决策树与决策规则
- 规则引擎:Drools与JRuleEngine
- 规则引擎:Drools与JRuleEngine
- Atitit.工作流 与 规则引擎
- 机器学习与智能优化 之 规则、决策树和森林
- 规则引擎
- 规则引擎
- 规则引擎
- 规则引擎
- 规则引擎
- 规则引擎
- 规则引擎
- 规则引擎
- 决策树转规则
- 【规则引擎】关于规则引擎
- linux 网络概述
- 最基本的二分。
- hdu1175连连看(广搜)
- hdu 1325 &&poj1308 Is It A Tree?
- TI C66x DSP 系统events及其应用 - 5.11(中断控制寄存器)
- 决策树与规则引擎
- 容器 【java笔记】
- POJ 1847 Tram(Floyd)
- 汉语转拼音pinyin4j
- linux驱动开发常用手段
- wikioi1085 - 数字游戏(区间DP或者划分DP)
- 简单之并行开发(完整版)
- 《Programming in Lua 3》读书笔记(十)
- HOG+SVM进行图像分类