很多朋友表示没有看懂,是我标题党了;故续一下。也许还有 再续,续续续,再续续续等等。
首先要收集每个客户会话的发起时间信息,星期几、月、日、时、分;再通过定时任务不断更新这个会话被应答的时间,比如客户在 星期天,4月,30日,早上9点,30分,发起了一个会话,那么系统每隔固定的时间,比如30分钟,看看这个会话有座席应答没有,如果没有,就虚伪的更新应答时间是现在,(实际上没有人回答,所以说是虚伪的),如果在定时检查任务正在休息的时候,座席很勤奋的应答了,那么在这个应答的时机把真正应答时间更新。
这样无论是否有座席应答我们都能得到,真实或者虚伪的座席应答延迟时间。
当然,如果一直没有座席应答,那么定时任务会不断的更新那个虚伪的应答时间,这样就可以实现应答预测结果随着现实不断调整。
随着时间流逝,我们会收到很多组数据,客户不断发起会话,定时任务不断检查更新那个虚伪的应答时间和间隔,座席也偶尔真的出现,回答客户问题。
定义 X 为客户发起会话的向量:
X = [
[0, 4, 30, 8, 30],
[0, 4, 30, 9, 30],
[0, 4, 30, 9, 40]
]
第一列表示 星期几,第二列是月份,第三列是日期,第四列是小时,第五列是分钟。
定义 Y 为座席应答的时间间隔,这个间隔的计算来自定时任务和座席真的应答了,定时任务会不断运行,所以它计算的结果会不断被更新,而真正座席应答的时间会被固化,这得靠程序员的努力了,这里只是说说。
Y = [
100,
200,
20
]
这里面的数值单位是秒,Y和X一一对应,就是一组 X 的向量对应一个 Y 的值。
我们已经做出了假设,X 与 Y 之间存在着某种关系,假如是个线性关系,那么一定存在这样的矩阵 A 能够使得 Y = A * X。
通过不断的从现实世界中 获取 X 和Y,算出我们梦中的 A 。
这不就是我们小时候的二元一次方程吗,只不过变得有点多了,以前都是求 X和Y,现在是 X,Y 都给你了,要求系数。
是不是线性的关系很难讲,(把问题留给数学家,和数据科学家吧),我们要做的就是选择算法,找实现的库,开始算,看结果,哪个结果好,就用哪个。然后在找理论依据。(这听起来好像是打哪指哪的战法,😄)
怎么找?如果你从来没有干过这种事情,是没有头绪的,那只有看我了。
我最熟悉 SVM,(SUPPORT VECTOR MACHINE)支持向量机,当并行计算和电费没有那么便宜的时候它成功的抑制了神经网络的发展。所以先试试 SVM:
from sklearn import svm
import datetime
X = [
[0, 4, 30, 8, 30],
[0, 4, 30, 9, 30],
[0, 4, 30, 9, 40]
]
Y = [
100,
200,
20
]
_now = datetime.datetime.now()
_rbf_svc = svm.SVC(kernel='rbf', gamma=0.7, C=1.0).fit(X, Y)
_y = _rbf_svc.predict([[_now.weekday(), _now.month, _now.day, _now.hour, _now.minute]])
print(_y)
_y 是什么?就是对当前时刻进行预测的结果,当前时刻下如果有客户来问问题,_y就是多少秒之后会应答。
够简单吗?打开 Python,把这几行代码复制进去看看能不能运行!(要先安装 scikit-learn scipy numpy)
当然你可以选择其他的算法 Bayes,KNN等等,观察一下效果。SVM 的效果确实不太好。我都在这里了,它居然还提示 11 个小时才能回复;可能是程序过了一个晚上,太多延迟的会话没有回答,程序愤怒了。我也错过赚几十个亿的机会。
突然想到,其他的方法可以放到 再续 里面继续写!全文居然一次都没有提到
PPMESSAGE,那可不是我想要的结果,😄
GOOD LUCK!
2017/05/03
Guijin Ding