ナレッジ

受注確度スコアリングをデータで設計する|ロジスティック回帰分析の実装手順

受注確度スコアリングをデータで設計する|ロジスティック回帰分析の実装手順

ツールの設定よりも、「何をどう設計するか」で成果が変わります

HubSpot・Account Engagement・Marketoに精通した担当者が、 ツールの設定支援だけでなく、リード育成シナリオやスコアリング設計まで一貫してサポートします。 まずは現状のツール活用状況をお聞かせください。

目次

ロジスティック回帰分析の必要性

相関分析では「どの行動が商談化と関係しているか」を1変数ずつ確認できます。ただし実際のリードは、複数の行動を同時に取っています。「料金ページも見ていて、資料もDLしていて、開封回数も多い」というリードの商談化確率を、変数を組み合わせて予測するには、相関分析では不十分です。

ロジスティック回帰分析は、複数の変数を同時に考慮して「このリードが商談化する確率は何%か」を数値で予測できます。その結果をスコアに変換することで、感覚ではなくデータに基づいたスコアリング設計が可能になります。

必要なツールとアドインの準備

ロジスティック回帰分析はExcelの標準機能では実行できません。以下のいずれかを準備してください。

アドイン・ライブラリのインストールが必要です

以下で紹介するExcel用アドインまたはPythonライブラリは、使用前にインストールが必要です。社内のIT管理ポリシーによってはインストールに申請が必要な場合があります。事前に確認してから作業を進めてください。

選択肢① Excel用アドイン「XLSTAT」

ExcelにロジスティックSS回帰分析機能を追加する商用アドインです。Excelの操作感のまま分析を実行できるため、Pythonに不慣れな方に向いています。

項目内容
提供元Addinsoft社(フランス)
インストール方法https://www.xlstat.com からダウンロードしてインストール
料金有料(年間サブスクリプション)。30日間無料トライアルあり
動作環境Excel 2010以降・Windows/Mac対応
インストール後の場所Excelのリボンに「XLSTAT」タブが追加される

選択肢② Python(scikit-learn)

Pythonの機械学習ライブラリ「scikit-learn」を使う方法です。無料で使え、より大規模なデータや高度なモデル評価にも対応できます。コードの記述が必要ですが、この記事のサンプルコードをそのまま使えば実行できます。

項目内容
必要なインストールPython本体 + pandas + scikit-learn + statsmodels
インストールコマンドpip install pandas scikit-learn statsmodels
推奨環境Google Colab(Googleアカウントがあれば無料・インストール不要)または Jupyter Notebook
Google Colabの開始方法https://colab.research.google.com にアクセスして「ノートブックを新規作成」

以降のステップはPythonを前提として解説します。XLSTATを使う場合も分析の考え方は同じですが、操作手順はXLSTATのドキュメントを参照してください。

Step.1:分析に使うデータを準備する

ロジスティック回帰分析には、以下の2種類のデータが必要です。

データの種類具体的な内容・取得元
目的変数(Yに当たるもの)商談化したか否か(1/0)または受注したか否か(1/0)。SFA/CRMから取得する。まず「商談化」を目的変数にして始めるのが実務的
説明変数(Xに当たるもの)MAの行動データ(閲覧ページ数・開封回数・DL数など)+属性データ(業種・企業規模・役職など)。相関分析で事前に重要そうな変数を絞り込んでおくと精度が上がる

データはCSVファイルで書き出すと扱いやすいです。以下のような形式で準備します。

lead_idpage_viewsemail_opensdl_countis_managercompany_size_largeconverted
L0011283111
L002320000
L00318114111
L004531010
L0051593101

カテゴリ変数のダミー変換について

「業種」「役職」などの文字列データは、そのままでは分析に使えません。「マネージャー以上か否か(1/0)」「大企業か否か(1/0)」のように、2値のフラグに変換(ダミー変数化)してから使います。Pythonのpandas.get_dummies()関数で自動変換できます。

必要なサンプル数について

ロジスティック回帰分析では、説明変数1つに対して最低10〜20件の「イベント(商談化)」が必要とされています。説明変数を5つ使う場合、商談化したリードが50〜100件以上必要です。データが少ない場合は変数の数を絞って分析してください。

Step.2:Pythonでモデルを構築する

Google ColabまたはJupyter Notebookで以下のコードを実行します。コード中のコメント(#)に各行の説明を記載しています。

ライブラリのインポートとデータ読み込み

# 必要なライブラリをインポート

import pandas as pd

import numpy as np

from sklearn.linear_model import LogisticRegression

from sklearn.model_selection import train_test_split

from sklearn.metrics import classification_report, roc_auc_score

import statsmodels.api as sm

 

# CSVファイルを読み込む(ファイルパスは環境に合わせて変更)

df = pd.read_csv('lead_data.csv')

 

# データの先頭5行を確認

print(df.head())

print(f'サンプル数: {len(df)}')

print(f'商談化数: {df["converted"].sum()}')

説明変数と目的変数を設定する

# 説明変数(X)の列名を指定

feature_cols = ['page_views', 'email_opens', 'dl_count',

                'is_manager', 'company_size_large']

 

X = df[feature_cols]

y = df['converted'] # 目的変数(商談化フラグ)

 

# 学習データとテストデータに分割(8:2)

# テストデータでモデルの精度を検証するために分割する

X_train, X_test, y_train, y_test = train_test_split(

    X, y, test_size=0.2, random_state=42, stratify=y

)

print(f'学習データ: {len(X_train)}件 / テストデータ: {len(X_test)}件')

オッズ比を確認する(statsmodelsを使用)

スコアリングの重み設定に使うオッズ比は、statsmodelsライブラリを使うと確認できます。

# 定数項を追加(statsmodelsの仕様)

X_train_sm = sm.add_constant(X_train)

 

# ロジスティック回帰モデルを構築

model_sm = sm.Logit(y_train, X_train_sm).fit()

 

# 結果サマリを表示

print(model_sm.summary())

 

# オッズ比を計算(係数をeの指数で変換)

odds_ratio = np.exp(model_sm.params)

print('\n=== オッズ比 ===')

print(odds_ratio)

オッズ比の読み方

出力例:
page_views=2.31
→ 閲覧ページ数が1増えると商談化確率が2.31倍になる
email_opens=1.85
→ 開封回数が1増えると商談化確率が1.85倍になる
dl_count=3.12
→ 資料DLが1件増えると商談化確率が3.12倍になる
is_manager=4.20
→ マネージャー以上だと商談化確率が4.20倍になる
company_size_large=2.80
→ 大企業だと商談化確率が2.80倍になる

オッズ比が1を超えるほど商談化確率を高める要因、1を下回るほど商談化確率を下げる要因です。p値(P>|z|)が0.05以上の変数は統計的に有意でない可能性があるため、除外を検討します。

Step.3:モデルの予測精度を評価する

構築したモデルが実際に使えるかどうかを、テストデータで評価します。

# scikit-learnでモデルを学習(予測確率の出力に使う)

model = LogisticRegression(random_state=42)

model.fit(X_train, y_train)

 

# テストデータで予測

y_pred = model.predict(X_test)

y_prob = model.predict_proba(X_test)[:, 1] # 商談化確率

 

# 精度評価レポート

print('=== 分類レポート ===')

print(classification_report(y_test, y_pred))

 

# AUC-ROCスコア(モデルの識別能力)

auc = roc_auc_score(y_test, y_prob)

print(f'\nAUC-ROC: {auc:.3f}')

主要な評価指標の読み方

指標意味目安
Precision(適合率)「商談化する」と予測したリードのうち、実際に商談化した割合0.7以上あれば実用的
Recall(再現率)実際に商談化したリードのうち、「商談化する」と正しく予測できた割合0.6以上あれば実用的
AUC-ROCモデルが商談化リードと非商談化リードを正しく区別できているかを示す(0.5=ランダム、1.0=完璧)0.75以上を目安にする

AUCが0.75を下回る場合

サンプル数が不足しているか、説明変数の選択が不適切な可能性があります。相関分析に戻って変数を見直すか、データ量を増やしてから再実行してください。0.6台でも、感覚ベースのスコアリングよりは根拠のある設計ができますが、モデルの限界を明示した上で使うことを推奨します。

Step.4:予測確率をMAのスコアに変換する

ロジスティック回帰モデルが出力するのは「0〜1の商談化確率」です。これをMAのスコア(例:0〜100点)に変換して実装します。

# 全リードの商談化確率を予測

df['conversion_prob'] = model.predict_proba(X)[:, 1]

 

# 確率を0〜100のスコアに変換

df['score'] = (df['conversion_prob'] * 100).round(0).astype(int)

 

# スコア帯ごとのリード数と実際の商談化率を確認

df['score_band'] = pd.cut(df['score'],

    bins=[0, 20, 40, 60, 80, 100],

    labels=['0-20', '21-40', '41-60', '61-80', '81-100'])

 

result = df.groupby('score_band')['converted'].agg(['count', 'mean'])

result.columns = ['リード数', '実際の商談化率']

result['実際の商談化率'] = (result['実際の商談化率'] * 100).round(1)

print(result)

出力イメージはこのようになります。

スコア帯リード数実際の商談化率
81〜100点48件78.4%
61〜80点112件52.1%
41〜60点203件28.3%
21〜40点318件9.7%
0〜20点219件2.3%

このテーブルをMAのスコアとMQL条件の設定に使います。たとえば「スコア61点以上のリードを営業に渡す(MQL)」と設定することで、商談化率52%以上のリードだけを渡せるという根拠が持てます。

オッズ比の結果をそのままMAのスコア設定に反映することも可能です。たとえば「資料DL数のオッズ比が3.12」であれば、資料DL1件あたり10〜15点を付与するなど、比率を維持した形でスコアに変換します。

Step.5:モデルを定期的に更新する

一度構築したモデルは、時間が経つにつれて精度が落ちます。市場環境や顧客の行動パターンが変わるためです。以下のサイクルで更新を継続することが重要です。

タイミング実施内容
四半期ごとAUC-ROCを再計算し、0.05以上低下していれば再学習のタイミング。スコア帯ごとの実際の商談化率もあわせて確認する
半期〜年次最新の商談・受注データを加えてモデルを再学習する。新しい行動変数(新しいコンテンツのDLなど)を追加することも検討する
組織変化のタイミングターゲット業種や企業規模の方針変更があった場合は、その時点でモデルを見直す。古いデータが新しい方針と合わなくなる場合がある

まとめ

ロジスティック回帰分析を使うことで、MAに蓄積された行動データと属性データから「商談化確率」を数値で予測し、スコアリングの重み付けに根拠を持たせることができます。

実装にはExcelの分析ツールアドイン(XLSTAT)またはPython(scikit-learn・statsmodels)が必要です。Pythonはこの記事のサンプルコードをそのまま使えば実行できます。初めて試す場合はGoogle Colabを使うと環境構築なしで始められます。

分析手法の位置づけを改めて整理すると、「相関分析で重要変数を探索する→ロジスティック回帰で確率モデルを構築する→カイ二乗検定でA/Bテストの結果を検証する」という3つが組み合わさることで、MAのデータ活用の精度が大きく上がります。

ツールの設定よりも、「何をどう設計するか」で成果が変わります

HubSpot・Account Engagement・Marketoに精通した担当者が、 ツールの設定支援だけでなく、リード育成シナリオやスコアリング設計まで一貫してサポートします。 まずは現状のツール活用状況をお聞かせください。

株式会社Sells up 代表取締役
武田 大
株式会社AOKIにて接客業を、株式会社リクルートライフスタイル(現:株式会社リクルート)にて法人営業を経験した後、株式会社ライトアップでBtoBマーケティングを担当。その後、デジタルマーケティングエージェンシーにてBtoBマーケティングの戦略設計/施策実行支援、インサイドセールスをはじめとしたセールスやカスタマーサクセスとの連携を通じたマーケティング施策への転換といった支援を行い、2023年に株式会社Sells upを設立。HubSpot・Account Engagement・Marketoの3ツールにわたるMA選定・導入・活用支援を、企業規模や業界を問わず80社以上に提供。ツール選定フェーズから要件定義・初期設定・SFA/CRM連携設計・シナリオ・スコアリング設計まで一貫して担い、導入後に成果を出すための設計を重視した支援を行ってきた実績を持つ。Account Engagement SpecialistおよびTableau Desktop SpecialistのSalesforce認定資格を保有。