`
zhangziyangup
  • 浏览: 1065964 次
文章分类
社区版块
存档分类
最新评论

SQL Server 数据挖掘系列(二) - 微软朴素贝叶斯算法

 
阅读更多

从本系列的这篇开始我们来研究SQL Server所有内置算法的功能,我们按照它们的复杂性由浅入深地介绍,对于每一个算法,我们都将讨论它的功能、常见配置以及一些高级的可配置属性。今天先来介绍这几个算法当中最为简单的一个,微软朴素贝叶斯算法。

微软朴素贝叶斯算法是SAS中最简单的算法,通常用作理解数据基本分组的起点,说的简单一点就是处理数据的分类。这个算法之所以称为“朴素”,是因为所有属性的重要性是一样的,没有谁高谁低一说。它是一种运用算术原则来理解数据的方法,对此算法的另一个理解就是:所有属性都是独立的,互不相关的。从字面来看,该算法只是计算所有属性之间的关联。虽然该算法既可用于预测也可用于分组,但最常用于模型构建的早期阶段,更常用于分组而不是预测某个具体的值。通常要将所有属性标记为简单输入或者既是输入又是可预测的,因为这就可以要求算法在执行的时候考虑到所有属性。很常见的一种情况是,在输入中包含大量属性,然后处理模型再评估结果,如果结果看起来没什么意义,我们经常减少包含的属性数量,以便更好地理解关联最紧密的关系。

如果我们拥有大量的数据,而且对数据的了解又很少,这时候可以使用朴素贝叶斯算法。例如:公司可能由于兼并了一家竞争对手而获得了大量的销售数据,在处理这些数据的时候,可以用朴素贝叶斯算法作为起点。应该了解的是,这个算法有一个明显的局限:就是只能处理离散的内容类型,如果选择的数据结构中包含有内容类型不是Discrete的数据列,那么朴素贝叶斯算法建立的挖掘模型会忽略这些数据。在这个算法中只有少量可配置属性。我们可以看一下这个算法的一些参数,在BIDS中打开SQL Server示例数据库(Adventure Works)中的Targeted Mailing示例,单击“挖掘模型”选项卡,在使用朴素贝叶斯的模型上单击右键,然后单击“设置算法参数”,打开“算法参数”对话框,如下图所示:

我们可以从上图看到,朴素贝叶斯算法有4个可以配置的参数,有人可能想知道是否经常需要调整算法参数的默认值,我们发现,随着对各个算法功能的逐渐了解,我们开始倾向于手动调节,因为朴素贝叶斯频繁地用于数据挖掘项目,尤其用于项目的早期阶段,所以我们发现自己要经常调整它的相关参数。

SSAS数据挖掘有一个功能,叫做“功能选择”。这个设置要在模型加载了元数据之前应用,“功能选择”从数据集中自动选择最适合在模型中使用的属性,如果在挖掘模型处理期间使用了“功能选择”,那么在“挖掘模型处理”窗口列出的详细执行语句中会看到它。

“功能选择”既作用于输入属性,也作用于可预测属性,根据挖掘模型使用的算法,也能作用于列的状态数量。只有算法选中的输入属性和状态才放在模型的构建处理内,才能用于预测。被“功能选择”忽略的可预测列也用于预测,但这个预测仅根据模型中现有的全局统计。为了实现“功能选择”,SSAS运用了各种方法来确定所谓的属性“意义得分”。这些方法取决于所采用的算法。

那重要的就是我们要了解可以影响这些方法的调用和执行,以便决定哪些属性对模型最有意义,影响的方式是修改上图中数据挖掘模型参数的配置值。简而言之,可以将“功能选择”当成一种内置的改进算法,使用内部算法来改善挖掘模型结果的质量。如果大家以前没有接触过数据挖掘,那么可能想让“功能选择”自动执行。随着逐渐成为高级用户,我们发现功能选择很有帮助,因为在操作数据挖掘模型的时候,会遇到许多未知的因素:数据的质量、不确定哪些数据放在模型内、算法的选择等等。“功能选择”尝试以智能的方式缩小数据挖掘模型处理的结果范围,建立目标更准确、更有意义的结果。因此我们经常说这个功能在数据挖掘的早期阶段将会非常有用。

微软朴素贝叶斯查看器包含4种输出视图:依赖关系网络、属性配置文件、属性特征和属性对比。我们经常会使用依赖关系网络视图,因为他的输出结果比较容易理解。它只显示关联的属性以及它们与选中节点的关系强度。

属性配置文件视图如下图所示,这个视图显示了每个输入属性与每个输出属性之间的关系,在这个查看器里我们可以单击并拖动列的标题,重新排列视图中属性显示的顺序等等。在这个视图中,还可以增加或删除状态图例、修改直方条的数量、修改所查看的可预测属性(建立在构建的模型包含多个可预测值的基础之上)。还可以对其中的某些列进行隐藏,对数据进行进一步钻取等等。

在下一个选项卡属性特征视图上,可以看到所有属性与预测值输出之间关联的概率,在这个示例中,默认值设为状态0,这意味着“没有购买自行车”,默认排序是按照所有属性的关联度从强到弱排序,我们也可以更改排序规则,下图显示了按属性排序后的视图,可以清晰地看到通勤距离越短的客户不会买自行车的可能性就越大。

在最后一个选项卡属性对比视图中,可以比较拥有不同状态的属性之间的关联,我们从下图可以看出,拥有0辆私家车的属性与购买自行车的关系要比不买车的关系明显地强。还可以进一步看到下一个关联度最强的因子是年龄属性在34~39岁之间。与属性特征视图一样,在此视图中单击任意列的标题,就可以来重新排列视图结果的顺序。重点在于根据关联的强弱做出正确的决策,为了进一步提供方便,在使用这个视图的时候,可以在任务数据栏上单击右键,然后单击显示图例,在新窗口会显示支持此视图准确事例的数量。例如:打开NumberCars Owned的图例窗口,会显示支持各种属性状态的准确行数:cars owned=0或!=1的,bicycle purchased=0或1的。

微软朴素贝叶斯算法是我们在开始进行数据挖掘时经常使用的一个算法,它包含的视图很容易理解,我们经常在数据挖掘项目的早期直接向客户显示这些结果,以便他们能够更好地理解他们的数据和数据挖掘能给他们带来的价值。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics