F#真棒 - 决策树 - 第一部分

Programming F#这本书已经发行了! 这意味着你可以,也应该去商店并买上一本.

既然已经有Programming F# 这么出色的F#语言编程指导书了,那么对于语言特性而言,我更愿意写更多关于程序方面的东西. 这就是说,让我们看看,能用这么棒的F#语言做些什么.

这是名为”F#真棒”系列博客中的第一篇.这些博客为我们展示了先进的,贴近实际的F# 应用程序能做的不可思议的事情.这篇博客是关于决策树和ID3算法的,这些问题最初在StackOverflow.com上讨论的很激烈。

如果你想学习更多关于数据挖掘技术和机器智能学习知识,Tom Mitchell编写的Machine Learning 将是本很好的书籍。但是,提醒一下大家,这是我读过的内容最严谨且知识密度很大的书。真的,不是开玩笑的!

图片00

定义这个问题

那么,ID3算法是做什么的呢?它是用来创建决策树一项技术,就如同下图中用来决定是不是去打网球一样。从最上面的节点开始,如果天气是阴天,那么你就应该去打球。然而,如果是雨天,那么只有当风很小的时候你才应该去打球。

图片00

除了帮助策划你的体育活动,决策树也是用来收集商业情报一种简单地方法。假设,你经营着一家位于宾夕法尼亚州的斯克兰顿的造纸公司。你有一个收集了众多客户的IP地址的数据库,包括谁访问了你的网站, 谁需求的产品中有一些特殊交易,那个谁是否已经取消了购买纸品。

这种情况下,你就需要数据挖掘技术来抽取有用的数据了。 那么,这种情形下,如何优化你的销售额呢?

基于你拥有数据的类型与你查找的内容,有很多不同的数据挖掘技术算法。这篇博客将覆盖决策树——一种根据数据来预测其概念的机器学习技术。(例如,根据一个浏览器会话预测此用户是否会买些什么。)

更形象点:给定一个以”name/value”作为键值对的实例集合——判断值链在哪里断开——创建一个决策树来精确地识别任何一个新加的实例。在上面的例子中,这些name/value键值对就是Outlook:{Sunny,Rainy,Overcast},类别就是”是否去打网球”。

 

方法

这里最简单的方法就是尽可能多的创建树的分枝。根据练习的数据,先找到最合适的分枝,然后根据更多特定的特征子集条件继续筛减数据集。例如,如果试图根据某人将从网站上购买产品来判断他是否是一位老顾客,那么这将是一件很有价值的信息。

为了找到”黄金分割”我们将使用被称为”信息增益”的方法。 但是首先,让我们看看信息理论中的一个名为””的概念。假设你想创建一个决策树来判断某人是不是一个邪恶天才。每个论据包含了一些如性别、是否拥有博士学位等信息。

 图片00

熵和信息增益是衡量你从给定的分枝中获取信息多少的度量单位。如果正好50%的邪恶天才都是男性,那么你没能从性别分枝中获取任何有用的信息。(因为树的左右两边的邪恶天才数量是一样的。)然而,为了判定邪恶天才,教育情况将显得非常重要——因为我们假设大部分邪恶天才在很多方面拥有博士学位。那么,这个决策树将会尤为有效,在削减筛选这些数据到同类别的组:是否为邪恶天才。

 

输入数学公式

信息增益和熵只是些简单的概念,而数学就有点恐怖了。让我们使用下面的数据来继续完成这个邪恶天才预测器:

图片00

给定一个数据集S,此S可以被c整除得到商p,那么这个集合的熵就可以由一下公式求得:

图片00

例如,如果一个数据集合中的六个邪恶天才中有四个是男性,那么此集合的熵是多少呢?

图片00

或者0.9182。现在,如果一个集合中五个拥有博士学位的人中有四个士邪恶天才,那么此时的熵是多少呢?

图片00

或者0.6883。这个较小的数字意味着加密拥有博士学位邪恶天才的文件需要更少的信息。当一个集合中的所有东西都有相同类型并都是1,且当此集合是以50/50作为分割的,如果运行这个熵的数学公式,其结果将会是0。看看下面的这个图:

图片00 

(图象来自Wolfram Alpha)(请看此链接上的图片)

所以,同类别组成的集合的熵会低于混合类别的集合。这点是很重要的,因为在我们的决策树中,我们想筛选数据到更具体的一些值——如此,我们才能做出更精确地预测。

 

信息增益

现在我们已经知道如何计算同类别的数据了,那么我们如何才能决定哪个分枝才是最优的呢? 也就是我们是否根据性别,是否有博士学位,一些其它的属性等来分枝?我们可以用信息增益函数来计算这个,如下:

图片00

给定一个值集合S,在此集合中每个已知数都有一个标签(属性)A,判断能从这些已知的标签中获取多少的信息。注意Sv是集合S的子集,且此子集中的每个元素有一个属性值v。

那么,如果将根节点设置为“是否有博士学位”,那么我们能获得什么样的信息呢,还是没有任何信息呢?

图片00

图片00

或者0.2002。如果我们计算性别分枝上的信息增益,那么它的结果将是——(-0.0513)。所以,数学上已经证明了我们的断言:是否拥有博士学位比性别因素在判断是否为邪恶天才上更有价值。(如此表明,4/5的博士是邪恶天才,然而2/25的非博士是邪恶天才,看起来还是蛮合理的)

综上所述

在第二部分,我们将用F#实现ID3 算法,且它将贯穿下面的每个流程:

  1. 找到能给给我们带来最多信息的属性(标签)
  1. 为此属性(标签)加上一个分枝
  1. 对每个子节点重复使用上面步骤直到所有的数据拥有相同的分类

原文链接:http://blogs.msdn.com/b/chrsmith/archive/2009/10/31/awesome-f-decision-trees-part-i.aspx

简介 ecshop系统logo ECShop是上海商派网络科技有限公司(ShopEx)旗下——B2C独立网店系统,适合企业及个人快速构建个性化网上商店。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。 ECShop悉心听取每一位商家的需求与建议,不仅设计了人性化的网店管理系统帮助商家快速上手,还根据中国人的购物习惯改进了购物流程,实现更好的用户购物体验。 经过近两年的发展,ECShop网店系统无论在产品功能、稳定性、执行效率、负载能力、安全性和SEO支持(搜索引擎优化)等方面都居国内同类产品领先地位,成为国内最流行的购物系统之一。 服务 灵活的模版机制 ECShop开发了独有的高效模板引擎(2.15以前版本使用smarty模板引擎),并结合了Dreamweaver的模板和库功能,使得编辑制作模板变得更简单。 开放的插件机制 支付、配送,会员整合都是以插件形式实现。商家可以随时增加或变更的支付方式和配送体系。ecshop支持大部分php开发的论坛系统,包括discuz,phpwind等,只需在后台简单参数配置,即可完成会员整合。 功能 AJAX 化 ECSHOP 使用流行的 AJAX 技术,批量数据编辑变得更迅速,方便。 促销功能 ECSHOP提供了积分、红包、赠品,夺宝奇兵等多种促销方法。 高效率的代码和执行性能 通过优化代码与数据库结构,配合ecshop独家设计的缓存机制,在不考虑网速的情况下,网店动态页面与纯静态页面访问速度相当。 常规功能的更完善实现 针对常规功能尤其是后台管理和购物流程,ECShop进行了更简洁的设计,实现更好的用户体验。 搜索引擎优化 在 SEO (搜索引擎优化)上,ECShop独家支持两种 URL 重写方式,并且是同类软件中第一家支持 google / yahoo / microsoft 三家共同发布的 sitemaps 0.9 网站索引规范,能够为站点被搜索引擎收录到最大限度的支持和帮助。 内置手机短信网关 ECShop内置手机短信网关,支持会员信息,订单提醒等功能。 多语言支持 支持简体,繁体,英文。 源代码开放 用户可根据自己的需求对ECSHOP进行定制,扩展。 随着3G网络的普及,智能手机的大量使用,手机上网的用户越来越多,使手机购物成为可能,手机购物势必会成为一种趋势,ECshop2.7.2版本新增手机浏览html功能。并且新增商品规格分库存功能,方便商家管理不同规格货品的库存。在商品详情页新增购买记录,提高网店的活跃性。html编辑器上传图片后增加水印功能。改进编辑快递单功能,增加可视化编辑,方便管理员修改打印快递单。商品分类页排序按钮变更为更流行的按钮样式,使之更加人性化。上传商品相册图片,使之能够支持外链图片。 历史 ECShop 2005年底,2006年初,高春辉和李梁(时任手机之家总经理),因为在给朋友建网上商城的时候,发现没有一个好用的商城软件,萌生了自己制作一个商城软件的想法。 2006年3月,从零开始招兵买马,组建团队,2006年6月,ECShop推出第一个版本1.0,但因为功能比较单一,最终使用的用户没有超过10个。 2006年6~7月,高春辉开始全面介入ECShop的开发管理工作,大大的加速了ECShop的开发进度,在推出 2.0版本之后,陆续推出了2.0.1,2.1,2.1.1.,2.1.2,2.1.3等版本后,用户群逐步扩大,安装量突破5万。 2007年5~6月,ECShop管理层与康盛世纪接触,最终确定,将ECShop卖给康盛世纪。 2007年6~7月,ECShop完成了一个重要的项目摩托罗拉手机商城。 2007年9月,ECShop团队全部迁至康盛世纪上班,交易完成。 2007年9月,ECShop分为两个团队,ECShop|(买否网), (卖否网);ECMall。 2008年10月10日,ECShop系列软件(包括Ecshop、Ecmall、Maifou等),被上海商派网络科技有限公司(ShopEx)整体收购。 2009年3月,发布2.6.2版本,这是其加入上海商派网络科技有限公司(ShopEx)之后的最新版本。 2010年6月,发布 ECShop v2.7.2 Release 0604。 2012年4月,发布 ECShop v2.7.3 Release 0411。 2012年11月,发布ECShop v2.7.3 Release 1106。 编辑本段 团队介绍 原团队介绍 高春辉 著名第一代互联网人,1989年接触电脑,1997年创建了当时访问量最高的个人主页“ 高春辉的个人网站”,被评为中国十大个人网站第一名。1999年受金山公司邀请,共同发起金山卓越网并担任总经理。2002年创立手机之家。ECShop创始人,ECShop灵魂,主要负
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值