CRMデータの異常検出:ステップバイステップガイド

CRMデータの異常検出:ステップバイステップガイドを使った新たな発見

編集者のメモ:Geeta ShankarさんとTuli Nivasさんは、今年の10月30日から11月2日に開催されるODSC West 2023でスピーカーを務めます。彼らのトーク「CRM製品データの異常検出」もぜひチェックしてください!

CRM(顧客関係管理)データの異常検出は、ますます重要性が高まっています。製品データにおける異常な動作を監視し、原因を積極的に特定することが重要です。2つのデータ指標が高い相関(R2値)を示す場合、回帰モデルを使用して異常を検出することができます。他の変数と相関しない指標に対しては、予測アルゴリズムを使用して時間経過に応じた動作を特定しようとすることができます。最新の予測アルゴリズムの1つは、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日

最新のデータサイエンスやAIのトレンド、ツール、テクニックについて、LLMsからデータアナリティクス、機械学習から責任あるAIまで、詳細に掘り下げるために参加してください。

データの準備

まず、CRM製品データにアクセスして読み込む必要があります。私たちは、一部のお客様から収集された指標に closely resembles した合成データを作成しました。この合成データはこちらからダウンロードできます。

回帰モデリング:リソース利用の異常の検出

リソース利用の異常の検出には、回帰モデリングの手法を使用します。この例では、以前のリリースデータの取引数(カウント)と前のリリースデータの高い相関を持つ指標(累積アプリの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データについて、1時間ごとに粒度を揃えた応答データをフィットさせます。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スピーカーについて

ギータ・シャンカールは、データをビジネスの成功に活用することに特化したソフトウェアエンジニアです。コンピュータサイエンス、データサイエンス、機械学習、人工知能に関する専門知識を持ち、最新のデータドリブンイノベーションに精通しています。インド古典音楽のバックグラウンドを持つ彼女は、鋭い思考、即興性、多様な人々とのつながりの価値を学びました。ギータはこれらのスキルを活かして、複雑なデータを意味のあるインサイトに翻訳し、パフォーマンスと顧客体験を向上させています。

トゥリ・ニヴァスは、Salesforceのソフトウェアエンジニアリングアーキテクトであり、テスト自動化とモニタリングフレームワークの設計と実装に長年の経験を持っています。彼女の関心は、ソフトウェアテスト、クラウドコンピューティング、ビッグデータ分析、システムエンジニアリング、アーキテクチャなどにあります。トゥリはコンピュータサイエンスの博士号を持ち、頑健で障害に強いパフォーマンスエンジニアリングシステムの構築に焦点を当てたプロセスの構築に取り組んでいます。最近の専門分野は、マシンラーニングと製品のパフォーマンス問題と異常検出のためのデータ分析の構築です。

回帰モデリング:応答時間の異常検出

応答時間の異常を特定するためには、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スピーカーについて

ギータ・シャンカーは、データをビジネスの成功に活かすことに特化したソフトウェアエンジニアです。コンピュータサイエンス、データサイエンス、機械学習、人工知能の専門知識を持ち、最新のデータ駆動型イノベーションに精通しています。インド古典音楽の背景を持つ彼女は、鋭い思考、即興性、多様な人々とのつながりの大切さを学んでいます。ギータは、これらのスキルを活かして、複雑なデータを意味のある洞察に変え、パフォーマンスと顧客体験を向上させることに活かしています。

トゥリ・ニヴァスはSalesforceのソフトウェアエンジニアリングアーキテクトであり、テスト自動化およびモニタリングフレームワークの設計と実装に幅広い経験を持っています。彼女の関心はソフトウェアテスト、クラウドコンピューティング、ビッグデータ分析、システムエンジニアリング、アーキテクチャなどにあります。彼女はコンピュータサイエンスの博士号を保持しており、頑健で障害耐性のあるパフォーマンスエンジニアリングシステムの構築に焦点を当てたプロセスの設定に取り組んできました。最近は、マシンラーニングと製品のパフォーマンス問題と異常検出のためのデータ分析を行っています。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more