本文主要针对那些在解决案例研究时缺乏自信的新手。这通常是他们在工作面试中被拒绝的关键原因之一。如果还在阅读这篇文章,假设已经准备好与一起迈向下一个层次了!
将第一层的内容简化,以便让渴望进入下一层。它只需要逻辑上理解呼叫中心中发生的事情。然而,这只是呼叫中心实际发生事情的过度简化版本。在本文中,将更进一步,讨论一个更接近现实生活的呼叫中心优化问题。相信这对R语言用户更有帮助,因为已经展示了R语言中的代码。即使不懂R语言,也可以使用Excel等工具来解决这个问题。
请确保查看“数据科学面试课程”,其中包含了多个类似的案例研究。为准备了一门非常全面的课程,帮助成功获得第一份数据科学工作——不要错过!
假设正在为一家中等规模的电子商务公司建立一个呼叫中心。被要求找出这个需求所需的呼叫者总人数。这个需求将外包给一个保证24小时提供呼叫者服务且效率相同的呼叫中心。
利用这个效率,还估计了每个客户的通话时间和通话持续时间。这个估计是基于市场研究和过去客户行为的预测。可以假设这个预测是准确的。现在,需要估计以下内容:
提供给数据是一天内进行的10,000次通话。可以在这里下载数据。数据看起来像这样:
以下是应该考虑的一些事项:
正如常说的,首先探索和分析数据分布至关重要。以下是数据中通话持续时间的分布情况:
正如所见,大多数通话(通话持续时间)在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分钟,这是任何公司都不希望看到的。
因此,