为呼叫中心模型创建预测(数据挖掘中级教程)

现在您已经了解了关于班次、星期几、呼叫和订单数以及服务等级之间的交互的一些情况,接下来可以创建一些可用于业务分析和规划的预测查询了。 首先您将在探索模型上创建一些预测来测试某些假设。 接下来,您将使用逻辑回归模型创建大容量预测。

本课程假定您已经熟悉如何使用预测查询生成器。 有关如何使用预测查询生成器的常规信息,请参阅创建 DMX 预测查询

使用神经网络模型创建预测

下面的示例演示如何使用为探索阶段创建的神经网络模型进行单独预测。 单独预测是试用不同的值以在模型中查看效果的好办法。 在此方案中,如果六个经验丰富的操作员值夜班,您将预测该夜班的服务等级(未指定星期几)。

使用神经网络模型创建单独查询

  1. 在 Business Intelligence Development Studio 中,打开包含要使用模型的解决方案。

  2. 在数据挖掘设计器中,单击**“挖掘模型预测”**选项卡。

  3. 在**“挖掘模型”窗格中单击“选择模型”**。

  4. **“选择挖掘模型”**对话框将显示挖掘结构列表。 展开挖掘结构可查看与该结构相关联的挖掘模型列表。

  5. 展开挖掘结构 Call Center,然后选择挖掘模型 Call Center - NN。

  6. 从**“挖掘模型”菜单中选择“单独查询”**。

    将显示**“单独查询输入”**对话框,该对话框中的各列映射到挖掘模型中的各列。

  7. 在**“单独查询输入”**对话框中,单击 Shift 行,选择 midnight。

  8. 单击 Lvl 2 Operators 行,键入 6。

  9. 在**“挖掘模型预测”**选项卡的下半部分,单击网格的第一行。

  10. 单击**“源”列,然后选择“预测函数”。 在“字段”**列中,选择 PredictHistogram

    此预测函数的可用参数的列表将自动显示在**“条件/参数”**框中。

  11. 将 ServiceGrade 列从**“挖掘模型”窗格中的列列表拖放到“条件/参数”**框中。

    列的名称自动作为参数插入。 可以将任何可预测属性列放入此文本框。

  12. 单击预测查询生成器上角的**“切换到查询结果视图”**按钮。

预期结果包含对于给定这些输入的每个服务等级可能的预测值,以及对每个预测的支持值和概率值。 您可以随时返回设计视图,更改输入或添加更多输入。

使用逻辑回归模型创建预测

尽管您可以使用神经网络模型创建预测,神经网络模型却更常用于探索复杂关系。 如果您已经知道与业务问题相关的属性,您就可以使用逻辑回归模型来预测更改特定独立变量的效果。 逻辑回归常用在财务计分这样的情境下,例如根据客户分析数据或其他属性来预测客户行为。

在本任务中,您将学习如何创建将用于预测的数据源,然后进行预测来协助回答一些业务问题。

生成用于大容量预测的数据

对于此方案,首先您将创建可用于进行大容量预测的源数据的聚合视图,然后将该数据加入到预测查询的挖掘模型中。 有多种方式可提供输入数据:例如,您可以从电子表格中导入人员配备级别,或以编程方式提供值。 在此为简洁起见,您将使用数据源视图设计器来创建命名查询。 该命名查询是一个自定义 T-SQL 语句,为每个班次创建聚合,如最多的操作员数、接收到最少的呼叫数或生成的平均问题数。

生成大容量预测查询的输入数据

  1. 在解决方案资源管理器中,右键单击**“数据源视图”并选择“新建数据源视图”**。

  2. 在数据源视图向导中,选择 AdventureWorks DW 2008 作为数据源,然后单击**“下一步”**。

  3. 在**“选择表和视图”页上,单击“下一步”**但不选择任何表。

  4. 在**“完成向导”**页中,键入名称 Shifts。

    该名称将作为数据源视图的名称显示在解决方案资源管理器中。

  5. 右键单击空设计窗格,然后选择**“新建命名查询”**。

  6. 在**“创建命名查询”**对话框中,对名称键入 Shifts for Call Center。

    该名称将仅作为命名查询的名称显示在数据源视图设计器中。

  7. 将以下查询语句粘贴到对话框下半部分的 SQL 文本窗格中。

    SELECT DISTINCT WageType, Shift, 
    AVG(Orders) as AvgOrders, MIN(Orders) as MinOrders, MAX(Orders) as MaxOrders,
    AVG(Calls) as AvgCalls, MIN(Calls) as MinCalls, MAX(Calls) as MaxCalls,
    AVG(LevelTwoOperators) as AvgOperators, MIN(LevelTwoOperators) as MinOperators, MAX(LevelTwoOperators) as MaxOperators,
    AVG(IssuesRaised) as AvgIssues, MIN(IssuesRaised) as MinIssues, MAX(IssuesRaised) as MaxIssues
    FROM dbo.FactCallCenter
    GROUP BY Shift, WageType
    
  8. 单击**“确定”**。

  9. 在设计窗格中,右键单击表 Shifts for Call Center,然后选择**“浏览数据”**以预览 T-SQL 查询返回的数据。

  10. 右键单击选项卡 Shifts.dsv (Design),再单击**“保存”**以保存新数据源视图定义。

预测每个班次的服务标准

现在您已经为每个班次生成了一些值,您将使用那些值作为您生成的逻辑回归模型输入,来生成多个预测。

使用新 DSV 作为预测查询输入

  1. 在数据挖掘设计器中单击**“挖掘模型预测”**按钮选项卡。

  2. 在**“挖掘模型”窗格中单击“选择模型”**,从可用模型列表中选择 Call Center - LR。

  3. 从**“挖掘模型”菜单中取消选择“单独查询”选项。 将警告您单独查询输入将丢失。 单击“确定”**。

    **“单独查询输入”对话框将替换为“选择输入表”**对话框。

  4. 单击**“选择事例表”**。

  5. 在**“选择表”对话框中,从数据源列表中选择Shifts。 在“表/视图名称”列表中,选择 Shifts for Call Center(可能会自动选择),然后单击“确定”**。

    更新**“挖掘模型预测”**设计图面可显示 Analysis Services 基于输入数据和模型中列的名称和数据类型创建的映射。

  6. 右键单击其中一条联接线,并选择**“修改连接”**。

    在此对话框中,您可以确切看到映射了哪些列以及未映射哪些列。 该挖掘模型包含 Calls 列、Orders 列、IssuesRaised 列和 LvlTwoOperators 列,这些列可以映射到您基于源数据中上述列创建的任何聚合中。 对于此情况,您将映射到平均值。

  7. 单击 LevelTwoOperators 旁边的空单元格,然后选择 Shifts for Call Center.AvgOperators

  8. 单击 Calls 旁边的空单元格,然后选择 Shifts for Call Center.AvgCalls。 单击**“确定”**。

创建每个班次的预测

  1. 在**“预测查询生成器”下半部分的网格中,单击“源”**下的空单元格并选择 Shifts for Call Center。

  2. 在**“字段”**下的空单元格中选择 Shift。

  3. 单击网格中的下一个空行并重复刚刚描述的过程来为 WageType 添加另一行。

  4. 单击网格中的下一个空行。 为**“源”选择“预测函数”。 为“字段”选择“预测”**。

  5. 从**“挖掘模型”窗格中将 ServiceGrade 列向下拖动到网格中,并将其放到“条件/参数”单元中。 在“别名”**字段中,键入 Predicted Service Grade。

  6. 单击网格中的下一个空行。 为**“源”选择“预测函数”。 为“字段”**选择 PredictProbability

  7. 再次从**“挖掘模型”窗格中将 ServiceGrade 列向下拖动到网格中,并将其放到“条件/参数”单元格中。 在“别名”**字段中,键入 Probability。

  8. 单击**“切换到查询结果视图”**以查看预测。

下表显示了每个班次的结果示例。

班次

WageType

预测服务等级

概率

AM

假日

0.109136059911771

0.988372093023256

midnight

假日

0.102997190221556

0.988372093023256

PM1

假日

0.118717846218269

0.988372093023256

PM2

假日

0.129285352721855

0.988372093023256

AM

工作日

0.0818812064002576

0.988372093023256

midnight

工作日

0.0708461247735892

0.988372093023256

PM1

工作日

0.0902827481812303

0.988372093023256

PM2

工作日

0.101794450305237

0.988372093023256

预测呼叫时间对服务等级的影响

假定您最初的业务目标是确定如何将挂断率保持在 0.00-0.05 的目标范围内。 您针对这一目标而开发的神经网络模型指示呼叫响应时间对服务等级影响很大。 因此,业务团队决定运行一些预测,评估缩短响应呼叫的平均时间是否会提高服务等级。 例如,如果您将呼叫响应时间缩减到当前响应时间的 90%,甚至 80%,会出现什么情况?

创建计算每个班次平均响应时间的数据源视图 (DSV),随后添加计算该平均响应时间的某个百分比,操作起来很容易。 然后可以将该 DSV 用作模型输入。

例如,下表显示了将三个不同响应时间(实际数据的平均值、表示实际值的 90% 的值,以及表示呼叫响应平均时间的 80% 的值)作为输入的预测查询的结果。

在这些结果中,每列中的第一组预测表示预测的服务等级,第二组数字(在括号内)表示该预测值的概率。 从这些结果中可以得出结论,将响应时间减少到 90% 是最经济有效的解决方案。

班次

WageType

每个班次的呼叫响应平均时间

将响应时间减少到当前时间的 90%

将响应时间减少到当前时间的 80%

AM

假日

0.165 (0.366079388)

0.05 (0.457470875)

0.05 (0.610514425)

AM

工作日

0.05 (0.341218694)

0.05 (0.475767776)

0.05 (0.60083244)

midnight

假日

0.165 (0.337801273)

0.05 (0.413774655)

0.05 (0.545764101)

midnight

工作日

0.05 (0.378241537)

0.05 (0.471615415)

0.05 (0.545614362)

PM1

假日

0.165 (0.457871243)

0.165 (0.376892925)

0.05 (0.359440286)

PM1

工作日

0.08 (0.299182047)

0.08 (0.363761441)

0.08 (0.40686473)

PM2

假日

0.105 (0.325921785)

0.05 (0.392121793)

0.05 (0.521558758)

PM2

工作日

0.105 (0.436051591)

0.105 (0.342589832)

0.05 (Y)

除了通过数据源视图提供输入值之外(如此所示),您还可以以编程方式计算输入并将其提供给模型。 通过循环访问所有可能的值,您可以找到在保证每个班次目标服务级别的前提下,响应时间最小减少量。

可以在此模型上创建多种其他预测查询。 例如,您可以预测要达到某服务级别或要响应一定数目的传入呼叫所需的操作员人数。 因为您可以在逻辑回归模型中包括多个输出,所以很容易试用不同的独立变量和结果,而无需创建许多单独的模型。

备注

Excel 2007 数据挖掘外接程序提供的逻辑回归向导很容易回答一些复杂问题,如针对一个特定班次,要将服务等级提高到目标级别,需要多少名二级操作员。 数据挖掘外接程序是免费下载的,并包含基于神经网络和/或逻辑回归算法的向导。 有关更多信息,请参见下列链接:

结语

您已经学习了创建、自定义和解释基于 Microsoft 神经网络算法和 Microsoft 逻辑回归算法的挖掘模型。 这些模型类型很精细,允许在分析中使用几乎无限种变化,因此会很复杂并难于掌握。 数据源视图设计器中所提供的工具(如基于 Excel 的图表和数据透视表)支持算法检测到的最强趋势,并有助于您理解所发现的趋势。 但是,若要充分理解模型的精髓,您可能需要探查模型提供的分析并在一定程度上审查您的数据,在自定义挖掘模型查看器和其他工具之间来回查看,才能充分加深对数据中趋势的理解。

更改历史记录

更新的内容

更正了预测和 DDL 语句中的挖掘模型名称以便与更新后的方案匹配。

更正了“问题”的列名。 更新了示例结果以使用包括 DayOfWeek 的模型。 添加了对最终预测方案的解释。