呼叫中心优化问题解析

本文主要针对那些在解决案例研究时缺乏自信的新手。这通常是他们在工作面试中被拒绝的关键原因之一。如果还在阅读这篇文章,假设已经准备好与一起迈向下一个层次了!

将第一层的内容简化,以便让渴望进入下一层。它只需要逻辑上理解呼叫中心中发生的事情。然而,这只是呼叫中心实际发生事情的过度简化版本。在本文中,将更进一步,讨论一个更接近现实生活的呼叫中心优化问题。相信这对R语言用户更有帮助,因为已经展示了R语言中的代码。即使不懂R语言,也可以使用Excel等工具来解决这个问题。

请确保查看“数据科学面试课程”,其中包含了多个类似的案例研究。为准备了一门非常全面的课程,帮助成功获得第一份数据科学工作——不要错过!

业务案例(难度:中等)

假设正在为一家中等规模的电子商务公司建立一个呼叫中心。被要求找出这个需求所需的呼叫者总人数。这个需求将外包给一个保证24小时提供呼叫者服务且效率相同的呼叫中心。

利用这个效率,还估计了每个客户的通话时间和通话持续时间。这个估计是基于市场研究和过去客户行为的预测。可以假设这个预测是准确的。现在,需要估计以下内容:

  • 如果需要确保没有客户等待与代表联系(零等待时间),需要的最少呼叫者人数是多少?
  • 如果需要确保没有客户等待超过30分钟(最多30分钟等待时间),需要的最少呼叫者人数是多少?

提供给数据是一天内进行的10,000次通话。可以在这里下载数据。数据看起来像这样:

以下是应该考虑的一些事项:

  • 通话持续时间以“分钟”为单位。
  • “时间”是从午夜00:00开始的分钟数。
  • “呼叫”代表客户的ID。
  • 假设每个呼叫者效率相同,并且通话持续时间与数据中给出的相同。
  • 还应该假设呼叫者没有休息时间,并且每个呼叫者在整个24小时内都可用。请注意,数据仅针对一天(1440分钟)。

正如常说的,首先探索和分析数据分布至关重要。以下是数据中通话持续时间的分布情况:

正如所见,大多数通话(通话持续时间)在3-7分钟之间,峰值在5分钟。让来看下一个变量。

这里是呼叫时间的分布情况:

对来说,它也看起来是正态分布的,即它遵循与前一个图表相似的形状。可以看到,最多通话在上午9点到下午4点之间到达,峰值在中午12点。

已经完成了数据探索。现在,将找到解决方案。

让从一个非常简单的解决方案开始。如果忽略通话被接听的时间,所有通话持续时间的总和是50,635分钟。

# 可用的呼叫者时间 (24*60) = 1440分钟 # 所需呼叫者人数 = (50635 / 1440) = 35.14 # 因此,如果可以选择在呼叫者空闲时回拨客户,大约需要36个呼叫者。

所以,在面试中,当没有太多时间但需要一个直观的解决方案时,这种假设是有效的!但现实生活并不那么简单。在这里,需要考虑客户拨打呼叫中心的时间。

因此,对于实际解决方案,需要为每个客户-呼叫者组合进行模拟。使用R语言来做这件事,可以使用任何工具,如Excel、Python来完成这个任务。以下是简单的R代码:

# 设置工作目录 > setwd("C:\\Tavs\\CC") # 读取数据 > data <- read.csv("Case_Level2.csv") > summary(data) # 创建一个矩阵,将在这里存储每个呼叫者数量的最大等待时间 > caller_opt <- matrix(0,100,2) # 为每个可能的呼叫者数量运行循环。这里取的范围是1到100 > for (number_of_callers in (1:100)){ # 为每个呼叫者初始化可用时间 caller <- rep(0,number_of_callers) # 索引将用于引用呼叫者 index <- 1:number_of_callers # 这里存储每个呼叫者可用性与通话时间的差异 caller_diff <- rep(0,number_of_callers) # 在表中添加两列:分配给客户的呼叫者和客户的等待时间 data$assigned <- 1 data$waittime <- 0 for (i in 1:length(data$Call)) { caller_diff <- data$Time[i] - caller best_caller_diff <- max(caller_diff) index1 <- index[min(index[caller_diff == best_caller_diff])] data$assigned[i] <-  index1 data$waittime[i] <- max(-best_caller_diff,0) caller[index1] <- caller[index1] + data$Duration.of.calls[i] } caller_opt[number_of_callers,1] = number_of_callers caller_opt[number_of_callers,2] = max(data$waittime) print(caller_opt[number_of_callers,]) }

正如从图表中观察到的,决定正确的呼叫者数量非常重要。错过这个数字仅10%就可能显著增加客户的等待时间。在案例中,如果减少4个呼叫中心代表(大约44个),客户的最大等待时间就变成了87分钟,这是任何公司都不希望看到的。

因此,

  • 答案1是48,即需要48个呼叫者以确保没有等待时间。
  • 答案2是47,这意味着最大等待时间为21分钟,即至少需要47个呼叫者以确保没有客户等待超过30分钟(最大等待时间为30分钟)。
  • 所有代表效率相同
  • 代表没有休息时间
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485