您的位置:首页 > 数据库

通过 Microsoft SQL Server 2005 Analysis Services 构建库存预测模型

2006-01-26 08:54 471 查看
发布者 Apollo Data Technologies

SQL Server 技术文章
发布时间:2006 年 1 月
适用于:SQL Server 2005

摘要:本文介绍如何使用 SQL Server 2005 Analysis Services 来构建零售脱销预测模型。当这些模型应用于 Project REAL 数据时,它们会生成非常准确的预测。如果在公司中部署了这些预测模型,则其数据在 Project REAL 中使用的零售商可能一年增加数百万美元的销售收入。





下载


通过 Microsoft SQL Server 2005 Analysis Services 构建库存预测模型

672 kb
Microsoft Word 文件


本页内容


背景知识


关于 Project REAL


数据仓库说明


数据挖掘方法和构建数据集模型


构建预测模型结果


库存预测的自动化


结论


附录 A:商店分类属性


附录 B:脱销 DMX 查询

背景知识

向顾客提供大量产品的国内和国际零售商都面临着共同的挑战:确保其众多的商店具有适当的产品库存级别。确定适当的库存级别问题需要在以下两种竞争成本间进行权衡。

1.

高级别库存的存储成本。这些成本指零售商为安全的实际空间、额外的供应商购买以及在所有零售商店中与维持高级别产品库存相关的分配所支付的代价。

2.

丧失销售的成本。如果顾客进入商店,想要购买某种特定的产品,但由于该产品已脱销而无法供货,就形成了这些成本。

面对这种进退两难的情况,零售商通常有两种选择。零售商可以保持高库存,而承担高库存成本;或者保持低库存成本,而承担在顾客需要购买时由于没有产品而丧失销售机会的风险。权衡这些竞争成本的最佳方式是构建预测模型来确保每个连锁商店都具有适当的库存级别。

过去零售商依靠供应链软件、内部分析软件甚至直觉来预测库存需求。随着竞争压力的一天天增大,很多零售商(从主要财务主管到库存管理员)都开始致力于找到一些更准确的方法来预测其连锁商店应保有的库存。预测分析是一种解决方案。它能够准确预测哪些商店位置应该保持哪些产品。

本文介绍如何使用 Microsoft(R) SQL Server(TM) 2005 中的 Analysis Services 以及 SQL Server 数据仓库,采用数据挖掘技术为产品存储决策提供准确及时的信息。此处介绍的方法用于在商店/产品级别上提供脱销预测。对于某种特定产品,SQL Server 2005 Analysis Services 用于构建数据挖掘模型,该模型为每个连锁商店提供脱销预测。此方法使零售商能够有效地权衡与存储产品库存相关的竞争成本。



返回页首

关于 Project REAL

Project REAL 致力于找出创建基于 SQL Server 2005 的商业智能 (BI) 应用程序的最佳方法。在 Project REAL 中,我们通过创建基于真实客户方案的引用实现来进行。这意味着将客户数据引入内部,并使用这些数据来解决各个客户在部署过程中将会面临的相同问题。这些问题包括:

架构设计 - 关系架构和 Analysis Services 中使用的架构。

数据提取、转换和加载 (ETL) 过程的实现。

客户前端系统的设计与部署,以便进行报告和交互式分析。

生产系统的规模大小调整。

对运行中的系统的管理与维护,包括对数据的增量式更新。

通过分析真实的部署情况,我们可以全面了解如何使用 SQL Server BI 工具实现 BI 系统。我们的目标是致力于解决可能希望分析大型数据集的公司在其实际部署中遇到的所有问题。

本文概述了至今已为 Project REAL 执行的数据挖掘工作。很多其他文章介绍了已经完成的工作和在其他领域学过的课程。要查找最新的信息,请访问 Project REAL 网站 (http://www.microsoft.com/sql/bi/ProjectREAL/)。



返回页首

数据仓库说明

在 Project REAL 中,构建的数据仓库用于为在全国拥有数百家商店的零售商的数百万种产品汇总销售数据。用于构建脱销预测模型的相关数据集有:

以商店级别、产品(项)级别、天级别合计的销售量事实数据。具体地说,是为已经销售的每种产品、零售商的每个连锁商店存储每日销售量。

以商店级别、产品(项)级别、天级别合计的库存事实数据。具体地说,这是每种产品、每天、零售商的每个连锁商店的产品在库存中的天数。

由产品名、说明、零售价和产品类别层次结构组成的产品(项)信息。

由商店说明、商店分类(例如,指定是大型商店还是小型商店的指标)、商店分区、商店区域、商店地区、城市、邮政编码、省/自治区、货架空间线性尺寸和其他商店信息组成的商店信息。

日期信息(日期维度),它将事实数据级日期标识符映射到相应的财务周、财务月、财务季、财务年和其他日期信息。

具有一个清晰、最新的数据仓库可以为所有商业智能应用程序利用此有用的信息资产提供可靠的基础。在此特殊的构建脱销模型的任务中,数据仓库简化了构建数据集模型的过程。



返回页首

数据挖掘方法和构建数据集模型

根据在 Project REAL 中将数据挖掘技术应用于不同零售销售量预测和构建脱销模型问题所获得的经验,我们提出了通过两个阶段来构建模型,这一过程提高了准确预测的可能性。

构建模型过程的第 I 阶段是基于合计销售量模式对零售商的连锁商店进行分类。构建了质量商店分类模型后,在构造模型过程的第 II 阶段,这些分类用于使商店/产品级别上的脱销预测更加准确。通过使用 SQL Server 2005 Analysis Services 中的数据挖掘技术可以高效并有效解决这两个阶段。

本部分提供了整个脱销预测过程的详细信息,该过程从用于构建数据集模型的过程说明开始。然后对评估使用 SQL Server 2005 Analysis Services 构建的数据挖掘模型的方法进行了讨论。

构建脱销预测模型的过程

构建脱销模型分为两个阶段。

第 I 阶段是将具有相似合计销售量模式的连锁商店进行分类。对具有相似合计销售量模式的商店进行分类的过程称为“商店分类”。通过使用 SQL Server 2005 Analysis Services 中附带的 Microsoft 分类算法完成商店分类,从而将具有相似合计销售量模式的商店进行分类。将 Microsoft 分类算法应用于由合计销售量模式组成的数据集时,该 Microsoft 分类算法尝试通过以下方式对商店进行分类:属于同一分类的商店比属于不同分类的商店更加相似。构建数据集模型基于从数据仓库派生的合计销售量数据。因此,用于对商店进行分类的“相似性”测度是按照此合计销售量数据计算而来的。

然后,我们使用第 I 阶段生成的分类模型在第 II 阶段构建更准确的脱销预测模型。这允许预测算法(例如 Microsoft 决策树或 Microsoft 神经网络)使用分类结果来提高预测准确性。实质上,要优化特定商店 s 的特定产品 p 的预测,在确定商店 s 的 p 是否脱销时,SQL Server 2005 中的预测算法可能使用相似商店 s 中同一产品 p 的销售量事实数据,这样可以提高预测的准确性。

为产品p 构建脱销预测模型的高级步骤

使用 SQL Server 2005 Analysis Services 构建最佳预测模型的两阶段过程由以下高级步骤组成。将在以下的部分详细介绍这些步骤。

1.

使用数据仓库产品信息(维度)部分中的产品层次结构确定产品 p 的产品类别 c(p)。我们假定连锁商店中同一类别的产品具有相似的合计销售量模式。因此,产品结构层次用于标识特定产品 p 的相似产品集 c(p)。另外,产品分类方法可用于基于连锁商店的销售量通过对产品进行分类来确定与 p 产品相似的数据驱动分类。

2.

为商店分类准备构建数据集 Dcluster 模型来捕获类别为 c(p)(在步骤 1 中已确定)的商店级属性和销售量。

3.

将 Microsoft 分类算法应用于数据集 Dcluster,以便获得 k 个分类(组)的商店,这些商店在类别 c(p) 的商店级属性和销售量上相似。

4.

对于在步骤 3 中获得的每个分类,l = 1,…,k:

i

使 S(l) 成为商店集,该商店集属于分类 l。注意,对于类别 c(p),这些商店具有相似的类别级合计销售量。

ii

创建数据集 DOOS(p,S(l)),它由 S(l) 中每个商店 s 的历史和当前每周销售量合计以及每周销售量合计变化组成。另外,还包括布尔标志,用于指明产品 p 在未来一周和未来两周是否脱销。

iii

将 SQL Server 2005 Analysis Services 中的构建预测模型算法(例如 Microsoft 决策树或 Microsoft 神经网络)应用于数据集 DOOS(p,S(l))。将历史和当前每周销售量合计作为输入属性,将一周和两周脱销布尔标志作为输出或仅预测属性。这将使 SQL Server 2005 Analysis Services 生成这样的模型:该模型将其输入用作历史和当前每周销售量以及每周销售量变化,然后进行布尔标志的预测,该标记指明产品 p 将在未来一周和未来两周内是否脱销。

在接下来的两部分中将更加详细地介绍数据准备和构建模型步骤。

在 Project REAL 环境中,零售商为 Barnes & Noble。Project REAL(引用实现、端到端、大规模和大量用户的缩写词)是 Microsoft Corporation、Apollo Data Technologies 和其他中坚技术合作伙伴(包括 UNISYS、EMC2、ProClarity、Panorama、Scalability Experts 和 Intellinet)协作的成果,目的在于创建 BI 系统的可引用的实现。

使用 Barnes & Noble 提供的可信企业数据,Project REAL 合作者能够发现创建 BI 应用程序的最佳方法,这些 BI 应用程序基于 Microsoft SQL Server 2005。此完整系统通过以一种全面的方式分析大型数据集从而解决所有客户操作难题。

注意以下五个产品(书),这五个产品属于同一类别 (Chapter Books)。

Captain Underpants & The Invasion of the Incredibly Naughty Cafeteria Ladies from Outer Space (Captain Underpants Series)

Junie B Jones Is a Graduation Girl

Dinosaurs:A Nonfiction Companion to Dinosaurs Before Dark (Magic Tree House Research Guide Series #1)

City in the Clouds (Secrets of Droon Series #4)

Twisters and Other Terrible Storms (Magic Tree House Research Guide Series)

第 I 阶段:商店分类

注意,商店分类的目标是获得具有相似销售量模式的商店组,着重于产品 p 所属的类别 c(p) 中产品的销售量。

第 I 阶段首先构建将用于商店分类的数据集。为了将对活动零售销售量和库存数据仓库的计算影响降低到最低程度,我们建议您创建独立的 SQL 数据库来存储数据集,这些数据集用于使用 SQL Server 2005 Analysis Services 构建模型。

商店分类数据集构建

用于商店分类的数据集由 2004 年 1 月到 2004 年 12 月这段时间内的商店级合计销售量组成。该数据集由具有关键字 StoreID 的单个表组成。StoreID 是整数,用于唯一标识每个连锁商店。

由于商店分类任务的目标是根据合计销售量模式的相似性将商店进行分类,因此我们与零售商合作以便标识对此练习有用的一组合计销售量属性。用于构建模型的这组属性的类型和信息内容通常会影响生成的输出模型。标识用于构建模型的一组属性时,我们发现与对基本业务过程有深刻理解的利益关系人合作会有好处。另外,根据在直接零售过程中已经完成的工作,我们能够建议可能有用的属性。对于每个商店,基于数据仓库中的事实数据对属性进行合计。这些销售级合计如下。有关所有用于商店分类问题的商店级属性的详细说明,请参见附录 A。

产品(书)p 所属的类别 [在以前的部分中称为 c(p)] 的特定类别的派生属性。它们是:

Category Average Weekly Modeled:特定商店中预期每周要出售的某类别的书的估计数量。

Category Average Weekly On Hand:特定商店中某类别的每周可售(库存)平均值。

Category Average Weekly On Order:特定商店中某类别的每周预定书平均数。

Category Fraction Holiday Sales:特定商店中来自类别为 c(p) 的书的节假日总销售量部分。注意,节假日销售量是在 2004 年 11 月 15 日到 2004 年 12 月末之间所销售的书。

Category Fraction Sales:特定商店中来自类别为 c(p) 的书的非节假日总销售量部分。注意,非节假日销售量是在 2004 年 1 月 1 日到 2004 年 11 月 14 日之间所销售的书。

Category Holiday Discount Amount:特定的商店的节假日期间,类别为 c(p) 的折扣书总数。

Category Holiday Markdown Amount:特定的商店的节假日期间,类别为 c(p) 的减价书总数。

Category Holiday Member Discount Amount:特定的商店的节假日期间,类别为 c(p) 的书的总会员折扣。

Category Holiday Sales Amount:特定的商店的节假日期间,类别为 c(p) 的书的总销售量。

Category Holiday Sales Quantity:特定的商店的节假日期间,类别为 c(p) 的书的总数量。

Category Total Discount Amount:特定的商店的非节假日期间,类别为 c(p) 的折扣书总数。

Category Total Markdown Amount:特定的商店的非节假日期间,类别为 c(p) 的减价书总数。

Category Total Member Discount Amount:特定的商店的非节假日期间,类别为 c(p) 的书的总会员折扣。

Category Total Sales Amount:特定的商店的非节假日期间,类别为 c(p) 的书的总销售量。

Category Total Sales Quantity:特定的商店的非节假日期间,类别为 c(p) 的书的总销售量。

对于以下每个类别,均计算属于该类别的节假日总销售量部分(例如附录 A 中的 Cat Frac Holiday Sales)。另外,还将计算属于该类别的非节假日总销售量部分(例如附录 A 中的 Cat Frac Sales 属性)。根据零售商的反馈,考虑用于捕获高级整个销售量的类别为:Beginning Reader、BG Bestseller、BGCKBKS Under 15、BG Reference、Blank Books、Board Block Touch、Chapter Books、Christian Insp、Cooking、Current Affairs、Family Child Care、Fantasy、Fiction、Fiction PB Young Readers、Hist Biog、Humor、Juv Activity、Juv Christmas、Juv Series HC、Juv Series PB、Juv Work Books、Literature、Magazines、Management、Manga Japanese、Mystery、New Age、Newspapers、Pict Sty Bks、Pop Rock、Romance、Science Fiction、Self Improvement、Single Cards、Spinner、Techno Thriller Espionage 和 Teen Fiction。

还包括以下商店级合计。

Total Holiday Sales:节假日期间,商店所有书的总销售量。

Total Sales:非节假日期间,商店所有书的总销售量。

Total Weekly Average Modeled:商店所售书的总量的平均每周估计值。

Total Weekly Average On Hand:特定商店可售书的每周平均总量。

Total Weekly Average On Order:特定商店预定书的每周平均总量。

以下商店属性也包括在商店分类数据集中:CityLinear Ft(商店中货架空间的直线英尺数)、(商店的)Square FeetState

通过 SQL 计算这些商店级属性和合计值,并存储于单独的、不规范的表中。注意,此表仅用于通过 SQL Server 2005 中的数据挖掘组件构建模型。如果某个组织想更新运行中的商店分类模型,我们建议您自动化此不规范的表的构建来准备数据。另外,可以定义视图(而不是表),从而从规范的事实数据和维度数据创建不规范的结果集。

该表的每行都由唯一的整数 StoreID 进行索引,并且对以前列表中的每个属性/合计都对应地包含一列,这些属性/合计在附录 A 中有详细介绍。对于商店分类练习和构建脱销模型,考虑至少开业一年的商店。对于此特定零售商,这将为 794 个商店。因此,用于商店分类的单个 SQL Server 2005 关系表由 846 行和 100 列(1 列为 StoreID,其他 99 列用于存储在以前的属性值列表中定义的属性值)组成。

商店分类挖掘模型构建

构建源关系表后,我们通过 Microsoft Visual Studio(R) 2005 来继续构建商店分类挖掘模型。首先,在 Visual Studio 2005 中创建 Analysis Services 项目,然后创建连接到包含商店分类数据集的 SQL Server 实例的 Data Source 对象。还必须创建数据源视图。此数据源视图仅选择包含商店级属性和合计属性的单个表。参见图 1。



1:商店分类数据源视图
查看原尺寸图像

添加数据源视图后,将为商店分类练习创建新的挖掘结构和挖掘模型。挖掘结构定义将用于构建商店分类模型的列结构。除了 Cat Fraction SalesCat Total Sales Qty 属性以外,选择其他所有属性作为 Input 属性。选择 Cat Fraction Sales 和 Cat Total Sales Qty 属性作为 Predict(Input 和 Predictable)属性。参见图 2。



2:商店分类挖掘结构
查看原尺寸图像

与 Microsoft 分类算法相关联的 CLUSTER_COUNT 参数指定最大分类数,以便在源数据中搜索。在默认情况下,值为 10。为了生成能够充分捕获商店属性和合计销售量/库存值中的相关关系的不同分类,根据经验和对分类模型(发现有 5 个分类)质量的估计,CLUSTER_COUNT 的值被更改为 5。通常,分析软件需要更改 CLUSTER_COUNT 参数以获得所需结果。在此应用程序中,我们发现当 CLUSTER_COUNT = 5 时,找到不同的商店分类(分类基于合计销售中的相似性)。另外,证据表明使用 MINIMUM_SUPPORT = 50 时将在此应用程序中获得更高质量的分类模型。这表示 Microsoft 分类算法仅标识其中具有 50 或更多事例(此应用程序中为商店)的分类。同样,分析软件也要更改 MINIMUM_SUPPORT 以获得所需的分类质量。参见图 3。



3Microsoft 分类算法参数
查看原尺寸图像

为 Microsoft 分类算法设置参数后,将处理挖掘结构,从而在 SQL Server 2005 Analysis Services 中创建和填充挖掘模型对象。

商店分类模型评估

构建商店分类模型后,使用 Microsoft SQL Server 2005 Analysis Server Cluster Browser 对这些模型进行评估以确定类别销售量模式是否确实区分了这些分类。

有关 SQL Server 2005 Analysis Services 找到的商店分类的摘要,请参见图 4。趋向于由 Total Sales、Category Sales Quantity、Category Weekly Sales、Category Weekly On-Hand 和 On-Order 值区别商店分类。图 4 为每个分类显示了属于特定分类的商店的示例城市/省值(图 4 中左边的列)和每个分类的区分因子(图 4 中右边的列)。



4Chapter Book 类别的商店分类
查看原尺寸图像

注意,可以通过使用 SQL Server 2005 Analysis Services Cluster Model Viewer(参见图 5)中的 Discrimination(区分)选项卡来确定区分特征(属性/值)对。



5:分类模型区分视图
查看原尺寸图像

第 II 阶段:构建脱销预测模型

既然已经构建了商店分类模型(这些模型将具有相似类别销售量模式的商店进行分类),接下来我们将着重于预测特定的书在未来一周和未来两周是否脱销的问题。在构建挖掘模型进行脱销预测之前,我们先为关注的每个产品(书)构建模型数据集。

构建脱销预测模型数据集

用于脱销预测模型任务的数据集需要考虑所有零售连锁商店的特定书的每周销售数据。根据经验和可用的历史数据量,我们开发了“滑动窗口”策略来创建用于构建预测模型的数据集。当数据是时间数据(例如,对未来进行预测时)并且可预测数量类型为离散类型(例如布尔脱销指标或销售箱)时,滑动窗口策略通常为良好的数据准备策略。如果具有足够的时间数据,并且可预测数量原本就为数字数量,时间系列构建模型可能为首选策略。

通过研究数据并着重于问题的环境,我们进行了以下观察。在每周内,特定书以及特定商店的历史销售和库存数据生成了 52 条记录(一年的所有数据)。通常,单个商店和单个产品很少发生脱销事件。为了获得准确的预测模型,练习数据需要包含足够数量的脱销事件和库存事件来标识区分这两者的趋势。通过考虑整个连锁商店的特定产品 p,以下数据准备策略用于获得足够数量的脱销事件和库存事件。我们包括商店分类标签(从商店分类模型派生而来),以便使构建预测模型算法可以标识不同商店分类之间可能不同的脱销行为的趋势。

特定产品(书)p 的脱销预测模型数据集构建

对于每个零售连锁商店 s:

对于 2004 年 1 月 1 日到 2004 年 12 月 31 日之间的每周:

a

生成唯一的商店/周标识符。这将是构建脱销模型数据集的关键。

b

商店 s 所属的商店分类标签,已在第 I 阶段:“商店分类”所述的商店分类模型确定。

c

当前周商店 s 的产品(书)p 的销售量 (CurrentWeekSales)。

d

当前周商店 s 的产品(书)p 的可售量 (CurrentWeekOnHand)。

e

当前周商店 s 的产品(书)p 的预定量 (CurrentWeekOnOrder)。

f

当前周的后一周商店 s 的产品(书)p 的销售量 (OneWeekAheadSales)。

g

当前周的后两周商店 s 的产品(书)p 的销售量 (TwoWeeksAheadSales)。

h

当前周的前一周商店 s 的产品(书)p 的销售量 (OneWeekBackSales)。

i

当前周的前两周商店 s 的产品(书)p 的销售量 (TwoWeeksBackSales)。

j

当前周的前三周商店 s 的产品(书)p 的销售量 (ThreeWeeksBackSales)。

k

当前周的前四周商店 s 的产品(书)p 的销售量 (FourWeeksBackSales)。

l

当前周的前五周商店 s 的产品(书)p 的销售量 (FiveWeeksBackSales)。

m

当前周的后一周商店 s 的产品(书)p 的可售量 (OneWeekAheadOnHand)。

n

当前周的后两周商店 s 的产品(书)p 的可售量 (TwoWeekAheadOnHand)。

o

当前周的前一周商店 s 的产品(书)p 的可售量 (OneWeekBackOnHand)。

p

当前周的前两周商店 s 的产品(书)p 的可售量 (TwoWeeksBackOnHand)。

q

当前周的前三周商店 s 的产品(书)p 的可售量 (ThreeWeeksBackOnHand)。

r

当前周的前四周商店 s 的产品(书)p 的可售量 (FourWeeksBackOnHand)。

s

当前周的前五周商店 s 的产品(书)p 的可售量 (FiveWeeksBackOnHand)。

t

当前周的前一周商店 s 的产品(书)p 的预定量 (OneWeekBackOnOrder)。

u

当前周的前两周商店 s 的产品(书)p 的预定量 (TwoWeeksBackOnOrder)。

v

当前周的前三周商店 s 的产品(书)p 的预定量 (ThreeWeeksBackOnOrder)。

w

当前周的前四周商店 s 的产品(书)p 的预定量 (FourWeeksBackOnOrder)。

x

当前周的前五周商店 s 的产品(书)p 的预定量 (FiveWeeksBackOnOrder)。

y

当前周的后一周商店 s 的产品(书)p 的销售箱 (OneWeekSalesBin)。用于此练习的销售箱为:

i



ii

1 到 2 个

iii

3 个及以上

z

当前周的后两周商店 s 的产品(书)p 的销售箱 (TwoWeekSalesBin)。用于此练习的销售箱为:

i



ii

1 到 2 个

iii

3 个及以上

aa

指明产品(书)p 是否将在未来一周内脱销的布尔标志 (OneWeekOOSBoolean)。

ab

指明产品(书)p 是否将在未来两周内脱销的布尔标志 (TwoWeekOOSBoolean)。

ac

当前周到其前一周之间商店 s 的产品(书)p 的销售变化量 (FirstWeekSalesChange)。

ad

当前周的前一周到前两周之间商店 s 的产品(书)p 的销售变化量 (SecondWeekSalesChange)。

ae

当前周的前两周到前三周之间商店 s 的产品(书)p 的销售变化量 (ThirdWeekSalesChange)。

af

当前周的前三周到前四周之间商店 s 的产品(书)p 的销售变化量 (FourthWeekSalesChange)。

ag

当前周的前四周到前五周之间商店 s 的产品(书)p 的销售变化量 (FifthWeekSalesChange)。

这是一个很长的属性列表。在典型的数据挖掘情况下,有成百上千甚至更多用于说明要构建模型的实体的属性很常见。数据挖掘算法将尝试标识相关性以进行准确的预测。由于相关性不是“先验的”,因此通常在练习数据集中包含所有可能的属性。例如,在预测指明两周脱销的布尔标志过程中,以下属性很有用(参见图 13)。

Current Week On Hand

Four Weeks Back On Hand

One Week Back Sales

Current Week Sales

Cluster Label(源自商店分类模型)

Four Weeks Back Sales

Five Weeks Back On Hand

Two Weeks Back Sales

但是,在构建模型之前,不可能知道这些属性将会相关。

注意,在此练习表中每个商店/周对都对应一行。同时注意,属性 FirstWeekSalesChangeSecondWeekSalesChangeFifthWeekSalesChange 有助于一周一周地接近第一个派生销售量(变化销售量)。通常,这些类型的属性在提高模型的预测准确性上非常有用。

为了更加客观地评估使用 SQL Server 2005 Analysis Services 构建的模型的预测准确性,通常会抽取一部分数据(称为“测试集”)。数据集的其余部分称为“练习数据集”。数据挖掘模型是使用练习数据集构建的。然后,将从模型中产生的预测与测试集上产生的实际值进行比较。

对于此应用程序中的练习数据集中的数据,我们使用与 2004 年 1 月 1 日到 2004 年 11 月 30 日之间的周相对应的数据集中的所有记录。对于测试集,我们使用数据与 2004 年 12 月 1 日到 2004 年 12 月 31 日之间的周相对应的数据集中的所有记录。

与特定产品(书)p 相对应的练习数据集由 10,635 行组成。(注意,对于 2004 年 1 月 1 日到 2004 年 11 月 30 日之间的周,每个商店/周对都对应一行。)除了商店/周标识符(键)列以外,练习数据集还包括 38 列。数据集中也包括其他列(如 Store_IDWeek_ID),但是它们不用于构建模型。

与特定产品(书)p 相对应的测试数据集由 2,442 行组成。注意,对于 2004 年 12 月 1 日到 2004 年 12 月 31 日之间的周,每个商店/周对都对应一行。)在测试数据集中,除了唯一的商店/周对标识符(键)列以外还包括 38 列。

脱销挖掘模型构建

构建源关系表之后,通过 Visual Studio 2005 来构建预测数据挖掘模型。为此,将创建第一个 Analysis Service 项目和数据源,该项目和数据源为考虑中的产品(书)指定 SQL Server 实例(该实例用于存储练习表和测试表)。已创建选择所需表的数据源视图。参见图 6。



6:脱销预测模型数据源视图
查看原尺寸图像

添加数据源视图之后,将为构建脱销预测模型练习创建新的挖掘结构。将 Current Weekly Sales、Historic Weekly Sales、On-Hand 和 On-Order 属性指定为输入属性。将布尔脱销标志和每周销售箱属性(OneWeekOOSBooleanTwoWeekOOSBooleanOneWeekSalesBinTwoWeekSalesBin)指定为可预测 (Predict Only) 属性。

构建 Microsoft 决策树和 Microsoft 神经网络模型以确定哪个算法生成最准确的模型(通过将预测与测试集上产生的实际值进行比较来测度)。构建初始挖掘结构和挖掘模型后(指定输入和可预测属性),分析软件可以轻松地添加其他挖掘模型。(可以使用“添加挖掘模型”功能尝试不同的算法。)注意,在图 7 中,Input 表明该属性值将被用作预测模型的输入。PredictOnly 表明这些值应当由数据挖掘模型预测。Key 表明该列唯一标识感兴趣的情况。分析软件也可以将属性类型设置为 Predict。此属性类型表明属性同时可用于输入属性和可预测属性。(当它用于预测其他属性值时,应考虑为 Input 属性。)



7:具有 Microsoft 决策树和神经网络挖掘模型的脱销挖掘结构
查看原尺寸图像

我们发现更改 COMPLEXITY_PENALTY 和 MINIMUM_SUPPORT 的默认值后,使用 Microsoft 决策树算法可以获得非常准确的预测模型。我们使用 COMPLEXITY_PENALTY = 0.10。这可能导致较大(较详细)的决策树。较大、较详细的决策树能够更加准确地对练习数据构建模型,甚至某种程度上可以对练习数据中的“干扰”构建模型。这种情况称为“臃肿”,通常导致对提取的数据集或测试数据集的较差预测。另外,较大、较详细的决策树可能需要稍多的计算来进行预测。MINIMUM_SUPPORT 的值也被降低到 5 – 这也可能导致较大的决策树。图 9 显示了这些变化。



8Microsoft 决策树算法参数
查看原尺寸图像



返回页首

构建预测模型结果

以经验为依据的结果

如上所述,挖掘模型的预测准确性通过在测试集(与 2004 年 12 月 1 日到 2004 年 12 月 31 日之间的周相对应的数据)上检查它们来评估。

通过使用 SQL Server 2005 Analysis Services 中的提升图功能来评估挖掘模型。提升图通过指定数据集提供特定数据挖掘模型的预测性能的整体图。在这种情况下,我们为此评估使用测试数据集。提升图将挖掘模型的预测性能与理想模型和随机模型的预测性能进行比较。图 9 显示了书 Captain Underpants 的布尔两周脱销预测的提升图。任务是预测任意零售连锁商店中的书是否将在未来两周内脱销。注意,此模型的整体预测准确性与理想模型非常接近。



9:两周布尔脱销预测的提升图
查看原尺寸图像

图 10 汇总了当书在未来两周确实脱销时,商店/周组合的预测性能。



10:累积图当产品在未来两周脱销时,在识别商店/周组合过程中的性能。
查看原尺寸图像

图 11 显示了预测两周脱销布尔值的 Microsoft 决策树算法的图形说明。



11Captain Underpants 的两周 OOS 决策树
查看原尺寸图像

图 12 汇总了此任务中所考虑的全部五种产品(书)的预测准确性。平均来说,SQL Server 2005 Analysis Services 获得的数据挖掘模型可以预测在未来一周内一本书是否将脱销,准确性为 98.52%。平均来说,预测该书是否将在未来两周内脱销的准确性为 86.45%。当预测实际销售箱值时,预测准确性会上升。



12:五种产品(书)的脱销预测准确性
查看原尺寸图像

销售机会

基于预测模型的保守估计表明由 1 份和 2 份书副本引起的丢失销售机会的损失分别为 3405.48 美元和 6810.95 美元。如果在年初就部署这些模型,则不会失去这些销售机会。参见图 13。



13:销售机会
查看原尺寸图像

计算每项失去的销售机会的方法是通过将商店的脱销 (OOS) 总周数乘以两周布尔预测值来计算的。如果部署了这些模型,这会生成新的商店的 OOS 周数。将 OOS 预测值乘以该年度实际的书销售量的百分比再乘以各自的零售销售价格,就得到了总销售机会。

销售机会公式
(# of total OOS weeks for all stores) x (2-week Boolean predicted accuracy)
X (% of actual sales across all stores) x (retail price)
= Yearly increase in sales opportunity using Apollo OOS predictions

如果将这些数字运用到总零售线,销售机会就变得非常引人注目了。如果实现了库存预测模型,就有可能使销售收入增加数百万美元。



返回页首

库存预测的自动化

SQL Server 2005 Integration Services 中已经包括了数据挖掘功能。因此,Integration Services 可用于使每周或每月脱销预测的过程自动化。这些预测基于可能体验脱销情况的商店/产品组合向零售商提供了更新报告。

Apollo Data Technologies 建议不仅定期自动化获得脱销预测的过程,而且自动化评估预测模型性能的过程。然后,可以使用后者确定练习数据挖掘模型的预测准确性是否已低于可接受的水平。如果练习脱销预测模型低于指定的预测准确性,则很可能 SQL Server 2005 数据挖掘模型所提取的趋势和模式已经更改。在这种情况下,需要构建新的模型,并对其优化。

脱销预测的自动化

脱销预测模型可以使零售商更准确地预测在未来一周和两周内是否可能出现脱销情况。部署脱销预测技术通常情况下需要每周或每月更新脱销预测。

可以使用 SQL Server 2005 Integration Services 实现生成可能体验脱销情况的产品/商店组合的过程。可以通过实现和计划以下工作流来达到此目的。

生成可能的脱销产品/商店组合
对于每个所需产品 p:

1.

通过查询数据仓库中的 Product 维度信息来确定产品 p 所属的类别 c(p)。

2.

确定通过销售类别 c(p) 分类的零售商店的商店分类模型名称。可以通过查询查找表来达到此目的。

3.

如果以前没有考虑产品 p,则为产品 p 创建新的预测模型数据集(如“构建脱销预测模型数据集”中所述)。如果以前已经考虑了产品 p,则为产品 p 的预测建模数据集追加行。这些新行与商店/周组合相对应。

4.

确定产品 p 的 SQL Server 2005 Analysis Services 脱销预测模型的名称。可以通过查询查找表来达到此目的。

5.

使用 SQL Server Integration Services 预测连接任务执行预测连接,以便获得脱销预测并将其写入关系表或 OLAP 多维数据集。有关用于获得脱销预测的 DMX 预测连接的详细信息,请参见附录 B。

预测准确性自动化

测度一段时间内的脱销预测模型的性能以确保用于支持零售库存决策的信息尽可能最新和准确很重要。为此,我们可以实现一个将实际库存级别和已经由模型预测的库存级别关联的系统。如果预测值趋于与实际值相符,就获得了预测模型中的信任级别。

同样,可以使用 SQL Server 2005 Integration Services 测度预测销售级别和实际值之间是否相符。这可以通过在预测的产品/商店/周组合的“销售箱”值(获得脱销预测时写入表,这一点在“脱销预测的自动化”一节中讨论过)报告到数据仓库并在数据仓库中更新后,将它们与实际销售级别进行比较来实现。

通过合计预测与实际销售值(销售箱)相符的次数,零售商就可以了解预测模型的准确性了。如果准确性低于特定阈值,则需要重新构建和重新优化脱销预测模型,也可能需要重新构建和重新优化商店分类模型。不正确的预测可能与改变最近构建的模型没有捕获的近期销售趋势有关。



返回页首

结论

本文介绍如何使用 SQL Server 2005 Analysis Services 来构建零售脱销预测模型。当这些模型应用于 Project REAL 数据时,它们能够为考虑中的一部分项生成非常准确的预测。如果这些模型部署了一年整,保守的估计表明,此零售商通过避免失去销售机会可以赚取数千美元。如果将这些数字运用到总零售产品线,销售机会就变得非常引人注目,销售收入可能增加百万美元。本文还为使用 SQL Server 2005 Integration Services 将模型预测和准确性测度进行自动化并整合为业务线应用程序提供了建议。

有关详细信息,请访问:

http://www.microsoft.com/sql/

本文对您有所帮助吗?请给出您的反馈意见。按照 1(差)到 5(优秀)五个等级,您会将本文定为哪一等级



返回页首

附录 A:商店分类属性

此表类出了从 Project REAL 数据仓库派生而来的商店级属性。

1商店分类属性

属性名
Beg Reader PB Cat Frac Holiday Sales
Beg Reader PB Cat Frac Sales
BG Bestseller510 Cat Frac Holiday Sales
BG Bestseller510 Cat Frac Sales
BGCKBKS Under15 Cat Frac Holiday Sales
BGCKBKS Under15 Cat Frac Sales
BG Reference Cat Frac Holiday Sales
BG Reference Cat Frac Sales
Blank Books Cat Frac Holiday Sales
Blank Books Cat Frac Sales
Board Block Touch Cat Frac Holiday Sales
Board Block Touch Cat Frac Sales
Cat Avg Weekly Modeled
Cat Avg Weekly On Hand
Cat Avg Weekly On Order
Cat Fraction Holiday Sales
Cat Fraction Sales
Cat Holiday Disc Amt
Cat Holiday Markdown Amt
Cat Holiday Member Disc Amt
Cat Holiday Sales Amt
Cat Holiday Sales Qty
Cat Total Disc Amt
Cat Total Markdown Amt
Cat Total Member Disc Amt
Cat Total Sales Amt
Cat Total Sales Qty
Chapter Books Cat Frac Holiday Sales
Chapter Books Cat Frac Sales
Christian Insp Cat Frac Holiday Sales
Christian Insp Cat Frac Sales
City
Cooking Cat Frac Holiday Sales
Cooking Cat Frac Sales
Current Affairs Cat Frac Holiday Sales
Current Affairs Cat Frac Sales
Family Child Care Cat Frac Holiday Sales
Family Child Care Cat Frac Sales
Fantasy Cat Frac Holiday Sales
Fantasy Cat Frac Sales
Fiction Cat Frac Holiday Sales
Fiction Cat Frac Sales
Fiction Literary Cat Frac Holiday Sales
Fiction Literary Cat Frac Sales
Fiction PB Young Readers Cat Frac Holiday Sales
Fiction PB Young Readers Cat Frac Sales
Hist Biog Cat Frac Holiday Sales
Hist Biog Cat Frac Sales
Humor Cat Frac Holiday Sales
Humor Cat Frac Sales
Juv Activity Cat Frac Holiday Sales
Juv Activity Cat Frac Sales
Juv Christmas Cat Frac Holiday Sales
Juv Christmas Cat Frac Sales
Juv Series HC Cat Frac Holiday Sales
Juv Series HC Cat Frac Sales
Juv Series PB Cat Frac Holiday Sales
Juv Series PB Cat Frac Sales
Juv Work Books Cat Frac Holiday Sales
Juv Work Books Cat Frac Sales
Linear Ft
Literature Cat Frac Holiday Sales
Literature Cat Frac Sales
Magazines Cat Frac Holiday Sales
Magazines Cat Frac Sales
Management Cat Frac Holiday Sales
Management Cat Frac Sales
Manga Japanese Comics Cat Frac Holiday Sales
Manga Japanese Comics Cat Frac Sales
Mystery Cat Frac Sales
New Age Cat Frac Holiday Sales
New Age Cat Frac Sales
Newspapers Cat Frac Holiday Sales
Newspapers Cat Frac Sales
Pict Sty Bks HC Cat Frac Holiday Sales
Pict Sty Bks HC Cat Frac Sales
Pict Sty Bks PB Cat Frac Holiday Sales
Pict Sty Bks PB Cat Frac Sales
Pop Rock Cat Frac Holiday Sales
Pop Rock Cat Frac Sales
Romance Cat Frac Holiday Sales
Romance Cat Frac Sales
Science Fiction Cat Frac Holiday Sales
Science Fiction Cat Frac Sales
Self Improvement Cat Frac Holiday Sales
Self Improvement Cat Frac Sales
Single Cards Cat Frac Holiday Sales
Single Cards Cat Frac Sales
Spinner Cat Frac Holiday Sales
Spinner Cat Frac Sales
Square Feet
State
Techno Thriller Espionage Cat Frac Holiday Sales
Techno Thriller Espionage Cat Frac Sales
Teen Fiction Cat Frac Holiday Sales
Teen Fiction Cat Frac Sales
Total Holiday Sales
Total Sales
Total Weekly Avg Modeled
Total Weekly Avg On Hand
Total Weekly Avg On Order


返回页首

附录 B:脱销 DMX 查询

以下是用于获得脱销预测的 DMX 查询。

SELECT
t.[Unique_Store_Week_ID],
[CBCaptainUnderpantsDT].[One Week OOS Boolean],
PredictProbability([CBCaptainUnderpantsDT].[One Week OOS Boolean]),
[CBCaptainUnderpantsDT].[One Week Sales Bin],
PredictProbability([CBCaptainUnderpantsDT].[One Week Sales Bin]),
[CBCaptainUnderpantsDT].[Two Week OOS Boolean],
PredictProbability([CBCaptainUnderpantsDT].[Two Week OOS Boolean]),
[CBCaptainUnderpantsDT].[Two Week Sales Bin],
PredictProbability([CBCaptainUnderpantsDT].[Two Week Sales Bin])
From
[CBCaptainUnderpantsDT]
PREDICTION JOIN
OPENQUERY([ApolloDWSDM],
'SELECT
[Unique_Store_Week_ID],
[ChapterBooksCluster],
[CurrentWeekSales],
[CurrentWeekOnHand],
[CurrentWeekOnOrder],
[OneWeekBackSales],
[TwoWeeksBackSales],
[ThreeWeeksBackSales],
[FourWeeksBackSales],
[FiveWeeksBackSales],
[OneWeekBackOnHand],
[TwoWeeksBackOnHand],
[ThreeWeeksBackOnHand],
[FourWeeksBackOnHand],
[FiveWeeksBackOnHand],
[OneWeekBackOnOrder],
[TwoWeeksBackOnOrder],
[ThreeWeeksBackOnOrder],
[FourWeeksBackOnOrder],
[FiveWeeksBackOnOrder],
[OneWeekSalesBin],
[OneWeekOOSBoolean],
[TwoWeekSalesBin],
[TwoWeekOOSBoolean],
[FirstWeekSalesChange],
[SecondWeekSalesChange],
[ThirdWeekSalesChange],
[FourthWeekSalesChange],
[FifthWeekSalesChange]
FROM
[dbo].[CB_CaptainUnderpants_Testing2]
') AS t
ON
[CBCaptainUnderpantsDT].[Chapter Books Cluster] = t.[ChapterBooksCluster] AND
[CBCaptainUnderpantsDT].[Current Week Sales] = t.[CurrentWeekSales] AND
[CBCaptainUnderpantsDT].[Current Week On Hand] = t.[CurrentWeekOnHand] AND
[CBCaptainUnderpantsDT].[Current Week On Order] = t.[CurrentWeekOnOrder] AND
[CBCaptainUnderpantsDT].[One Week Back Sales] = t.[OneWeekBackSales] AND
[CBCaptainUnderpantsDT].[Two Weeks Back Sales] = t.[TwoWeeksBackSales] AND
[CBCaptainUnderpantsDT].[Three Weeks Back Sales] = t.[ThreeWeeksBackSales] AND
[CBCaptainUnderpantsDT].[Four Weeks Back Sales] = t.[FourWeeksBackSales] AND
[CBCaptainUnderpantsDT].[Five Weeks Back Sales] = t.[FiveWeeksBackSales] AND
[CBCaptainUnderpantsDT].[One Week Back On Hand] = t.[OneWeekBackOnHand] AND
[CBCaptainUnderpantsDT].[Two Weeks Back On Hand] = t.[TwoWeeksBackOnHand] AND
[CBCaptainUnderpantsDT].[Three Weeks Back On Hand] = t.[ThreeWeeksBackOnHand] AND
[CBCaptainUnderpantsDT].[Four Weeks Back On Hand] = t.[FourWeeksBackOnHand] AND
[CBCaptainUnderpantsDT].[Five Weeks Back On Hand] = t.[FiveWeeksBackOnHand] AND
[CBCaptainUnderpantsDT].[One Week Back On Order] = t.[OneWeekBackOnOrder] AND
[CBCaptainUnderpantsDT].[Two Weeks Back On Order] = t.[TwoWeeksBackOnOrder] AND
[CBCaptainUnderpantsDT].[Three Weeks Back On Order] = t.[ThreeWeeksBackOnOrder] AND
[CBCaptainUnderpantsDT].[Four Weeks Back On Order] = t.[FourWeeksBackOnOrder] AND
[CBCaptainUnderpantsDT].[Five Weeks Back On Order] = t.[FiveWeeksBackOnOrder] AND
[CBCaptainUnderpantsDT].[One Week Sales Bin] = t.[OneWeekSalesBin] AND
[CBCaptainUnderpantsDT].[One Week OOS Boolean] = t.[OneWeekOOSBoolean] AND
[CBCaptainUnderpantsDT].[Two Week Sales Bin] = t.[TwoWeekSalesBin] AND
[CBCaptainUnderpantsDT].[Two Week OOS Boolean] = t.[TwoWeekOOSBoolean] AND
[CBCaptainUnderpantsDT].[First Week Sales Change] = t.[FirstWeekSalesChange] AND
[CBCaptainUnderpantsDT].[Second Week Sales Change] = t.[SecondWeekSalesChange] AND
[CBCaptainUnderpantsDT].[Third Week Sales Change] = t.[ThirdWeekSalesChange] AND
[CBCaptainUnderpantsDT].[Fourth Week Sales Change] = t.[FourthWeekSalesChange] AND
[CBCaptainUnderpantsDT].[Fifth Week Sales Change] = t.[FifthWeekSalesChange]




返回页首
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: