Microsoft Naive Bayes 算法

Microsoft Naive Bayes 算法是 MicrosoftSQL ServerAnalysis Services 提供的一种分类算法,用于预测性建模。Naive Bayes 名称派生自这样一个事实:该算法使用贝叶斯定理,但未将可能存在的依赖关系考虑在内,因此该假定称为理想化假定。

与其他 Microsoft 算法相比,该算法所需的运算量小,因而能够快速生成挖掘模型,以发现输入列和可预测列之间的关系。可以使用该算法进行初始数据探测,然后根据该算法的结果使用其他运算量较大、更加精确的算法创建其他挖掘模型。

示例

作为正在进行的促销策略,Adventure Works Cycle 公司的市场部已经决定通过发送宣传资料将目标定位为潜在的客户。为了降低成本,他们只向有可能做出反应的客户发送宣传资料。该公司将有关客户统计数据以及对上一邮件的反映的信息存储在数据库中。他们希望利用这些数据将潜在客户和具备相同特征并曾经购买过公司产品的客户进行对比,以了解年龄和位置等统计数据如何帮助预测客户对促销的响应。他们尤其希望找出购买自行车的客户与未购买自行车的客户之间的差别。

使用 Microsoft Naive Bayes 算法,市场部能够快速预测特定客户群的结果,进而确定最有可能对邮件做出响应的客户。而使用 Business Intelligence Development Studio 中的 Microsoft Naive Bayes 查看器,他们还能够以直观的方式专门调查哪些输入列有助于对宣传资料做出积极响应。

算法的原理

在给定可预测列的各种可能状态的情况下,Microsoft Naive Bayes 算法将计算每个输入列的每种状态的概率。使用 Business Intelligence Development Studio 中的 Microsoft Naive Bayes 查看器可以直观地观察算法分布状态的方式,如下图所示。

状态的 Naive bayes 分布

Microsoft Naive Bayes 查看器可列出数据集中的每个输入列。如果提供了可预测列的每种状态,它还会显示每一列中状态的分布情况。可以利用该视图确定对区分可预测列状态具有重要作用的输入列。例如,在此图的 Commute Distance 列中,如果某一客户的通勤距离为一至二英里,则该客户购买自行车的概率是 0.387,不购买自行车的概率是 0.287。在本示例中,该算法使用从诸如上下班路程之类的客户特征得出的数字信息来预测客户是否会购买自行车。有关如何使用 Microsoft Naive Bayes 查看器的详细信息,请参阅使用 Microsoft Naive Bayes 查看器查看挖掘模型

Naive Bayes 模型所需的数据

在准备用于定型 Naive Bayes 模型的数据时,应理解算法的要求,其中包括所需要的数据量以及使用数据的方式。

Naive Bayes 模型的要求如下:

  • 单键列 每个模型都必须包含一个用于唯一标识每条记录的数值列或文本列。不允许复合键。

  • 输入列 在 Naive Bayes 模型中,所有列都必须是离散列或经过离散化的列。有关离散化列的详细信息,请参阅离散化方法(数据挖掘)。对于 Naive Bayes 模型,至关重要的一点是确保输入属性相互独立。

  • 至少有一个可预测列 可预测属性必须包含离散或离散化值。可预测列的值可作为输入且经常作为输入处理,以便查找各列之间的关系。

查看模型

您可以使用 Microsoft Naive Bayes 查看器浏览模型。该查看器显示输入属性与可预测属性之间的关系。该查看器还提供了每个分类的详细配置文件、将每个分类与其他分类区分开来的属性列表以及整个定型数据集的特征。有关详细信息,请参阅使用 Microsoft Naive Bayes 查看器查看挖掘模型

如果希望了解更多详细信息,可在 Microsoft 一般内容树查看器(数据挖掘设计器)中浏览该模型。有关模型中存储的信息类型的详细信息,请参阅 Naive Bayes 模型的挖掘模型内容(Analysis Services - 数据挖掘)

作出预测

为模型定型后,结果将存储为一组模式,您可以浏览该模型或利用它来作出预测。

您可以创建查询,以返回有关新数据与可预测属性之间的关系的预测,也可以检索统计信息,以说明该模型发现的相关性。

有关如何创建针对数据挖掘模型的查询的信息,请参阅查询数据挖掘模型(Analysis Services – 数据挖掘)。有关如何使用针对 Naive Bayes 模型的查询的示例,请参阅查询 Naive Bayes 模型(Analysis Services - 数据挖掘)

注释

  • 支持使用预测模型标记语言 (PMML) 创建挖掘模型。

  • 支持钻取。

  • 不支持创建数据挖掘维度。

  • 支持使用 OLAP 挖掘模型。