CRM数据的异常检测:一步一步的指南

CRM数据异常检测:一步一步指南打造完美系统

编辑注:Geeta Shankar和Tuli Nivas将在今年10月30日至11月2日的ODSC West 2023活动中担任演讲嘉宾。记得查看他们的演讲:“用于CRM生产数据的异常检测”,不容错过!

CRM(客户关系管理)数据的异常检测变得越来越重要。及时监测生产数据中的任何异常行为并主动识别根本原因至关重要。当两个数据指标之间存在高相关性(R2值)时,可以使用回归模型来检测异常。对于可能与任何其他变量不相关的指标,我们可以尝试使用预测算法来描述其随时间的变化。一种目前的先进预测算法是Meta开发的Prophet。它特别适用于与响应时间有关的指标,例如运行时间或编译时间。在本篇博客中,我们旨在为您提供基于生产数据指标(如运行时间、应用程序CPU时间和数据库时间)构建第一个异常检测模型的全面指南。

理解异常检测

CRM数据中的异常是什么?异常可能表现为客户行为中的异常值或生产系统中的异常模式。及时确定异常是内部因素(如容量限制或资源利用过度)的结果,还是仅仅是不寻常的客户行为非常重要。我们偶尔会遇到季节性或周期性异常,需要分析历史数据以辨别出循环模式,例如在节假日期间销售量的飙升或特定月份客户参与度的下降。因此,构建针对关键性指标(如运行时间、应用程序CPU时间和数据库时间)的异常检测模型对于获得对CRM生产数据的深入洞察至关重要。

开始使用异常检测模型

展示的异常检测模型是使用Python实现的,利用sklearn进行回归建模,Prophet进行预测。开始之前,您需要设置一个已安装Python和这些库的工作环境。我们建议使用Jupyter Notebook作为实验的优秀环境,可以运行代码片段并进行功能测试。以下是具有所有必要导入的初始Jupyter Notebook单元格的屏幕截图:

pip install sklearnpip install prophetimport pandas as pdimport numpy as npfrom sklearn.linear_model import LinearRegressionfrom prophet import Prophetimport plotly.express as pximport plotly.graph_objects as go

活动 – ODSC West 2023

线下和线上会议

10月30日至11月2日

加入我们,深入探讨最新的数据科学和人工智能趋势、工具和技术,从LLMs到数据分析,从机器学习到负责任的人工智能。

准备数据

首先,您需要访问和加载您的CRM生产数据。我们创建了与我们的一些客户的生产环境数据非常相似的合成数据。您可以从这里下载我们的合成数据。

回归建模:检测资源利用率中的异常

为了检测资源利用率中的异常,我们将使用回归建模技术。此示例建立了一个线性回归模型,将先前发布数据的交易数量(count)与先前发布数据中具有高相关性的指标(累积应用程序CPU时间或累积数据库时间)相关联。然后,将线性回归模型应用于当前发布数据中处理的交易数量,以预测当前发布数据中感兴趣的指标。最后,通过对当前发布数据应用的线性回归除以对先前发布数据应用的线性回归的标准偏差,计算出z值。

lm = LinearRegression()lm.fit(np.array(prev_release['count']).reshape(-1,1),np.array(prev_release[metric]))predicted_current_release_metric = lm.predict(np.array(current_release['count']).reshape(-1,1))predicted_previous_release_metric = lm.predict(np.array(prev_release['count']).reshape(-1,1))zscores = (current_release[metric]-predicted_current_release_metric)/np.std(prev_release[metric]-predicted_previous_release_metric)

回归建模:检测响应时间异常

为了识别响应时间中的异常情况,我们将使用Prophet模型。该示例展示了使用置信区间为99%和年度以及周度季节性参数创建的Prophet模型。然后,我们将我们提供的P95运行时间的CSV数据与每小时的粒度进行拟合。通过使用Prophet模型对数据进行预测,可以为每个数据点创建独特的置信区间。如果真实数据点超出了预测的置信区间,则表示它们是异常的。底部的代码是一个示例,如果数据在置信区间内则将其标记为绿色,如果超出置信区间,则标记为红色,表示它们是异常的。

model = Prophet(interval_width=0.99, yearly_seasonality=True, weekly_seasonality=True)model.fit(data)forecast = model.predict(data)performance = pd.merge(data, forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']], on='ds')performance['anomaly'] = performance.apply(lambda rows: 1 if ((rows.y<rows.yhat_lower)|(rows.y>rows.yhat_upper)) else 0, axis = 1)anomalies = performance[performance['anomaly']==1].sort_values(by='ds')performance['color'] = np.where(performance['anomaly']== 1, 'red', 'green')performance['name'] = np.where(performance['anomaly'] == 1, '异常','在置信区间内')

想了解更多?

如果您对将所有这些异常检测的想法整合在一起感兴趣,请参加我们的ODSC West 2023研讨会,在那里您将了解如何将数据转化为适应这些异常检测模型,并创建有影响力的可视化效果。

关于作者/ODSC West 2023演讲嘉宾

Geeta Shankar是一位软件工程师,专门从事利用数据实现业务成功的工作。凭借在计算机科学、数据科学、机器学习和人工智能方面的专业知识,她始终保持对最新数据驱动创新的了解。她的印度古典音乐背景教会了她锐利思维、即兴能力以及与不同个体建立联系的重要性。Geeta利用这些技能将复杂的数据转化为有意义的洞见,提升绩效和客户体验。

Tuli Nivas是Salesforce的软件工程架构师,具有广泛的测试自动化和监控框架设计和实施经验。她的兴趣包括软件测试、云计算、大数据分析、系统工程和架构。Tuli拥有计算机科学博士学位,专注于构建稳健且容错的性能工程系统的流程。她最近的专业领域是机器学习和构建用于快速解决生产环境中的性能问题和异常检测的数据分析。