随着大数据时代的到来,数据挖掘的重要性就变得显而易见,几种作为最低层的简单的数据挖掘算法,现在利用微软数据案例库做一个简要总结。

应用场景介绍

其实数据挖掘应用的场景无处不在,很多的环境都会应用到数据挖掘,之前我们没有应用是因为还没有学会利用数据,或者说还没有体会到数据的重要性,现在随着IT行业中大数据时代的到来,让我一起去拥抱大数据,闲言少叙,此处我们就列举一个最简单的场景,一个销售厂商根据以往的销售记录单,通过数据挖掘技术预测出一份可能会购买该厂商产品的客户名单,我相信这也是很多销售机构想要得到的数据,当然这其中还有许多数据可供挖掘,比如:各种商品之间的关联是否能带来联动销售(啤酒和尿不湿、商品货架商品摆放、网站导航商品布局等)、影响每一种商品的属性值等等吧,这些伴随和数据挖掘的过程都会形成报告。

技术准备

这里有几点技术储备需要提到

(1)我们利用微软提供的案例数据仓库(AdventureWorksDW2008R2),当然其实我们应用的也就是两张事实表,一张已有的历史购买自行车记录的历史表,当然包括购买自行车顾客的一些供挖掘的属性,另外一张就是我们将要挖掘的收集过来可能发生购买自行车的人员信息表,从这里面挖掘出可能会买自行车的人。

晒历史销售表结构:

包含一个主键记录、顾客的生日、姓名、Email、婚姻状况、是否有房子、是否有车、年龄、上班距离远近等属性情况,这后面还有一列是是否发生购买自行车,当然从三范式上讲这种设计方式是不符合OLTP的,但此处是OLAP,也不是规范的事实表,这种结构一般通过一个view就能拼凑出来,咱这里就不提这些基础技术了。

另外一张表:

同样是一张人员信息表,也是记录的一些人员的属性,当然这里不会和已经销售人员记录的信息一样,但会包含相同的属性集合,比如:生日、年龄、年收入等等,我们要做的就是从这种表里面找到会买自行车的人。

(2)vs数据挖掘工具、安装好数据库配置好服务,这个都懂,没啥可说的,但要实现这种目的我们会使用三种数据挖掘算法,稍作介绍

Microsoft 决策树:对于离散属性,该算法根据数据集中输入列之间的关系进行预测。它使用这些列的值或状态预测指定的可预测列的状态。具体地说,该算法标识与可预测列相关的输入列。

Microsoft 聚类分析:该算法使用迭代技术将数据集中的事例分组为包含类似特征的分类。在浏览数据、标识数据中的异常及创建预测时,这些分组十分有用。简单点就是找出相同一部分属性的种类。

Microsoft Naive Bayes:Microsoft Naive Bayes 算法是由 Microsoft SQL Server Analysis Services 提供的一种基于贝叶斯定理的分类算法,可用于预测性建模。

这些算法有很多底层算法作支撑,我们只需要记住他们的应用场景和不同算法所具有的特性即可。下面的分步骤分析过程我会总结每种算法能干什么,能够分析出什么。


下面我们进入主题,通过简单的过程配置我们来实现整个数据挖掘的过程,依次步骤如下

1、新建工程,配置数据源

这个没有什么可分析的,基于微软案例数据库建立数据连接,简单的数据配置,实例名和用户名和密码连接数据仓库即可

2、创建数据源视图

这里就是筛选出我们想要数据挖掘的数据表,可以选择的是表或者视图,我们这里要做的事很简单,其实就是把上面的两张表从数据库里连接出来,VS工具配置很简单,根据它的提示我们就可以很轻松的配置出数据视图。

这里有几个技巧可以浏览两张表数据,在所选表中右键选择“浏览数据”,可以查看里面的列,还能分析数据中所占比情况,可以采用类似于Excel的透视表、透视图查看,也可以通过图表工具,例如:

此步骤是为了让我们理解里面的表数据,通过分析数据可以先分析出数据表中可以供我们挖掘的数据列属性有哪些,也可以简要推测影响我们目标(购买自行车)这种行为可能影响的属性,比如:家里有汽车的、年龄大于60或者小于10岁的、上班距离跨越好几个城区的(比如从朝阳——海淀上班)、年收入百万的等等吧按照常理会买自行车的几率还是挺小的,下一步我们用挖掘算法来逐一验证我们基于经验的这些推测是否合理。

3、创建挖掘结构

这一步我们分步骤细一点,逐过程讲解

(1)在解决方案中“数据结构”中,右键选择新建数据挖掘,这里我们选择“从现有数据库或数据仓库”来定义数据挖掘结构

(2)点击下一步,选择一种算法,这里列出了几种我们比较常用的数据挖掘算法,我们选择“Microsoft 决策树”算法

(3)点击下一步,选择我们可以应用的数据源视图

(4)我们选择上面的“vTargetMail”表作为事例来进行挖掘,所谓的事例就是以前我们所存在的历史记录表,点击下一步

(5) 进入指定定性数据模块,显示图如下,这里面有几列比较重要,先看图片

这里面有几列需要我们自己配置,键列:这个就是我们的主键列了,vs能自己识别出来,然后就是输入列:这一列就是根据我们要预测的目标,手动勾选的状态值列,这里我们勾选了年龄、通勤距离、英国学历、英国职位、婚姻状况、家庭汽车数、家庭孩子总数、在家里孩子数、所在地区、年收入等我们认为会影响预测目标的值列,当然这里有时候我们自己的推断不一定能准,但VS同样根据数据给你推算出了可能影响的列供参考选择,这里我们点击“建议”按钮,会弹出如下窗口:

看到了嘛,可爱的vs已经将肯尼个影响的列给你建议出来了,这里的分数就是评估的应该的概率,年龄是影响购买车辆影响最大的因素、其次是家庭车辆、再次是家庭孩子总数、当然这些值也是采样获取的,点击输入,就会选中相应的列,这里我们的可预测列就选择:购买自行车列“BikeBuyer”,这里最前面的一列就是要显示的明细列,数据挖掘的结果提供明细钻取,显示明细的时候需要的列,我们可以在这里面选中。

到这一步其实我们可以简要的推断买不买自行车看来与年龄还是关系比较大的,嗯...老年人和儿童估计骑自行车的可能性不大,呵呵...当然这仅是推测,咱们接着往下挖掘。

(6)点击下一步,进入数据挖掘模型机构,这里面会显示出各个列里面的值类型和值状态,是连续值、还是离散型,可以点击检测推断

(7)点击下一步,会进入数据集两个比较重要的参数配置,一个就是计算模型数据集所占比,一个就是最大实例数的值,先看图,然我我解释含义

在vs中已经有说明了,解释的比较清楚,第一个值就是用于计算数据挖掘模型的值占比,剩下的值作为后面验证我们数据挖掘模型的正确性,简单点就是留一部分测试数据稍后我们那它来测试测试我们建立的数据挖掘模型是否正确。第二个值就是每个挖掘回归所占的最大事例总数,这里我们做一个限制。

(8)点击下一步,给这个数据挖掘模型起一个名字,然后勾选上允许钻取明细

至此我们的Microsoft决策树数据挖掘模型已经建立完毕,看看图

下一步就是分析我们的挖掘结果了,这一步最精彩,我们来逐步分析。


结果分析

在分析之前我们先在解决方案中右键部署该解决方案到本地Analysis Services数据库中。

在我们数据挖掘模型中有四个选项卡一个就是我们的挖掘结构,第二个就是挖掘模型中我们设置的输入列、预测列、键列等信息,没啥可说的看图

接着才是我们重点要分析的数据挖掘模型查看器,这里面会有我们挖掘出来的结果值,形成我们的分析报告等选项,先看看图:

整幅图片中,整个显示结果是一种树状结构图,从顶端依次展开的横向图片,从图例中我们就可以看到,其中红色的也就是值为1的为购买自行车的比例,蓝色的就是没购买自行车的比例,这里有个选项比较重要,就是背景,默认为全部值,也就是说整个图中包含所有的事实,因为我们的需求是要分析购买自行车的顾客的状态,所以我们选择值为1(会发生购买)的进行分析,当然如果需求比较特别,你也可以选择不购买自行车的顾客这部分群体的特征,这里我们选择为1的背景:

看看分析结果:

整体树种,颜色最深的为我们最期望得到的值,而每个方块所代表的就是一种状态值区间,每个方块又可以依次展开看其子节点状态,最靠近根部的方块所代表的的因为即为影响结果值最重要的因素,从上图中我们可以看到家庭中汽车的数量(Number Cars Owned)是决定是否购买自行车最重要的因素,而这种因素中汽车数量为0的购买自行车的概率最高,也就说最想买自行车,其次是有一辆汽车的顾客,我们接着分析:

将鼠标移动到Number Cars Owned为0 的方块中,可以查看明细:

可以看到该部分顾客购买自行车的概率为63.15%,这里面共有4006个事例,发生购买的为2530个,所以这部分顾客应该是厂商最喜欢的,也是他们将要重点挖掘的对象,原因你懂的。当然家里有一汽车的也有很多想买自行车的,我们也不能放弃,同样我们点开这个节点接着分析。

嘿嘿,从图中可以看到我们上面推测的年龄因素已经浮出水面了,家里没有车,然后年龄在45岁以下购买自行车的概率已经飙升到73.49%,有图有真相,45岁以下,然后还没有小汽车,在大米国应该也算是屌丝一级别了,买辆自行车骑骑也正常,同样我们接着分析。

紧接着,影响的第三层因素也开始冒泡了,那就是地域位置,看图中,不在北美位置的顾客购买几率更高,而这里面在家里的孩子为0的购买几率已经达到了92.50%,汗,厂商还等什么,遇到这种顾客你就让你的销售坐等业绩就可,咱们来分析一下这部分人群:家里没有车、年龄在45岁一下、不在北美地区、家里也没有孩子......我那个去,这部分顾客什么情况,一种是直接型的屌丝级别,一种是绝对有品位的高富帅(孩子已经成家)。好吧,如果销售面对的是这群客户,你要做的就是升职、加薪、赢取白富美了...

咱们再来分析另外一种家里有一个汽车的情况,先看图:

结果:年龄在37到53之间,通勤距离小于10Miles,家里孩子既不等于3也不等于4,然后年收入在58000$以上,这部分顾客购买的几率在74.83%左右。

这里我们可以通过查看依赖关系网络图,了解一下我所有的这些元素对购买自行车这种行为的影响:

通过拖动左侧的滑动条可以依次查看所有的因素对买自行车所造成的影响大小,下面最重要,这里为家庭轿车数(Number Cars Owned)、其次是年龄(Age)、再次是地区(Region)....

以上是对决策树算法所推测出的结果进行分析,我们下一步要做的就是要验证我们的分析结果正确率有多高,还会增加其它不同的算法作对比,然后在根据正确率最好的算法推测上面我们已有的顾客列表中找到购买自行车概率最高的那群人。限于篇幅,后面的文章中我们继续详细的分析这些事情,下面我晒几个结果图,供大家玩味:

数据挖掘准确性图表:

图中有我们剩下的那部分测试数据做出的验证图表,还有理想的最佳模型、最烂的随机预测模型,和他们的概率,当然这中间就是我们决策树预测的模型,这图表中的维度和值就不分析了,自己品味。

同样我们还可以根据我们的预测模型绘出利润图:

所谓的利润图,就是通过这种分析能给我们带来的利润,嗯,这个也是厂商关注的。

到这里还剩下最后一步那就是将上面我们遗留下的顾客信息表中找出那些可能购买自行车的顾客,也就是数据挖掘的最高产物,推测以后将要发生的事情。这一步我们留着下一篇介绍。


结语:大数据的时代到来了,咱们作为底层的码农要时刻准备着,为自己保留饭碗的同时也能持续不断的发挥码农的能量,当我们修炼到一定的境界时,遇到大数据,我们也可以从容得喊道:畜生、放开那些数据,让我来!呵呵...国庆节了,祝大家国庆快乐。

部分内容参照微软官方案例展示,微软决策树算法详细参考http://technet.microsoft.com/zh-cn/library/ms175312.aspx

(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 决策树分析算法)的更多相关文章

  1. 大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 聚类分析算法)

    原文:(原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 聚类分析算法) 本篇文章主要是继续上一篇Microsoft决策树分析算法后,采用另外一种分析算法对目标顾客群体的挖掘 ...

  2. (转载)微软数据挖掘算法:Microsoft 决策树分析算法(1)

    微软数据挖掘算法:Microsoft 目录篇 介绍: Microsoft 决策树算法是分类和回归算法,用于对离散和连续属性进行预测性建模. 对于离散属性,该算法根据数据集中输入列之间的关系进行预测. ...

  3. (转载)微软数据挖掘算法:Microsoft 关联规则分析算法(7)

    前言 本篇继续我们的微软挖掘算法系列总结,前几篇我们分别介绍了:微软数据挖掘算法:Microsoft 决策树分析算法(1).微软数据挖掘算法:Microsoft 聚类分析算法(2).微软数据挖掘算法: ...

  4. 大数据时代的数据存储,非关系型数据库MongoDB

    在过去的很长一段时间中,关系型数据库(Relational Database Management System)一直是最主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库中抽象的数据架构. ...

  5. 大数据时代的数据存储,非关系型数据库MongoDB(一)

    原文地址:http://www.cnblogs.com/mokafamily/p/4076954.html 爆炸式发展的NoSQL技术 在过去的很长一段时间中,关系型数据库(Relational Da ...

  6. 转 开启“大数据”时代--大数据挑战与NoSQL数据库技术 iteye

    一直觉得“大数据”这个名词离我很近,却又很遥远.最近不管是微博上,还是各种技术博客.论坛,碎碎念大数据概念的不胜枚举. 在我的理解里,从概念理解上来讲,大数据的目的在于更好的数据分析,否则如此大数据的 ...

  7. 大数据时代的IT架构设计

    大数据时代的IT架构设计(来自互联网.银行等领域的一线架构师先进经验分享) IT架构设计研究组 编著   ISBN 978-7-121-22605-2 2014年4月出版 定价:49.00元 208页 ...

  8. LinkedIn高级分析师王益:大数据时代的理想主义和现实主义(图灵访谈)

    转自:http://www.ituring.com.cn/article/75445 王益,LinkedIn高级分析师.他曾在腾讯担任广告算法和策略的技术总监,在此期间他发明了并行机器学习系统“孔雀” ...

  9. 新书发布《大数据时代的IT架构设计》

    <大数据时代的IT架构设计>以大数据时代为背景,邀请著名企业中的一线架构师,结合工作中的实际案例展开与架构相关的讨论.<大数据时代的IT架构设计>作者来自互联网.教育.传统行业 ...

随机推荐

  1. 【Java每日一题】20161012

    package Oct2016; public class Ques1012 { public static void main(String[] args) { System.out.println ...

  2. jsp输出所有请求头的名称

    Enumeration headernames=request.getHeaderNames(); while(headernames.hasMoreElements()){ String heade ...

  3. 泛函编程(29)-泛函实用结构:Trampoline-不再怕StackOverflow

    泛函编程方式其中一个特点就是普遍地使用递归算法,而且有些地方还无法避免使用递归算法.比如说flatMap就是一种推进式的递归算法,没了它就无法使用for-comprehension,那么泛函编程也就无 ...

  4. python tornado websocket 多聊天室(返回消息给部分连接者)

    python tornado 构建多个聊天室, 多个聊天室之间相互独立, 实现服务器端将消息返回给相应的部分客户端! chatHome.py // 服务器端, 渲染主页 --> 聊天室建立web ...

  5. Lucene.net站内搜索—2、Lucene.Net简介和分词

    目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...

  6. Java 经典实例:自定义迭代器

    编写自己的Iterator,实现Iterator接口,这里多说一句,实现Iterable后,可以用"foreach"循环遍历你的对象. import java.util.Itera ...

  7. jackson中JSON字符串节点遍历和修改

    有些场景下,在实现一些基础服务和拦截器的时候,我们可能需要在不知道JSON字符串所属对象类型的情况下,对JSON字符串中的某些属性进行遍历和修改,比如,设置或查询一些报文头字段. 在jackson中, ...

  8. Linux学习笔记17--Linux系统启动详解

    多数操作系统的启动流程: BIOS启动自检 ->MBR引导->执行引导程序GRUB->加载内核->执行init->runlevel   BIOS(Basic Input ...

  9. Hover States - 有趣的用户界面及交互设计

    Hover States 一组新潮的和有趣的用户界面和交互设计的集合.Hover States 的目标是要成为设计师和开发人员灵感来源,向人们展示目前人们正在做的各种网站中令人惊奇的效果.他们认为交互 ...

  10. MetricGraphics.js – 时间序列数据的可视化

    MetricsGraphics.js 是建立在D3的基础上,被用于可视化和布局的时间序列数据进行了优化.它提供以产生一个原则性的,一致的和响应式的方式的图形常见类型的简单方法.该库目前支持折线图,散点 ...