设为首页 收藏本站
查看: 1307|回复: 0

[经验分享] 使用SQL Server分析服务定位目标用户

[复制链接]

尚未签到

发表于 2015-6-28 08:44:58 | 显示全部楼层 |阅读模式
  如何定位目标用户,在任何一个业务单元中都是一个很重要的话题,尤其在预算有限的情况下,如何获得活动的最大收益,目标用户的定位都是很重要的手段。
  本文将介绍如何通过SQL Server分析服务(SSAS)中的数据挖掘功能根据历史记录信息来定位目标用户。
  
  微软的SQL Server为数据平台提供了一套完整的解决方案,他不只是一个数据引擎,也提供了很多数据工具和服务,借助其中的分析服务,结合业务系统中的海量历史数据信息,SQL SERVER就可以帮助我们发现其中的模式和规律,从而对目标数据做预测分析。
  在实际中,不同的挖掘模型适用于不同的问题场景,同一个问题模式下可能有多个模型都适合解决这个问题,这样对于问题的解决来说就多了很多可对比性,从而我们可以根据每个模型预测的准确程度选择一个最优的模型。
  在本文的目标用户定位的问题上,采用三种挖掘模型进行比较,分别是决策树,贝叶斯和聚类算法。
  本文使用的SQL SERVER版本是2012,示例数据库是Adventure Works的数据仓库,关于如何获取以及部署这个示例数据仓库,可以参考我的这篇随笔:
  http://www.iyunv.com/aspnetx/archive/2013/01/30/2883831.html
  
  首先,建立数据挖掘项目,打开SQL DATA TOOLS,也就是Visual Studio 2010的那个Shell。
DSC0000.png
  新建一个多维和数据挖掘的分析服务项目。
DSC0001.png
  项目建立完毕后,新建数据源连接。
DSC0002.png
  选择部署好的Adventure Works DW连接。
DSC0003.png
  输入模拟身份信息,本演示用为了简便直接使用本地管理员账户(当然生产环境中是不建议这么做的)。
DSC0004.png
  为数据源连接起名。
DSC0005.png
  新建数据源视图。
DSC0006.png
  选择刚才建立的数据源连接。
DSC0007.png
  从左边可选对象列表中选取两个对象,一个是表ProspectiveBuyer,一个是视图vTargetMail。
DSC0008.png
  为数据源视图取名。
DSC0009.png
  可以在数据源视图中看到添加进来的两个表。
  其中左面的表是在数据仓库经过整合的一批数据,用来训练和验证模型。右面的表是待预测的表,将在模型生成完毕后对这个表里的数据进行预测。
DSC00010.png
  新建挖掘结构。
DSC00011.png
  同时为挖掘结构指定一个挖掘模型,这里选择决策树模型。需要留意的是,一个挖掘结构可以有很多挖掘模型,不过在通过工具创建一个挖掘结构的时候需要指定一个挖掘模型。
DSC00012.png
  选择刚才建立的数据源视图。
DSC00013.png
  选取事例表vTargetMail。ProspectiveBuyer是后续要用来进行预测的,所以这里先忽略这个表。
DSC00014.png
  首先,在Key列一栏选择CustomerKey,用来指定键列。
  然后选择输入列:
  Age
  CommuteDistance
  EnglishEducation
  EnglishOccupation
  Gender
  GeographyKey
  HouseOwnerFlag
  MaritalStatus
  NumberCarsOwned
  NumberChildrenAtHome
  Region
  TotalChildren
  YearlyIncome
  最后,选中以下列表左侧需要选择的列。这些列不作为模型的考虑元素,但是会用在模型的钻取结果上。
  AddressLine1
  AddressLine2
  DateFirstPurchase
  EmailAddress
  FirstName
  LastName
DSC00015.png
  确认内容类型,这里有两处需要更改,一处是Geography Key改为Discrete离散型的,以及BikeBuyer改为discrete离散型的。
  关于内容类型的参考:
  http://technet.microsoft.com/zh-cn/library/ms174572
  关于数据类型的参考:
  http://technet.microsoft.com/zh-cn/library/ms174796
DSC00016.png
  设定测试数据的比例。也就是说,在所有的历史数据中,这里将决定,有多少数据用来训练模型,有多少数据用来对模型进行准确度测试。
  这里可以指定百分比或者最大测试事例数,当两个都有配置的时候,系统会取最小测试事例集合的配置。
DSC00017.png
  为挖掘结构和挖掘模型取名,并且选中允许钻取的选项。
DSC00018.png
  至此一个决策树模型生成完毕。
DSC00019.png
  点击挖掘模型标签,可以更直观的看到挖掘结构和挖掘模型的结构。
  接下来根据已经创建好的挖掘结构,创建其它挖掘模型。
DSC00020.png
  右键点击挖掘结构,选择新建挖掘模型,为挖掘结构添加另外几个模型用于对预测结果进行比对。
DSC00021.png
  为挖掘模型取名,并在算法中选择聚类算法。
DSC00022.png
  按照同样的方法,再创建一个贝叶斯模型。
DSC00023.png
  由于贝叶斯模型不支持连续变量,所以这里会出现提示。继续即可。
DSC00024.png
  可以看到创建好的三个模型,并且每个模型中各个字段的用法。
DSC00025.png
  点击工具栏上的处理按钮,对模型进行部署和处理。
DSC00026.png
  第一次部署或者项目有过修改都会出现这样一个提示,点Yes。
DSC00027.png
  处理界面,直接点击Run开始处理。
DSC00028.png
  处理过程中,处理的时间取决于训练数据的大小以及机器的硬件性能。当然对于Adventure Works的这个示例来说,通常就是10多秒的事。
  挖掘结构处理完毕后,下面来简单浏览一下各个挖掘模型。点击挖掘模型浏览器标签。然后在Mining Mode中选定TU_DecisonTree决策树模型。
DSC00029.png
  可以看到,Microsoft 决策树算法通过在树中创建一系列拆分来生成数据挖掘模型。 这些拆分以"节点"来表示。 每当发现输入列与可预测列密切相关时,该算法便会向该模型中添加一个节点。 离根节点距离越近的属性,说明这个属性的变化对预测列的影响变化更大。
DSC00030.png
  右键每一个节点,可以钻取到详细信息。
DSC00031.png
  选择第一项,查看模型包含的列:
DSC00032.png
  也可以选择钻取模型和挖掘结构模型的信息,这样前面在左侧定义的列就会显示出来,方便定位详细信息。
DSC00033.png
  浏览聚类分析模型,这里可以看到各个分类之间的关系,通过拖动左面的滑块可以看到相互之间关系的强弱。
DSC00034.png
  浏览贝叶斯模型,在途中可以看到是否是目标客户,模型分析出的几个关键因素,也可以通过左边的话快查看这些因素有强到弱的关系。
DSC00035.png
  
  接下来,将对各个模型进行测试。虽然对于一个问题可以应用很多模型来解决,但往往只有一个才是最优的,效率最高的。对模型的测试主要是用到提升图。
  首先,点击Mining Accuracy Chart选项卡,确定用于提升图的数据是Use mining model test cases。
DSC00036.png
  然后点击Lift Chart标签,系统会显示根据测试数据生成的提升图。
DSC00037.png
  从提升图的结果来看,决策树的预测性能明显高于其它模型。
  关于提升图,首先,对角线是随机概率的结果,最上面的线是最佳理想的预测结果,所以实际的模型预测效率都是介于这两条线之间。
  关于提升图的更多信息可以参考微软的这篇文档:
  http://technet.microsoft.com/zh-cn/library/ms175428
  
  在已经确定决策树模型是最优模型之后,如果还希望根据性别的不同分析购买风格的差异,可以创建筛选模型。
  首先,回到Mining Models选项卡,右键单击创建好的决策树模型,选择新建模型。
DSC00038.png
  在弹出的界面中,给新模型取一个名:TU_DecisionTree_Male,算法选择Microsoft 决策树。
DSC00039.png
  点击OK完成后,右键点击新建的模型,选择Set Model Filter…
DSC00040.png
  在Conditions中选择Gender = M。
DSC00041.png
  按照同样的方法,建立另外一个TU_DecisionTree_Female,Model Filter中 Conditions选择Gender = F。
DSC00042.png
  创建完两个新筛选模型后,点击提升图。将Predict Value设置成1,以验证目标客户预测的性能。
DSC00043.png
  点击Lift Chart查看提升图。
DSC00044.png
  可以看到,三个决策树模型的预测性能都是高于其它模型的。
DSC00045.png
  
  模型测试完毕,可以判断决策树是基于定位目标用户最佳的预测模型。接下来是用决策树模型对一个表中的数据进行预测。
  首先,选择Mining Model Prediction选项卡。
DSC00046.png
  点击Select Model…选择前面建立的TU_DecisionTree模型。
DSC00047.png
  然后点击Select Case Table…选择实例表ProspectiveBuyer。
DSC00048.png
  点击OK后,可以看到在表ProspectiveBuyer中并没有对应的Age列,而这一列是在预测过程中需要参考的一个重要列,所以回到数据源视图,在ProspectiveBuyer表里加入一个计算列。
DSC00049.png
  右键单击表ProspectiveBuyer点击New Named Calculation…
DSC00050.png
  在弹出的界面中为计算成员取名并填写计算公式:
DSC00051.png
  可以看到新建的列已经添加到字段列表的末尾。在数据源视图中添加的列可以理解为在物理视图和表上,在项目里建立的视图,所以实际上并没有对实际的表或者视图的结构进行更改。
DSC00052.png
  然后回到预测界面,将Mining Model中的Age列拖拽到Select Input Table(s)中刚建立好的CalAge列。
DSC00053.png
  点击界面左上角的小图标,切换到Design设计模式。
DSC00054.png
  在下方的网格列表中,Source选择Prediction Function。
DSC00055.png
  指定一个别名Result,然后在Criteria/Argument中,把Bike Buyer字段从上方的Mining Model中拖拽过来。
DSC00056.png
  然后在下方的网格列表中,Source选择TM_DecisionTree,Filed选择Bike Buyer。最后在下面几行中Source指定ProsepectiveBuyer然后Filed中依次指定calAge, FirstName, LastName和AddressLine1以及AddressLine2。
DSC00057.png
  点击工具图标切换到Result结果视图。
DSC00058.png
  可以看到目标数据的预测结果。
DSC00059.png
  另外,也可以切换到Query模式查看系统生成的DMX语句。
DSC00060.png
  
  至此,通过建立数据挖掘模型,并且选择最优模型之后,对目标用户列表里的数据进行了预测,从而帮助用户更有效率的确定了目标潜在用户。这样的预测在某些场景下是非常有用的,比如企业最近要做一个活动推广,但是费用成本不足以给所有的客户进行推广,所以这个时候决定给哪些客户来推送推广服务就可以有效的降低推广活动的成本并且获取最高的推广收益。
  以上,如何使用SQL Server分析服务来定位目标用户介绍完毕。关于如何将这个数据挖掘的功能加入到现有的项目中,可以参考我写的另外一篇关于购物篮推荐的系列随笔,里面会有介绍如何构建Web服务以及编写简单的应用访问这个服务从而使用数据挖掘的功能。
  http://www.iyunv.com/aspnetx/archive/2013/02/25/2931603.html
  关于分析服务更多内容,欢迎访问我的博客http://aspnetx.iyunv.com
  微软文档中关于本文中提到的模型算法的参考:
  决策树模型:http://technet.microsoft.com/zh-cn/library/ms175312.aspx
  贝叶斯模型:http://technet.microsoft.com/zh-cn/library/ms174806.aspx
  聚类分析模型:http://technet.microsoft.com/zh-cn/library/ms174879.aspx
  
  如果您有任何问题,欢迎在此篇回帖或者给我留言。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-81120-1-1.html 上篇帖子: 实用技巧:利用SQL Server的扩展属性自动生成数据字典 下篇帖子: 一个Excel导入SQL server的例子(分别使用游标、CTE、master..spt_values实现)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表