各製品の資料を入手。
詳細はこちら →データサイエンティストが開発したプログラミング不要の分析ツールnehan でSalesforce 商談データの勝率を予測する
はじめに
CData Japan技術ディレクターの桑島です。本記事では、nehanにSalesforce Sales Cloudの商談データを取り込み、各商談の勝率を予測する方法をご紹介します。Salesforce のデータをCData Sync でPostgreSQL に取り込み、そのデータをnehan に取り込んで分析します。
本記事の構成は以下の通りです。
nehan とは
nehanは、データサイエンティストが開発したプログラミング不要の分析ツールです。データの前処理から予測モデルの構築・運用、可視化・他システムへの連携までといったデータ分析にまつわる作業を一つのプラットフォームで行える特徴を持っています。nehanは、現在(2019/12時点)以下のデータタイプからデータをインポートすることができます。
- CSVアップロード
- PostgreSQL
- Google Bigquery
- Google スプレッドシート
- Amazon S3
- Amazon Athena
- Amazon Redshift
- Treasure Data
前提
本手順では以下のプロダクトを利用します。
- Salesforce Sales Cloud(開発者アカウントあり)
- CData Sync (30日間の評価版あり)
- PostgreSQL on RDS
- nehan (無料トライアルあり)
以下の手順では、Salesforce、および、nehanのアカウントを取得済みであること、RDSなどのnehanからアクセス可能なPostgreSQLデータベース環境を既に保有している前提での手順となります。CData Syncは今回ローカルのWindowsマシンに構築しましたが、Mac/Linuxで動作するJavaエディション、既にCDatsa SyncがセットアップされているAMIイメージもご利用いただけます。
手順
CData Sync
概要
本手順では Salesforce にある商談(Opportunity)のデータをPostgreSQLにSyncします。
なお、Salesforceの商談データは、商談名、取引先名、金額、フェーズ、勝敗、商談所有者(担当者)といった項目から構成されています。
CData Sync製品のインストール
最初にCData Sync をダウンロードします。こちらからダウンロードページを表示してください。
右上にダウンロードボタンがありますのでクリックします。
今回はWinowsマシンのため、左側のWindowsマーク配下の「DOWNLOAD NOW」をクリックします。
Eメールを入力し、ダウンロードボタンをクリックします。
そうしますと、 CDataSync.exe がダウンロードフォルダに入ってきますので、ダブルクリックしてインストールを開始します。
ライセンス契約書を確認後、次に進みます。
インストール先も支障がなければデフォルトのまま進みます。
デフォルトのまま次へ進みます。
デフォルトのまま次へ進みます。
CDataSync にログインする際のパスワードを設定します。今回は「password」で設定します。
ここまででインストールの準備が完了です。インストールボタンをクリックしてインストールを開始します。
以下の画面が表示されますと、インストールが完了となります。チェックボックスにチェックをつけたまま完了ボタンをクリックすることで、CDataSyncが起動されます。
起動するとWindowsのステータスバーにCData Sync のアイコンがこのように表示されます。
ライセンスのアクティベーション
CData Sync にログイン後、ヘッダーの情報タブをクリックします。今回は赤枠の「評価版をアクティベート」をクリックします。
名前・Eメール、ソフトウェア使用許諾契約書にチェックを入れ、「評価版をアクティベートする」をクリックします。
アクティベートが完了すると、赤枠のようにライセンスの種類、プロダクトキーに値がセットされます。なお、評価版は30日間まで無料でご利用いただけます。
Salesforce へのコネクションを作成
ヘッダーで「接続」をクリックし、以下の画面で Salesforce のアイコンをクリックします。
Salesfroce へのコネクションの設定画面が表示されるので、名前を任意の名称(例:Salesforce)に変更して、User、Password、SecurityTokenを設定して、「接続のテスト」ボタンをクリックします。上段に「接続に成功しました。」のメッセージが出たら成功です。「変更を保存」ボタンをクリックして作成したコネクション情報を保存してください。
- 名前:Salesforce
- フォーマット設定:プロパティリスト
- User:Salesforce のアカウント
- Password:Salesforceのパスワード
- Security Token:Salesforceより発行されたセキュリティトークン
PostgreSQL へのコネクションを作成
Salesforce の接続設定と同じように接続設定画面を表示させ、同期先タブをクリック後、PostgreSQLを選択します。
PostgreSQLへのコネクションの設定画面が表示されるので、以下の内容で入力してください。入力後、「接続のテスト」をクリックし接続が成功しましたら、右上の「変更を保存」をクリックして接続情報を保存します。
- 名前:Postgres
- フォーマット設定:プロパティリスト
- Server : データベースのIPアドレス、もしくは、マシン名
- Port : 接続ポート(PostgreSQLデフォルトは、5432)
- Database : データベース名
- User : ユーザID
- Password : ユーザのパスワード
ジョブの作成
ヘッダーの「ジョブ」を選択後、右側にあります「ジョブを追加」をクリックします。
以下の画面が表示されますので、ジョブ名、ソース、同期先を入力したら「作成」をクリックします。
- ジョブ名:SalesforceToPostgreSQL
- ソース:Salesforceを選択
- 同期先:PostgreSQLを選択
次に、Salesforce内のテーブル(オブジェクト)を選択するために「+テーブルを追加」をクリックします。
Salesforce内のテーブル(オブジェクト)リストが表示されるので、今回は、商談であるOpportunityを選択して、「+選択したテーブルを追加」をクリックします。
テーブルとクエリに自動的にOpportunityテーブルを同期する内容が設定されました。ここでいう"テーブル" と書いてある箇所は同期先に作成するテーブル名(ファイル名)となります。"クエリ" はどういう内容で Salesforce からデータを抽出するかという意味になります。REPLICATE とは Opportunity テーブル内容をそのまま同期することを意味しています。ジョブ内容の確認が終わりましたら、右上にある「変更を保存」をクリックし、ジョブを保存します。以上でジョブの作成が完了です。
ジョブの実行
それでは、アドホックにSalesforceのテーブルのSyncを実行してみます。上記手順で作成したジョブのチェックボックスをチェックし、実行ボタンをクリックします。しばらくたつと、上部に薄緑のメッセージボックスで「ジョブ[ジョブ名] は正常に完了しました。Records affected: XX ・・・」といったメッセージが表示されれば成功です。
PostgreSQLに同期した商談(Opportunity)データを確認
PostgreSQLのデータベースに正しくデータが同期されたかを確認するため、PgAdminなどのツールでPostgreSQLのデータを参照します。データベース内にopportunity テーブルが作成されてデータが格納されていればPostgreSQLへのsyncは成功です。
nehan
概要
それでは、PostgreSQLにSyncしたSalesforceの商談(Opportunity)データを利用して、nehan で作成した予測モデルで勝率を予測してみましょう。
SQLビルダーを利用したデータソースの作成
左側のメニューより「SQLビルダー」を選択して、右上の「ビルダープロジェクトの新規作成」をクリックします。
ビルダープロジェクトの作成準備ウィザードにてPostgreSQLを選択して次へ進みます。
PostgreSQLへの接続情報をセットします。
任意のビルダープロジェクト名(本例では、SalesforceOpportunity)を付与して作成します。
SQLビルダー画面が起動するので、左側の一覧から「テーブルを選択する」をクリックして「Opportunity」テーブルを選択して「テーブルを読み込む」ボタンをクリックします。左下の「処理後のデータ」にOpportunityテーブルの内容がプレビューされます。
「データソースに登録する」の処理をクリックして、作成したSQLを元にしたデータソース を登録します。登録すると検証が実行され、正しく登録されると「データソースに登録」処理も緑になります。
作成したデータソースは左側のメニューの「データソース 」から確認できます。
予測モデルを作成
作成したデータソース を使用して分析プロジェクトを作成していきます。左側メニューの「データを分析する」を選択して右上の「分析プロジェクトの新規作成」をクリックします。任意のプロジェクト名(本例では「商談予測」)を付与して「作成して開始」をクリックします。
分析プロジェクトの画面が立ち上がります。左側のメニューから「分析するデータを配置する」を選択します。
データソース の選択にて先の手順でSQLビルダーで作成したデータソース を選択します。
「データソースの読み込み」エリアにPostgreSQLに発行するSQLが表示されます。正しく読み込まれると左下に読み込んだデータのプレビューが表示されます。
今回教師データには商談がクローズ済みのレコードのみを対象とするため「条件で行をフィルタ」を選択して「#IsClosed = 1」の条件で絞り込みます。
上記抽出結果を入力として説明変数として利用する項目からダミー変数を作成します。今回は、「Type(種類)」「LeadSource(主キャンペーンソース)」「Opportunity_Source_c(商談ソース)」を選択しました。ダミー変数が作成されると「項目名値」の項目が追加されて「0,1」の値がセットされます。
データの前処理ができたので、「機械学習」>「教師あり学習」内の「Randam Forest」を使用して予測モデルを作成します。予測値の種類には「連続値」、目的変数には今回はクローズした商談が「IsWon(勝敗)」を選択します。説明変数には、上記、ダミー変数で追加された「Type」「LeadSource」「Opportunity_Source_」から始まる項目を選択します。この設定で「実行」すると右下の処理後のデータに各説明変数毎の影響度が「#importance」列に表示されます。本例だと「Opportunity_source__c_Marketing」が最も「IsWon(勝敗)」に影響を及ぼしていることが分かります。
モデルで予測値を算出
それでは、この予測モデルを使って、まだクローズ前の商談データの勝率を予測してみましょう。まず、教師データと同じデータソースをもとに「条件で行をフィルタ」を利用して「#IsClosed = 0(クローズ前)」で絞り込みます。実行すると右下の処理後のデータには「#IsClosed = 0(クローズ前)」のデータのみが表示されます。
教師データと同様に「Type(種類)」「LeadSource(主キャンペーンソース)」「Opportunity_Source__c(商談ソース)」を選択してダミー変数を作成します。
「機械学習」>「教師あり学習による予測」>「モデルで予測値算出」を選択して教師データの「RandamForest」と予測データの「ダミー変数の作成」からフローをつなぎます。実行すると右下の処理後のデータの末尾列に「#predict」列が追加されます。本カラムに、各商談毎の勝率が格納されます。
予測結果をもとに「列選択」を選択して「Id」と「Predict」列のみを抽出します。
データプレビューの画面でみてみると本画面の例では1行目の商談の勝率は「0.861154」=「86.1%」という予測結果がでました。
予測値の分布を把握するためにビジュアライズからヒストグラムを作成してみます。
タイプに「ヒストグラム」、x軸に「predict」を選択することで勝率の分布を可視化することができました。
まとめ
本記事では、Salesforce内の商談データをもとにnehan で勝率を予測してみました。実際のユースケースとしては、この勝率データをもとに、より精度の高い収益予想や、商談のアプローチの見直しに活用出来ると思います。今回は、CData Syncを用いてnehanがサポートしているPostgreSQLにデータを取り込むことでデータを連携することができました。CData Syncは、Salesforce以外にも100を超えるデータソースに対応しているので同様の方式で、Salesforce以外のCRMやMA、ERPなど様々なデータをnehanに取り込み分析することが可能となります。
nehan および、CData Syncは評価版環境を準備しておりますので是非お試しください。