决策树与规则引擎_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 决策树与规则引擎

决策树与规则引擎

 2014/7/13 17:21:25  ChakMan  程序员俱乐部  我要评论(0)
  • 摘要:人们对决策树的使用决策树常常被应用于数据挖掘之中,是最基础的算法之一,几乎每一个学习过数据挖掘的朋友都知道决策树。但还原决策树本来的用途,它被用于一些决策或决定时,还是比较实用和直观的。其树型结构指导人们进行在面对某个决策时,先关注其中几个最重要的方向,这几方向定下来后,再细分下去。近年来泳道路,思维导向图之类的图形/办公自动化工具慢慢兴起,得到大家的广泛好评,也就是决策树的一个很好的实现。不过在各企业的应用系统中,又决策树又不是很常用,归根到底,决策树是思维导向的内容,是飘忽不定的东西
  • 标签:

人们对决策树的使用

  决策树常常被应用于数据挖掘之中,是最基础的算法之一,几乎每一个学习过数据挖掘的朋友都知道决策树。但还原决策树本来的用途,它被用于一些决策或决定时,还是比较实用和直观的。其树型结构指导人们进行在面对某个决策时,先关注其中几个最重要的方向,这几方向定下来后,再细分下去。近年来泳道路,思维导向图之类的图形/办公自动化工具慢慢兴起,得到大家的广泛好评,也就是决策树的一个很好的实现。 不过在各企业的应用系统中,又决策树又不是很常用,归根到底,决策树是思维导向的内容,是飘忽不定的东西,要形成结构化的内容非常困难。而且市面上大多数的业务系统都是使用关系型数据库,在处理格式数据时非常的方法,但处理树形数据就不一定性。所以也慢慢有部分技术公司开始使用对象型数据库。另一方面,决策树中的决策和判断都比较不规则,很多内容更像是程序员在编程,是一些规则,不是信息,这导致了传统的业务系统处理困难。   决策树的组成与程序表现   决策树使用一个树型结构来表达业务规则。如下图所示。 每一个非叶子结点都代码一个决策/决定,而叶子结点执行动作。而每一条边表达决策的可选定值,可以理解为判断。 如下图,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  
上一篇: 【路线篇(一)】路线图 下一篇: 没有下一篇了!
  • 相关文章
发表评论
用户名: 匿名