論文一覧に戻る 📚 用語集トップ 🗺 概念マップ
📚 用語解説
📚 用語解説
CRISP-DM
CRoss Industry Standard Process for Data Mining
リテラシー

🔖 キーワード索引

このページ内のセクションへ素早く飛べます(クリックで該当箇所へジャンプ):

💡 30秒結論📍 文脈🎨 直感📐 数式・定義🔬 数式を言葉で読み解く🧮 SSDSE実値計算🐍 Python実装⚠️ 落とし穴🌐 関連手法🔗 関連用語📚 関連グループ❓ FAQ

CRISP-DM (CRoss Industry Standard Process for Data Mining)」は 1996 年策定の業界標準データ分析プロセス。 業務理解 → データ理解 → データ準備 → モデリング → 評価 → 展開 の 6 工程と工程間の反復ループを定義する。 本ページでは各工程の成果物・完了条件・反復パターン・PPDAC との対応・現代的拡張 (MLOps) を順に整理する。

業務理解 Business Understandingデータ理解 Data Understandingデータ準備 Data Preparationモデリング Modeling評価 Evaluation展開 Deployment反復ループPPDAC との対応MLOps 拡張

これらのキーワードは「業務理解で問いを固める → データで検証可能性を確認 → モデルで答えを出す → 運用で価値を実現」という CRISP-DM の本質的フローを構成する。

💡 30秒で分かる結論 — CRISP-DM

🍰 まずはやさしく

データ分析の共通ルールのようなものです。

迷わずに分析を進めるために使います。

部活の練習メニューを決める時に似ています。

まずは全体の流れと注意点を確認しましょう。

💡 30秒で分かる結論

業界横断的なデータマイニング標準プロセス

📍 あなたが今見ているもの

🍰 まずはやさしく

分析の進み具合を示す地図のようなものです。

今の作業がどこにあるかを管理するために使います。

スマホアプリの開発計画表に似ています。

このページで解説する構成について説明します。

Kaggle や実務プロジェクトの管理表で「Phase: Data Understanding」のように出てくる。 IBM が 1999 年に提唱し、 今もデータ分析プロセスのデファクト標準として広く使われる。

本ページは CRISP-DM(Cross Industry Standard Process for Data Mining) を、 ジャストインタイム型データサイエンス教育の文脈で 12 のセクションに分けて解説します。 上から順に読まなくても、 「🔖 キーワード索引」から必要箇所だけ拾い読みすることもできます。

🎨 直感で掴む — CRISP-DMとは何者か

🍰 まずはやさしく

分析を 6 つのステップに分けた枠組みです。

正しい答えにたどり着くために使います。

テスト勉強の計画を立てる時に似ています。

具体的にどのような流れで進むかを見ていきましょう。

CRISP-DM は「データ分析プロジェクトを 業務理解 → データ理解 → 準備 → モデリング → 評価 → 展開 の 6 フェーズに分け、 各フェーズを 循環させて回す枠組み」。 たとえば SSDSE-B-2026 で「人口減少県の経済指標を予測したい」なら、 ①目的を業務側と握り → ②データの粒度と欠損を確認 → ③特徴量を作り → ④モデル学習 → ⑤RMSE / 業務 KPI を評価 → ⑥本番化と監視、 という流れになる。 評価で問題が見つかれば 業務理解に戻る往復構造が肝。

場面CRISP-DMが登場する例何が分かるか
論文の Methods 節「CRISP-DMを用いて分析した」手法の前提と限界が文脈に乗る
実務レポート「CRISP-DMの観点で評価」意思決定の根拠が明確化
教育・学習SSDSE-B-2026 を題材に演習実データで本物の感覚が得られる
政策・社会プロセス 分野で標準的に登場EBPM や DX の議論に直結

本ページではこのあと、 数式(または定義)・SSDSE 実データ計算・Python実装・落とし穴 を順番に追いかけて、 用語を「使える知識」にしていきます。

🎨 直感で掴む

データ分析プロジェクトを業務理解 → データ理解 → データ準備 → モデリング → 評価 → 展開の 6 フェーズに区切り、 隣接フェーズの間を行き来して反復的に精度を上げる「分析の地図」。 SSDSE-B-2026 で「人口減と税収の関係」を解くなら、 業務理解で「税収予測なのか政策提案なのか」を定義、 データ理解で 47 都道府県 × 9 年の構造を把握、 と進める。

以下では、 6 フェーズ (Business / Data / Preparation / Modeling / Evaluation / Deployment) ごとの成果物・完了条件・後戻りトリガを整理し、 PPDAC との 1 対 1 対応や、 MLOps 時代の継続学習・モニタリングを組み込んだ現代的拡張 (CRISP-ML(Q) など)、 そして「業務理解を飛ばしてモデリングから入ると後半で全部やり直しになる」典型的失敗パターンまで順に辿ります。

🎮 触って掴む — CRISP-DM 6 フェーズの「反復と行き来」

円環の各フェーズをクリック / タップ、 または「次フェーズ ▶」で 1 周する。 右側に架空プロジェクト「みどり市・移動図書館の巡回最適化(※実在しない教材用の例)」での具体作業・成果物・所要時間の目安が出る。 「↩ 後戻り」を押すと データ理解 → 業務理解評価 → 業務理解 のような逆向き矢印を体感できる。 CRISP-DM は一直線ではなく行き来する反復プロセスだ、 という点を手で確かめてほしい。

⏳ 所要時間の目安 — データ準備が最大

実プロジェクトではデータ準備が全工数の 50〜80%を占めるのが定番 (Anaconda 調査等)。 ここでは目安として下の配分で示す。 「モデリングが本体」という直感は錯覚で、 準備と評価・展開に時間を取れないと現場で使われない。

🔄 PPDAC との対応・違い

同じ「反復サイクル」でも、 PPDACProblem(問題定義)から始まる統計教育向け 5 段階、 CRISP-DM はBusiness(業務価値)から始まり Deployment(運用)まで含む産業向け 6 段階。 最大の違いは、 PPDAC が Conclusion で閉じるのに対し、 CRISP-DM は展開・監視・再学習(MLOps)まで射程に入れる点。

CRISP-DMおおよそ対応する PPDACずれ / 注意
業務理解ProblemCRISP-DM は「業務価値・KPI」寄り、 PPDAC は「問い」寄り
データ理解Plan + Data(前半)CRISP-DM は既存データの吟味、 PPDAC は取得計画も含む
データ準備Data(整形)ここが最大工数。 PPDAC では軽く扱われがち
モデリングAnalysisほぼ一致
評価Analysis + ConclusionCRISP-DM は「業務目標を満たすか」まで問う
展開(対応なし)PPDAC には運用フェーズが無い ← 最大の差

📐 数式・定義

🍰 まずはやさしく

分析の仕組みをまとめた設計図のようなものです。

作業の順番や戻るタイミングを決めるために使います。

料理のレシピで手順を確認する時に似ています。

ステップの間をどう移動するかを詳しく解説します。

CRISP-DM は概念的フレームワークであり、 厳密な計算式というよりは「6 フェーズと反復ループ」の構造記述。 ジャストインタイム教育として 2 つの計量化を入れておく。

フェーズ遷移行列: $P_{ij}$ をフェーズ $i$ から $j$ へ進む確率とすると、 CRISP-DM の標準パスは

$$ P = \begin{pmatrix} 0 & 1 & 0 & 0 & 0 & 0 \\ \;\!p & 0 & 1-p & 0 & 0 & 0 \\ 0 & q & 0 & 1-q & 0 & 0 \\ 0 & 0 & r & 0 & 1-r & 0 \\ 0 & 0 & 0 & s & 0 & 1-s \\ 0 & 0 & 0 & 0 & 0 & 1 \end{pmatrix} $$

ここで $p, q, r, s$ は各フェーズで「前段に戻る」確率 (典型値 0.1〜0.4)。 逆方向遷移こそが反復ループの本体。

反復コスト関数: $T$ 回反復したときの総コストを

$$ C(T) = \sum_{t=1}^{T} c_t \cdot \alpha^{t-1} $$

で表す ($c_t$ は $t$ 回目の作業量、 $\alpha \in (0,1)$ は学習効果による作業圧縮率)。 反復ごとに既存知識を再利用できるので $\alpha < 1$ となる。 具体例は次セクションで言葉に変換する。

📐 定義

業界横断的なデータマイニング標準プロセス

英語名 CRoss Industry Standard Process for Data Mining

🎯 いつ・どこで使うか

📋 前提条件・適用範囲

この用語を理解・使用するときは、 次のような前提を意識してください:

📐 反復 (iteration) の数式モデル — CRISP-DM はなぜ「サイクル」と呼ばれるか

CRISP-DM は線形プロセスではなく、 反復プロセスです。 フェーズ間の戻りを数式で表現すると次のようになります。

$$ \text{Project}(t+1) = \text{Project}(t) + \Delta(\text{Evaluation}(t), \text{Feedback}(t)) $$

ここで $t$ は反復回数、 $\Delta$ は評価結果と業務フィードバックに基づく改善ベクトル。 重要なのは 「1 回目で正解にたどり着く必要はない」こと。 CRISP-DM は本質的に「失敗を前提とした学習プロセス」です。

数式を言葉で読み解く

$\text{Project}(t)$ は「$t$ 回目反復時点でのプロジェクト状態」、 $\Delta$ は「評価と業務フィードバックから生まれる改善差分」。 評価フェーズで「精度不足」と判定されればモデリングに戻り、 「業務問題の定義がずれていた」と判定されれば業務理解まで戻る。 戻る先によって学習量が異なるため、 反復にかかるコストが変わってきます。

💡 実務のコツ: 初回反復は「最小限の完成版」(MVP) を作って、 とにかく 6 フェーズを一周する。 その後の反復で精度を高める。 完璧なフェーズ 1 を目指して動けなくなる「分析麻痺」を避ける戦略です。

🔬 数式・定義を「言葉」で読み解く

先ほどの数式・定義に出てきた記号や概念を、 一つずつ確認します。 とくに CRISP-DM の文脈で意味を取り違えやすい部分を強調します。

記号意味と注意点
$P_{ij}$フェーズ $i$ から $j$ へ遷移する確率。 行和 = 1
$p, q, r, s$各フェーズで前段に戻る確率。 評価フェーズの $s$ が最大になりがち (失敗発覚率)
$T$サイクル反復回数。 実プロジェクトでは 3〜8 回が典型
$c_t$$t$ 回目反復で消費する工数 (人日・人月)
$\alpha$学習効果による作業圧縮率 $\alpha \in (0,1)$。 既存資産の再利用度
$C(T)$$T$ 回反復したときの累積コスト。 投資対効果判定の基準

CRISP-DM の本質は「逆向き矢印」: 評価フェーズで業務理解に戻る $s$、 モデリングでデータ準備に戻る $r$ などのループが、 SEMMA や Waterfall との最大の違い。 これら逆行確率を計測することで、 プロジェクト初期に「どのフェーズの定義が弱いか」を可視化できる。

🧮 SSDSE-B 実値で計算してみる

SSDSE-B-2026(47都道府県・2023 年・125 項目)を題材に、 CRISP-DM に関係する変数を実値で確認します。 とくに東京・大阪・沖縄・秋田 など特徴ある県を比較すると、 用語の重みが体感できます。

都道府県総人口(千人)高齢化率(%)TFR粗出生率(‰)
東京14,08622.80.996.13
大阪8,76327.71.196.31
沖縄1,46823.81.608.55
秋田91439.11.103.95
全国平均124,35329.11.295.85

これらの値を CRISP-DM の観点で読み解くと、 都道府県間の格差・特徴・関係性が浮かび上がります。 具体的な計算手順は次の「🐍 Python 実装」セクションで実演します。

🧮 数式に値を入れて手で計算する: CRISP-DM 6 フェーズの工数比

CRISP-DM 標準 6 フェーズ (業務理解 / データ理解 / データ準備 / モデリング / 評価 / 展開) の経験則による工数比 (10:15:55:10:5:5) を 200 人日案件に当てはめてフェーズ別工数と進捗率を計算する。

Step 1: 各フェーズの工数 [人日]

フェーズ工数構成比
ビジネス理解50.083
データ理解100.167
データ準備300.500
モデリング80.133
評価50.083
展開20.033

Step 2: 集計

合計 = 5+10+30+8+5+2 = 60 人日 データ準備比率 = 30/60 = 0.500 (50%) → 経験則と一致

🐍 Python で再現

1
2
3
4
5
6
import numpy as np
effort = np.array([5, 10, 30, 8, 5, 2])
ratio = effort / effort.sum()
print(f"構成比: {ratio.round(3)}")
print(f"合計: {effort.sum()} 人日")
print(f"データ準備: {ratio[2]*100}%")

📤 実行結果

構成比: [0.083 0.167 0.5 0.133 0.083 0.033] 合計: 60 人日 データ準備: 50.0%

💬 手計算 (Step 2) 50% と Python 出力が完全一致。

🐍 Python 実装

以下は CRISP-DM を SSDSE-B-2026 で扱うときの典型コード。 encoding='cp932' は政府統計の Shift-JIS 対応。 skiprows=1 は日本語ヘッダ行をスキップする定石。

① 基本パターン(読み込み・確認・主要列抽出)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1303(65歳以上人口) I5102(一般診療所数) 北海道 1,681,000 3,403 東京都 3,205,000 14,894 沖縄県 350,000 928 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# CRISP-DM の 6 フェーズ実装テンプレ
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# Phase 1: Business Understanding(ビジネス理解)
# 例: 47都道府県の高齢化と医療費の関係を理解したい
GOAL = '高齢化率が医療費に与える影響を定量化'

# Phase 2: Data Understanding(データ理解)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
print(df.describe())
sns.pairplot(df[['A1303','I5102']])  # 高齢化率 × 一般診療所数 等

# Phase 3: Data Preparation(前処理)
df = df.dropna(subset=['A1303','I5102'])

# Phase 4: Modeling
from sklearn.linear_model import LinearRegression
X, y = df[['A1303']], df['I5102']
model = LinearRegression().fit(X, y)
print('傾き:', model.coef_, '切片:', model.intercept_)

# Phase 5: Evaluation
from sklearn.metrics import r2_score
print('R²:', r2_score(y, model.predict(X)))

# Phase 6: Deployment
import joblib
joblib.dump(model, 'model.pkl')
📤 実行例(実測) SSDSE-B-2026 A1101 ... L322109 L322110 count 564.000000 5.640000e+02 ... 564.000000 564.000000 mean 2017.500000 2.690688e+06 ... 26931.026596 59784.718085 std 3.455117 2.730951e+06 ... 4219.487086 8813.812956 min 2012.000000 5.370000e+05 ... 14661.000000 35658.000000 25% 2014.750000 1.082250e+06 ... 24200.750000 53794.500000 50% 2017.500000 1.620000e+06 ... 26760.000000 59074.000000 75% 2020.250000 2.784926e+06 ... 29426.500000 65458.500000 max 2023.000000 1.408600e+07 ... 40393.000000 97700.000000 [8 rows x 110 columns] 傾き: [0.00349475] 切片: -392.35674398725814 R²: 0.9124116859893355

② 可視化テンプレ(matplotlib / seaborn)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1303(65歳以上人口) 北海道 5,092,000 1,681,000 東京都 14,086,000 3,205,000 沖縄県 1,468,000 350,000 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# CRISP-DM の探索的データ分析(EDA)
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)

# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

# 主要変数を取り出して名前を分かりやすく
df['総人口'] = df['総人口']
df['65歳以上'] = df['65歳以上人口']
df['高齢化率']  = df['65歳以上'] / df['総人口'] * 100
df['TFR']      = df.iloc[:, 21]

# ヒストグラム
fig, axes = plt.subplots(1, 2, figsize=(12, 4))
sns.histplot(df['高齢化率'], kde=True, ax=axes[0])
axes[0].set_title('高齢化率の分布(47都道府県)')
sns.histplot(df['TFR'], kde=True, ax=axes[1])
axes[1].set_title('TFRの分布')
plt.tight_layout()
plt.savefig('eda_distribution.png', dpi=120)

③ 前処理:欠損・外れ値・型変換

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 SSDSE-B-2026(年度) Prefecture(都道府県) 北海道 2,023 北海道 東京都 2,023 東京都 沖縄県 2,023 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import pandas as pd
import numpy as np

# CRISP-DM に関わる前処理の典型パターン
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)

# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

# ① 欠損値の確認
print('欠損数:')
print(df.isna().sum().sort_values(ascending=False).head(10))

# ② 数値変換(カンマ・%除去 など)
def to_num(s):
    if isinstance(s, str):
        return float(s.replace(',', '').replace('%', ''))
    return s
_num_cols = [c for c in df.columns
             if c not in ('年度', '地域コード', '都道府県', 'Code', 'Prefecture',
                          'SSDSE-B-2026')]
df[_num_cols] = df[_num_cols].apply(lambda col: col.map(to_num))

# ③ 外れ値検出(IQR)
# 地域コードや都道府県名は大小比較できないので、数値の列だけで判定する
_num = df.select_dtypes(include='number')
q1 = _num.quantile(0.25)
q3 = _num.quantile(0.75)
iqr = q3 - q1
outlier_mask = ((_num < q1 - 1.5*iqr) | (_num > q3 + 1.5*iqr)).any(axis=1)
print('外れ値を含む行数:', outlier_mask.sum())
📤 実行例(実測) 欠損数: 年度 0 地域コード 0 着工新設住宅戸数 0 外国人延べ宿泊者数 0 延べ宿泊者数 0 一般旅券発行件数 0 就職件数(一般) 0 充足数(一般) 0 月間有効求人数(一般) 0 月間有効求職者数(一般) 0 dtype: int64 外れ値を含む行数: 239

④ 検定・推定の最小例(scipy.stats)

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1303(65歳以上人口) A1101(総人口) Prefecture(都道府県) 北海道 1,681,000 5,092,000 北海道 東京都 3,205,000 14,086,000 東京都 沖縄県 350,000 1,468,000 沖縄県 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import pandas as pd
from scipy import stats

# CRISP-DM 文脈での基本的な仮説検定
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', header=1)
# 見出しの下に地域コード以外の行が混ざるので、47 都道府県だけ残して数値に直す
df = df[df['地域コード'].astype(str).str.match(r'^R\d{5}$', na=False)].copy()
for _c in df.columns[3:]:
    df[_c] = pd.to_numeric(df[_c], errors='coerce')

df['aging']  = df['65歳以上人口'] / df['総人口'] * 100
df['region'] = df['都道府県'].apply(lambda p: '東日本' if p in ['北海道','青森県','岩手県','宮城県','秋田県','山形県','福島県','茨城県','栃木県','群馬県','埼玉県','千葉県','東京都','神奈川県','新潟県','富山県','石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県'] else '西日本')

east = df.loc[df['region']=='東日本', 'aging']
west = df.loc[df['region']=='西日本', 'aging']

t, p = stats.ttest_ind(east, west, equal_var=False)
print(f'東日本 平均高齢化率: {east.mean():.2f}%')
print(f'西日本 平均高齢化率: {west.mean():.2f}%')
print(f't = {t:.3f}, p = {p:.4f}')
print('判定:', '有意差あり' if p < 0.05 else '有意差なし')
📤 実行例(実測) 東日本 平均高齢化率: 28.82% 西日本 平均高齢化率: 29.64% t = -2.807, p = 0.0052 判定: 有意差あり

※ より高度な例(クロス集計、 機械学習、 ベイズ推定)は data-process のグループ教材を参照。

🐍 Python での扱い

SSDSE-B-2026 のような公的統計データを Python で扱う際の基本パターン:

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import pandas as pd
import numpy as np

# データ読み込み
df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=1)
print(df.shape)
print(df.dtypes)
print(df.describe())

# 「CRISP-DM」の文脈で扱う場合の例:
# 分野: リテラシー
# 関連手法は同カテゴリの他用語を参照してください。
📤 実行例(実測) (564, 112) 年度 int64 地域コード object 都道府県 object 総人口 int64 総人口(男) int64 ... 保健医療費(二人以上の世帯) int64 交通・通信費(二人以上の世帯) int64 教育費(二人以上の世帯) int64 教養娯楽費(二人以上の世帯) int64 その他の消費支出(二人以上の世帯) int64 Length: 112, dtype: object 年度 総人口 ... 教養娯楽費(二人以上の世帯) その他の消費支出(二人以上の世帯) count 564.000000 5.640000e+02 ... 564.000000 564.000000 mean 2017.500000 2.690688e+06 ... 26931.026596 59784.718085 std 3.455117 2.730951e+06 ... 4219.487086 8813.812956 min 2012.000000 5.370000e+05 ... 14661.000000 35 …(以下略)

具体的なコードは データリテラシー を参照してください。

📝 レポートでの報告

分析結果を報告するときに含めるべき情報:

✅ チェックリスト

🐍 CRISP-DM テンプレートコード — プロジェクト雛形

新規プロジェクトを CRISP-DM で立ち上げる際の Python テンプレート。 各フェーズの作業を関数化して、 後で再利用しやすくする構成です。

📥 入力例(SSDSE-B-2026 の 2023 年・47 都道府県から 3 行) 都道府県 A1101(総人口) A1302(15~64歳人口) A1303(65歳以上人口) 北海道 5,092,000 2,897,000 1,681,000 東京都 14,086,000 9,368,000 3,205,000 沖縄県 1,468,000 882,000 350,000 …(全 47 行)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import pandas as pd

# ===== フェーズ 1: 業務理解 =====
PROJECT_GOAL = '47 都道府県の介護人材重点配置候補 5 県を選定'
SUCCESS_KPI = '選定根拠が定量的に示せること'

# ===== フェーズ 2: データ理解 =====
def load_data():
    df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])
    return df[df['SSDSE-B-2026'] == 2023].copy()

# ===== フェーズ 3: データ準備 =====
def prepare_features(df):
    df['aging_rate'] = df['A1303'] / df['A1101'] * 100
    df['oad_ratio'] = df['A1303'] / df['A1302'] * 100
    for c in ['aging_rate', 'oad_ratio']:
        df[c + '_z'] = (df[c] - df[c].mean()) / df[c].std()
    df['priority_score'] = df[['aging_rate_z', 'oad_ratio_z']].mean(axis=1)
    return df

# ===== フェーズ 4: モデリング =====
def select_top_n(df, n=5):
    return df.nlargest(n, 'priority_score')[['Prefecture', 'priority_score', 'aging_rate']]

# ===== フェーズ 5: 評価 =====
def evaluate(top, threshold=1.0):
    n_above_threshold = (top['priority_score'] > threshold).sum()
    return f'{n_above_threshold}/{len(top)} 県が閾値 {threshold} 超過'

# ===== フェーズ 6: 展開 (実行) =====
df = prepare_features(load_data())
top5 = select_top_n(df, n=5)
print('目的:', PROJECT_GOAL)
print('KPI:', SUCCESS_KPI)
print('\n選定結果:')
print(top5.round(2).to_string(index=False))
print('\n評価:', evaluate(top5))

🎯 このコードでやること: CRISP-DM の 6 フェーズを関数化したテンプレート。 業務目的・KPI を冒頭で明示し、 各フェーズを独立した関数として実装する。

📥 入力データ: SSDSE-B-2026 の 2023 年データ。

📤 実行結果:

目的: 47 都道府県の介護人材重点配置候補 5 県を選定 KPI: 選定根拠が定量的に示せること 選定結果: Prefecture priority_score aging_rate 秋田県 2.27 39.06 高知県 1.44 36.34 山口県 1.16 35.36 徳島県 1.14 35.40 島根県 1.08 34.92 評価: 5/5 県が閾値 1.0 超過

💬 結果の読み方: 上位 5 県全てが priority_score 1.0 超で、 業務目的を達成。 関数化により、 SSDSE 更新時に load_data() だけ呼び直せば自動で全フェーズが再実行される。 CRISP-DM をコードに落とす典型例。

⚠️ よくある落とし穴(7 件)

CRISP-DM に取り組むときに、 学生・実務者・研究者がよく踏むワナをまとめました。 該当しそうな項目があれば、 自分の分析を見直してみてください。

❌ 1. Business Understanding をスキップ
「データがあるからとりあえず分析」は CRISP-DM 失敗の第 1 位。 Business Understanding (フェーズ 1) に全工数の 20-30% を割かないと、 高精度モデルが現場で使われない最悪パターンに陥る。
❌ 2. 反復を「やり直し」と感じる
CRISP-DM は循環プロセス。 Evaluation で課題が出たら Business Understanding に戻るのは正常な動作。 「1 回目で完璧」を目指すとフェーズ間の移行で停止する。
❌ 3. Deployment フェーズの軽視
「モデルができたら終わり」だと精度が高くても実装されない。 Deployment は「分析プロセスの 5 割」と言われる。 MLOps・モニタリング・再学習計画まで含めて設計する。
❌ 4. Data Preparation 工数の過小見積もり
実プロジェクトでは Data Preparation が全工数の 50-80% を占めるのが実態 (Forbes / Anaconda 調査)。 「1 週間で終わる」と見積もって炎上するのが定番。 PJ 計画時に余裕を持つ。
❌ 5. Evaluation を「精度評価」だけに矮小化
CRISP-DM の Evaluation は「業務目標を達成できるか」の評価。 AUC や RMSE だけでなく、 業務 KPI (売上・離脱率・SLA) との対応を確認しないとフェーズ 1 への循環が機能しない。
❌ 6. ロール協働の欠如
CRISP-DM は分析者・業務担当・データエンジニア・運用者の協働が前提。 「分析者だけで完結」させると、 Business Understanding で業務担当の知識が抜け、 Deployment で運用者の運用要件が抜ける。
❌ 7. ドキュメント未整備
CRISP-DM 公式マニュアル (1999) は各フェーズで Deliverable (Business Objective Report、 Data Description Report 等) を要求。 これを記録しないと再現不能なブラックボックス分析になり、 SEMMA や KDD と比較した利点が消える。

🧭 詳細解説 — CRISP-DM を一段深く掘り下げる

歴史的背景

CRISP-DM(Cross Industry Standard Process for Data Mining)は、 1996 年に DaimlerChrysler、 SPSS、 NCR が中心となった欧州コンソーシアムで策定が始まり、 1999 年に CRISP-DM 1.0 として正式公開された業界横断のデータマイニング標準プロセスです。 6 フェーズ(業務理解 → データ理解 → データ準備 → モデリング → 評価 → 展開)と双方向矢印のループ構造が特徴で、 KDnuggets の調査では 2002 年以降 10 年以上にわたりデータマイニング実務で最も使われる方法論の地位を保ち続けました。 2020 年代以降は MLOps、 アジャイル開発、 因果推論プロジェクトの文脈で再評価され、 IBM、 Microsoft Team Data Science Process (TDSP)、 SAS SEMMA など派生プロセスの母体としても機能しています。

日本では総務省・経産省・内閣府の各種計画(Society 5.0、 デジタル田園都市国家構想、 統計改革基本計画)で繰り返し言及される基幹概念。 SSDSE(教育用標準データセット)も、 これらの教育普及を目的に整備されたデータです。

国際的な位置付け

OECD、 国連、 ISO、 IEC などの国際機関が、 CRISP-DM に類する概念・標準を整備してきました。 たとえば:

日本の文脈での意味

CRISP-DM を含むデータ分析の手法は、 日本では次の場面で使われています。 下の表は分野ごとの登場場面で、 この用語だけの話ではなくデータサイエンス全体の広がりを示します:

領域データサイエンスが使われる場面
高校・大学教育情報 I/II、 数学 B(統計)、 教養統計、 専門統計の中核概念として登場
行政・政策EBPM、 デジタル庁施策、 自治体 DX、 地方創生交付金の根拠資料
企業・産業DX 推進、 データ分析人材育成、 経営判断、 マーケティング・品質管理
学術研究公衆衛生、 教育学、 経済学、 社会学、 計算機科学などの分野横断研究
市民・メディア報道、 ファクトチェック、 行政情報の解釈、 民主主義の基盤

よく混同される概念

CRISP-DM は、 隣接概念と混同されやすい用語の代表でもあります。 ここで違いを明確にしておきましょう:

混同される概念CRISP-DM との違い
隣接する プロセス 系の用語本ページの「🔗 関連用語」を参照。 並列カテゴリで対比すると明瞭
より広い上位概念data-process ページで包含関係を確認
類似名・別名英語名 (Cross Industry Standard Process for Data Mining) を正式表記として参照

学習・教材としての位置付け

本サイト(用語解説)は「ジャストインタイム型データサイエンス教育」のリソースです。 つまり、 論文・実務・授業で その用語に出会ったタイミングで必要最低限の説明を得る、 という使い方を想定しています。 CRISP-DM もその一例。

体系的に学びたい場合は、 まずグループ教材(data-process)から始め、 そこから CRISP-DM のような個別用語にドリルダウンしていくのが効率的です。

参考文献・標準

⚠️ CRISP-DM 適用時の追加チェック

❌ フェーズ間の Deliverable 引き継ぎ漏れ
Business Understanding で作る Project Plan は Data Understanding に必ず引き継ぐ。 引き継がないと「何のために集めるデータか」が現場で行方不明になる。
❌ Modeling での評価指標の事前固定
Modeling フェーズに入ってから評価指標を選ぶと選択バイアスが入る。 Business Understanding の Success Criteria で AUC=0.85 等を先に決めておく。
❌ CRISP-DM vs SEMMA vs KDD 混同
SEMMA (SAS, 1996) は Sample-Explore-Modify-Model-Assess の 5 段階で Business Understanding がない。 KDD (1996) はデータ中心。 CRISP-DM はビジネス中心。 採用理由を明確化する。

⚠️ CRISP-DM の「ありがちな失敗」5 選

① 業務理解の軽視

「データが揃っているからすぐ分析」「とりあえずモデルを作る」という発想は CRISP-DM の真逆。 業務問題を明確化せずに分析を始めると、 高精度モデルが業務に役立たないという最悪のパターンに陥る。 業務理解には全工数の 20-30% を割くべき。

② 反復を「失敗」と捉える

前フェーズに戻ることを「やり直し」「失敗」と感じてしまう人が多い。 CRISP-DM では 反復は学習プロセスの一部。 むしろ「1 回目で完璧」を目指すと、 慎重すぎて動けなくなる。

③ 展開フェーズの軽視

「モデルができたら終わり」と考えると、 実業務への組み込みが弱くなる。 展開フェーズは「分析プロセスの 5 割」と言われるほど重要。 モニタリング・再学習・運用保守まで含めて計画する。

④ チーム連携の欠如

「分析者だけで完結」しがちだが、 CRISP-DM は 業務担当者・データエンジニア・分析者・運用者の協働を前提としている。 業務理解フェーズでは業務担当者、 データ準備フェーズではエンジニア、 展開では運用者が主役。

⑤ ドキュメント不足

各フェーズの判断根拠・データ加工内容・モデル仕様を記録しないと、 後で再現できない「ブラックボックス分析」になる。 CRISP-DM 公式マニュアルは各フェーズのドキュメントテンプレートを提供している。

📊 CRISP-DM 各フェーズの実工数配分

業界調査によれば、 CRISP-DM の各フェーズに費やす実工数は以下が典型的です。 「モデリングが時間がかかる」は誤解で、 実はデータ準備が突出して大きい。

フェーズ典型工数 (%)主要活動関係者
1. 業務理解15-20課題定義、KPI 設定、ヒアリング業務、分析、経営
2. データ理解10-15データ収集、EDA、欠損確認分析、データエンジニア
3. データ準備40-50クレンジング、特徴量設計、結合分析、データエンジニア
4. モデリング10-15アルゴリズム選定、ハイパラ調整分析、ML エンジニア
5. 評価5-10業務適合性確認、レビュー会業務、分析
6. 展開15-20本番組み込み、モニタリング設定運用、ML エンジニア

💡 実務のコツ: 「データ準備 40-50%」「モデリング 10-15%」は俗に 「データ準備 8 割の法則」とも呼ばれます。 モデル選定よりもデータ整備に時間をかけることが、 高品質な分析結果につながる。

📝 CRISP-DM ドキュメンテーション例 (SSDSE-B-2026 ケース)

CRISP-DM の各フェーズで作成すべきドキュメントの実例を、 SSDSE-B-2026 を題材に示します。 これらをリポジトリにコミットして再現性を担保しましょう。

フェーズ 1 ドキュメント: 業務理解書

主要記載項目:

フェーズ 2 ドキュメント: データ説明書

📥 入力例(SSDSE-B-2026 全体:564 行 × 112 列 = 47 都道府県 × 2012〜2023 年) 年度 地域コード 都道府県 A1101(総人口) A1303(65歳以上人口) A4101(出生数) … 2023 R01000 北海道 5,092,000 1,681,000 24,430 … 2023 R13000 東京都 14,086,000 3,205,000 86,348 … 2023 R47000 沖縄県 1,468,000 350,000 12,549 … …(残り 112 列は住宅・家計・教育・医療など)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
import pandas as pd

df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1])

# データ説明書のための統計サマリ
print('=== データ説明書 ===')
print(f'出典: SSDSE-B-2026 (独立行政法人統計センター)')
print(f'取得: 2026-05-29')
print(f'期間: {df["SSDSE-B-2026"].min()}-{df["SSDSE-B-2026"].max()}')
print(f'集計単位: 都道府県・年')
print(f'レコード数: {len(df)} = 47 都道府県 × {df["SSDSE-B-2026"].nunique()} 年')
print(f'カラム数: {len(df.columns)}')
print()

# 主要列の説明
print('主要列:')
print('  A1101: 総人口 (人)')
print('  A1303: 65 歳以上人口 (人)')
print('  A1302: 生産年齢人口 (15-64 歳)')

🎯 このコードでやること: CRISP-DM フェーズ 2 のデータ説明書を機械可読な形で生成する。 リポジトリに README として記録する典型例。

📥 入力データ: SSDSE-B-2026 全体。

📤 実行結果:

=== データ説明書 === 出典: SSDSE-B-2026 (独立行政法人統計センター) 取得: 2026-05-29 期間: 2012-2023 集計単位: 都道府県・年 レコード数: 564 = 47 都道府県 × 12 年 カラム数: 112 主要列: A1101: 総人口 (人) A1303: 65 歳以上人口 (人) A1302: 生産年齢人口 (15-64 歳)

💬 結果の読み方: 「出典・期間・集計単位・サンプルサイズ」を一括出力。 このスクリプトを CI に組み込めば、 データ更新時に自動でドキュメントが更新される。 CRISP-DM のドキュメンテーション自動化のパターン。

フェーズ 6 ドキュメント: 展開計画書

⚠️ CRISP-DM のアンチパターン 8 選 — 「形だけ」になりがちな落とし穴

CRISP-DM は概念がシンプルなぶん、 「形だけ守って中身が空」になりやすいという、 方法論共通の宿命を抱えています。 ここでは現場で頻発するアンチパターンを 8 つに整理し、 それぞれに対する処方箋を示します。

🔴 アンチパターン 1: 「業務理解」が「Word 1 ページのテンプレ埋め」になる

症状: プロジェクト憲章テンプレを埋めただけで、 KGI が 定量的に書かれていない。 「成功とは何か」が曖昧。

処方箋: 業務理解の最後に「測定可能な成功基準を 1 文で書く」ルールを設ける。 例:「調整済み R² ≥ 0.70」「F1 スコア ≥ 0.85」「誤検知率 ≤ 5%」。 1 文で書けないなら業務理解が未完了。

🔴 アンチパターン 2: 「データ理解」で時間を使いすぎてモデリングへ進めない

症状: 散布図やヒストグラムを大量に作りすぎ、 3 週間経ってもまだデータ理解。 結局モデリングに使える時間が無い。

処方箋: データ理解には 「1 週間タイムボックス」を設ける。 1 週間で完了しないなら、 業務理解で問いを狭めすぎている可能性を疑う。 完璧なデータ理解より「モデリングに進めるだけの理解」を目指す。

🔴 アンチパターン 3: 「データ準備」で大量の派生変数を作りすぎる

症状: 「念のため」と称して 50 個の派生変数を作成。 後段のモデリングで 多重共線性に苦しむ。

処方箋: 派生変数を作る前に「業務理解で立てた問いに直接答えるか」を 1 行で説明できるかチェック。 説明できない派生変数は作らない。 SSDSE-B-2026 なら「総人口の対数」「高齢化率 (A1303/A1101)」「1 人当たり消費支出」程度に絞る。

🔴 アンチパターン 4: 「モデリング」で R² を最大化することが目的化する

症状: R² を 0.01 上げるためにモデルを 10 個比較。 業務理解の KGI を満たした時点で止めるべきなのに止まれない。

処方箋: モデリングフェーズ開始時に「KGI を満たしたら即停止」のルールを文書化。 業務理解の KGI が R² ≥ 0.70 なら、 R² = 0.72 が出た瞬間に評価フェーズへ進む。 「もう少し」の誘惑を断ち切る。

🔴 アンチパターン 5: 「評価」が R² と AUC の数値報告で終わる

症状: 評価フェーズで「R² = 0.92 でした」とだけ報告し、 業務的な意味を語らない。 ステークホルダから「で、 何ができるの?」と問われて答えられない。

処方箋: 評価レポートに必ず 「業務インパクトの試算」を含める。 例:「このモデルで業務理解に定めた説明力の水準を確保できたので、 地方創生施策の優先順位を A 案から B 案に変更すべき」など、 行動可能な提言に翻訳する。

🔴 アンチパターン 6: 「展開」がレポート提出で終わる

症状: PDF レポートを提出してプロジェクト完了。 翌年データが更新されても誰も再実行しない。 結局 1 回限りの研究で終わる。

処方箋: 展開フェーズには 「運用ハンドブック」「再実行チェックリスト」「アラート閾値」を必ず含める。 SSDSE は毎年更新されるので「毎年 10 月に同じ Notebook を実行する」運用を組み込む。 これだけで「死んだモデル」化を防げる。

🔴 アンチパターン 7: フェーズ間の「行き来」を許さない

症状: 「モデリング中にデータ準備に戻るのはルール違反」と思い込み、 不適切なデータのまま無理にモデルを作る。 結果、 業務基準を満たせない。

処方箋: CRISP-DM は 双方向矢印のプロセス。 モデリング中に「この変数の前処理が間違っていた」と気付いたら、 遠慮なくデータ準備に戻る。 ただし「行き来した記録」をログに残し、 後で振り返れるようにする。

🔴 アンチパターン 8: 「反復」を口で言うだけで実際は 1 周で終わる

症状: 「CRISP-DM は反復が大事」と研修で習ったのに、 実プロジェクトでは 1 周回して完了報告。 2 周目を回す予算・時間が確保されていない。

処方箋: プロジェクト立ち上げ時に 「2 周分のリソース」を確保する。 1 周目は MVP (最小実用モデル)、 2 周目で本格モデルへ拡張、 という二段ロケット構成にする。 SSDSE-B-2026 の場合なら、 1 周目「総量モデル」→ 2 周目「1 人当たりモデル」のように。

📋 アンチパターン処方箋まとめ表

#アンチパターン対策キーワード
1業務理解がテンプレ埋め「成功基準を 1 文で書く」
2データ理解で時間使いすぎ1 週間タイムボックス
3派生変数の量産「問いに直接答えるか」テスト
4R² の最大化が目的化KGI 達成で即停止
5評価が数値報告で終わる業務インパクト試算を必須化
6展開がレポート提出で終わる運用ハンドブックを義務化
7フェーズ間の行き来禁止双方向矢印を許可、 ログ取得
8反復が口だけ2 周分のリソース確保

これら 8 つのアンチパターンは、 どれも 「方法論を形式だけ真似ると陥る罠」です。 CRISP-DM の真の価値は、 各フェーズが「次フェーズへの意思決定を準備する」役割を果たすこと。 形だけでなく、 各フェーズで「次に渡すもの」が明確になっているかを毎回チェックすれば、 自然とこれらの罠は避けられます。

🧭 CRISP-DM を健全に回すための「3 つの問い」

最後に、 各フェーズの終わりに自分に問うべき 3 つの質問を提示します。 これに即答できないなら、 そのフェーズはまだ完了していません。

  1. このフェーズで 何を意思決定したか? (1 文で言える?)
  2. その意思決定は 次フェーズの入力として使えるか? (受け取り側が分かる?)
  3. もし 業務理解の問いに照らして不都合なら、 どの前フェーズへ戻るか? (双方向矢印が引けている?)

この 3 つの問いに毎フェーズ答えられれば、 CRISP-DM は「絵に描いた餅」ではなく「実プロジェクトを動かす推進力」になります。 SSDSE-B-2026 を使った教育プロジェクトでも、 卒業研究でも、 業務委託プロジェクトでも、 この 3 つを忘れなければ CRISP-DM は失敗しません。

❓ CRISP-DM 実務 FAQ — 受講生・現場担当者からよく聞かれる質問

CRISP-DM を実際の研究・業務で使い始めると、 教科書には載っていない「現場の素朴な疑問」がたくさん湧いてきます。 ここでは筆者が大学や企業向け研修で繰り返し聞かれた質問を 8 つピックアップし、 SSDSE-B-2026 を使った具体例付きで回答します。

❓ Q1: 「業務理解」フェーズに 1 週間かけるのは長すぎませんか?

回答: 短いプロジェクト (2-4 週間) では業務理解に 1 日、 長いプロジェクト (3 ヶ月以上) では 1-2 週間が目安です。 ただし業務理解で「曖昧さ」を残したまま進むと、 後段でやり直しが発生し、 結果的に時間を浪費します。 業務理解は 「投資」であり、 ここに時間を使うほど後段がスムーズになります。 SSDSE-B-2026 のような教育プロジェクトでも、 「何を成功とするか」を半日かけて定義すると、 残りの作業が劇的に速くなります。

❓ Q2: KGI が数値化できない場合 (探索的研究など) はどうすればいいですか?

回答: 探索的研究では KGI を「数値」ではなく「到達したい状態」で定義します。 例: SSDSE-B-2026 の探索では「47 都道府県を 3-5 群にクラスタリングし、 各群の特徴を 1 文で説明できる状態」を成功とする。 これにより評価フェーズでも「クラスタが解釈可能か」をチェックでき、 数値 KGI と同じくらい厳密にプロジェクトを駆動できます。 KGI が無いプロジェクトは CRISP-DM の体をなしません。

❓ Q3: 1 人で回す研究プロジェクトでも CRISP-DM は使えますか?

回答: はい、 むしろ 1 人プロジェクトこそ CRISP-DM が活きる場面です。 複数人プロジェクトではフェーズの引き継ぎ書類が役に立ちますが、 1 人プロジェクトでは「自分の思考を可視化する」役割を CRISP-DM が果たします。 SSDSE-B-2026 を使った卒業研究で、 各フェーズの意思決定を 1 ページずつ書いておけば、 数ヶ月後に振り返ったとき「なぜこの変数を選んだか」を思い出せます。 これは時間が経ったときに想像以上に重要です。

❓ Q4: アジャイル開発と CRISP-DM はどう両立させますか?

回答: アジャイル (スクラム) のスプリント単位で CRISP-DM の 1 周を回す、 という両立が定石です。 1 スプリント (2 週間) = CRISP-DM 1 周 (MVP モデル)。 次スプリントで 2 周目 (本格モデル)。 これにより「アジャイルが要求するスピード」と「CRISP-DM が要求する構造」が共存できます。 SSDSE-B-2026 を題材にした場合、 1 スプリント目で「総人口→消費支出」の単回帰、 2 スプリント目で「3 変数モデル」、 3 スプリント目で「クラスタリング」、 と段階的に深めていきます。

❓ Q5: データ準備に時間をかけても、 結局モデルの精度が出ない場合は?

回答: 精度が出ないのは データ準備の問題ではなく、 業務理解か変数選択の問題であることがほとんどです。 SSDSE-B-2026 で「総人口だけで消費支出を予測しよう」とすると、 単純すぎてモデルは精度が出ません。 これは「データ準備が悪い」のではなく「変数選択 (=業務理解で何を測るか) が浅い」ことの表れ。 業務理解フェーズに戻り、 問いを練り直すのが正解です。 CRISP-DM の双方向矢印を信じましょう。

❓ Q6: 評価フェーズで R² が低かったら、 業務理解の KGI を下げてもいいですか?

回答: 原則 NG です。 KGI を後付けで下げるのは 「自分の都合に合わせて尺度を変える」行為であり、 プロジェクトの信頼性を損ないます。 代わりに「なぜ KGI を満たせなかったか」を分析し、 「現在の変数では限界がある」「次プロジェクトでセンサーデータを追加する必要がある」など、 次の打ち手を提示する形で評価レポートを書くのが CRISP-DM 流の誠実な対応です。

❓ Q7: ディープラーニングを使うときも CRISP-DM のフェーズは同じですか?

回答: フェーズは同じですが、 各フェーズの 比重が大きく変わります。 ディープラーニングでは「データ準備」の中の ラベル付け・データ拡張に膨大な時間がかかり、 「モデリング」では ハイパーパラメータ探索が長期化します。 SSDSE-B-2026 のような小規模整形済データではディープラーニングは過剰ですが、 画像・自然言語・音声データを使うプロジェクトでは CRISP-DM の各フェーズの中身がディープラーニング寄りに膨らみます。 それでも 6 フェーズの骨格は変わりません。

❓ Q8: CRISP-DM を学ぶための日本語書籍はありますか?

回答: 専門書としては『データサイエンティスト養成読本』『データ分析プロセス』などが CRISP-DM の章を含んでいます。 また CRISP-DM 1.0 のオリジナル文書 (1999 年公開、 英語) は無料 PDF で入手可能。 日本語で CRISP-DM だけを掘り下げた書籍は少ないですが、 PPDAC サイクル (統計教育向け) や TDSP (Microsoft 提唱) と比較しながら学ぶと立体的に理解できます。 SSDSE を題材にした実習を組み合わせると、 教科書から「実プロジェクトで使える知識」へ昇華できます。

📋 FAQ 一覧まとめ表

#質問キーポイント
Q1業務理解 1 週間は長い?業務理解は投資、 後段が速くなる
Q2KGI が数値化できない「到達したい状態」で定義
Q31 人でも使える?むしろ思考可視化に最適
Q4アジャイルと両立は?1 スプリント=1 周
Q5精度が出ない業務理解に戻る
Q6KGI を下げてよい?原則 NG、 次の打ち手を提示
Q7ディープラーニングでも同じ?骨格は同じ、 各フェーズ膨らむ
Q8日本語書籍は?PPDAC や TDSP と比較学習

これらの FAQ に共通するメッセージは、 「CRISP-DM はチェックリストではなく思考のフレームワーク」であるということ。 6 フェーズを「やったかどうか」ではなく、 「各フェーズで意思決定したことを次へ正しく渡したか」を問うのが、 CRISP-DM を本当に使いこなすための最重要ポイントです。 これさえ守れば、 SSDSE-B-2026 を使った教育プロジェクトから、 数億円規模の業務プロジェクトまで、 同じ方法論で回せます。

🎁 まとめ — CRISP-DM を「自分のもの」にする 5 つの指針

ここまで CRISP-DM の概念・図解・意思決定マトリクス・MLOps 連携・ケーススタディ・アンチパターン・FAQ を見てきました。 最後に、 CRISP-DM を「教科書の知識」から「実プロジェクトを動かす武器」に変えるための 5 つの指針を提示します。

  1. 各フェーズで「1 文の意思決定」を残す — 業務理解では「成功基準」、 データ理解では「変数候補リスト」、 データ準備では「変換方針」、 モデリングでは「採用アルゴリズム」、 評価では「業務基準達成度」、 展開では「運用形態」。 すべて 1 文で書き出せれば、 そのフェーズは完了です。
  2. 双方向矢印を恐れない — モデリング中に「データ準備に戻る」のは失敗ではなく、 CRISP-DM が想定する正常動作です。 戻った記録をログに残し、 後で「なぜ戻ったか」を振り返れば、 次プロジェクトの精度が上がります。
  3. 2 周分のリソースを確保する — プロジェクト立ち上げ時点で「1 周目: MVP、 2 周目: 本格モデル」と計画しておくことで、 CRISP-DM の「反復」を口だけにせず実装できます。 SSDSE-B-2026 を使った教育プロジェクトでも、 半期で 2 周は十分回せます。
  4. 業務理解と評価をペアで見る — 業務理解で立てた KGI が、 評価フェーズで照合される。 この往復が機能すれば CRISP-DM は機能します。 「業務理解の KGI ≠ 評価フェーズの評価軸」になっていないか毎回チェックしてください。
  5. 展開を「終わり」ではなく「次の始まり」と見る — 展開フェーズで運用ハンドブックと再実行チェックリストを残せば、 そのモデルは「死なない」モデルになります。 SSDSE が毎年更新されるなら毎年同じ Notebook を再実行する、 という運用が CRISP-DM の真の完成形です。

CRISP-DM は 1996 年に作られたフレームワークですが、 ディープラーニング時代・MLOps 時代でも生き残っているのは、 「人間がデータ分析プロジェクトで考えるべき順序」を普遍的に捉えているからです。 ツールや手法が変わっても、 業務理解・データ理解・データ準備・モデリング・評価・展開の 6 つの問いは変わりません。 SSDSE-B-2026 を使った卒業研究から、 数十人規模のエンタープライズ AI 案件まで、 同じ方法論で扱える普遍性。 これが CRISP-DM が 30 年経っても標準であり続ける理由です。

この記事を読み終えた今、 あなたは CRISP-DM を 「教科書で見たことがある言葉」から 「自分のプロジェクトに今日から適用できる武器」に変換できているはずです。 まずは SSDSE-B-2026 を題材に、 1 つの問いを 6 フェーズで通してみてください。 1 周目から学べることは想像以上に多く、 2 周目では確実に質が上がります。 CRISP-DM はあなたの分析を導く「地図」です。 地図を持って、 データの森へ出かけましょう。

🧭 深掘り補足 — 既存解説と重複しない 3 つの角度

本ページの既存の「🎨 直感」「⚠️ 落とし穴 7 件 / アンチパターン 8 選」「🌐 関連手法比較」を踏まえ、 まだ触れていない角度だけを 3 点補足する。 新規の数値例は SSDSE-B-2026(cp932・skiprows=[1])の分析工程に即した範囲にとどめ、 説明用の仮想シナリオは「架空」と明記する。

🎨 直感の補足 — CRISP-DM は「乗り物」ではなく「地図」

6 フェーズそのものより見落とされがちな本質は、 CRISP-DM が ツール非依存・ベンダー非依存・業界非依存の「共通語彙」である点。 1990 年代当時、 企業ごとに独自の分析手順が乱立し、 チーム間や発注者と受注者の間で「今どの工程にいるのか」が通じなかった。 CRISP-DM の真の発明は特定アルゴリズムではなく、 「データ準備」「展開」のように誰もが同じ意味で使える言葉を用意したこと。 だから CRISP-DM は「どのアルゴリズムを使うか(=乗り物)」は指定せず、 「今どこにいて次どこへ向かうか(=地図)」だけを示す。 pandas でも SQL でも深層学習でも、 同じ地図の上を走れる。

この「共通語彙」性は実務で効く。 SSDSE-B-2026 を使う演習でも、 「あなたは今データ理解フェーズにいる」と一言で共有できるだけで、 進捗管理と後戻り判断が一気に楽になる。 逆に言えば、 フェーズ名を口にしないプロジェクトは CRISP-DM を「使っている」とは言えない

⚠️ 落とし穴の補足 — 既存 7 件が触れていない 4 つ

既存の「落とし穴 7 件」「アンチパターン 8 選」と重複しない角度のみを 4 点追加する。 いずれもフェーズ境界で起きる見えにくい罠。

❌ A. 「2 つの評価」の取り違え
CRISP-DM には評価が 2 か所ある。 モデリングフェーズ内の モデル評価 (Assess Model) は精度・AUC・RMSE などの技術的性能、 評価フェーズ (Evaluation) は 業務目標を満たすかビジネス的可否。 この 2 つを混同すると「評価フェーズ = 精度レポート」に矮小化し、 業務理解への後戻りが起動しない。 原仕様では両者は明確に別タスクとして定義されている。
❌ B. データ準備↔モデリング境界のデータリーケージ
標準化・欠損補完・エンコーディングを train/test 分割前に全データへ一括適用すると、 テスト情報が準備工程に漏れ、 評価が楽観的になる。 SSDSE-B-2026 で 47 都道府県を train/test に分けて回帰する場合、 標準化に使う平均・分散は train だけから推定し、 test には同じ変換を適用する。 「準備は 1 回で全部やる」という直感が罠になる典型例。
❌ C. 反復を「組織構造」がウォーターフォール化する
個人が反復の重要性を理解していても、 契約・予算・納期が「1 周で完成」を前提にしていると、 双方向矢印は制度的に禁止される。 「評価で問題が出たら業務理解に戻る」時間が見積もりに入っていない。 これは技術の落とし穴ではなくプロジェクト設計の落とし穴で、 立ち上げ時に「後戻り用のバッファ」を工程表へ明示的に確保することでしか防げない。
❌ D. データ理解フェーズのスキップ (整形済みデータの油断)
「SSDSE は整形済みだから」とデータ理解を飛ばしてモデリングへ直行すると、 列の定義・単位・欠損規則の誤解が後段まで潜伏する。 たとえば列コード (A1101 = 総人口 など) の定義や集計単位 (都道府県・年) を確認しないまま特徴量を作ると、 意味を取り違えた変数で分析全体が破綻する。 前処理不要に見えるデータほど、 「何を測った数字か」の確認を省いてはいけない。

📕 発展の補足 — 原仕様の階層構造とプロセスモデルの系譜

既存の「KDD / SEMMA / TDSP / CRISP-ML(Q) 比較表」に対し、 ここでは原仕様の内部構造反復思想の源流という別軸を補う。

① CRISP-DM 1.0 の 4 層階層モデル: 教材で流通しているのは最上位の「6 フェーズ」だけだが、 原仕様 (1999) は抽象度の異なる 4 層で構成される。 上から具体へ降りるほど、 特定の課題・ツールに合わせて具体化される。

階層内容
1. フェーズ (Phases)最上位の 6 工程データ準備
2. 汎用タスク (Generic Tasks)どの案件にも共通する作業データのクリーニング
3. 特化タスク (Specialized Tasks)状況に応じた具体化数値欠損の中央値補完
4. プロセスインスタンス (Process Instances)実際の実行記録この案件で実施した補完ログ

この 4 層は「参照モデル (上 2 層) とユーザーガイド (下 2 層)」の二部構成に対応する。 教材が 6 フェーズだけを扱うのは第 1 層に過ぎず、 再現性は第 4 層 (実行記録) の文書化で担保される点が実務では重要。

② スパイラルモデル (Boehm 1988) との血縁: CRISP-DM の「反復」は、 ソフトウェア工学のスパイラルモデル(リスク駆動で螺旋状に反復し、 1 周ごとにプロトタイプを育てる)と発想を共有する。 ウォーターフォール(一方向・後戻り不可)の対極にあり、 「1 周目は最小実用版 (MVP) で 6 フェーズを貫通させ、 2 周目以降で精緻化する」戦略はスパイラルの考え方そのもの。 CRISP-DM を単なる 6 個の箱ではなく螺旋として見ると、 なぜ後戻りが正常動作なのかが腑に落ちる。

③ データ製品ライフサイクルへの接続: CRISP-DM の展開フェーズのには、 「監視 → ドリフト検知 → 再学習 → 廃棄」というプロダクト視点のライフサイクルが続く。 元の 6 フェーズは「1 個のモデルを作って届ける」までを射程とするが、 現代の運用ではモデルは生き物として劣化する。 この継続層を担うのが MLOps や CRISP-ML(Q) であり、 PPDAC が Conclusion で閉じるのに対し、 CRISP-DM 系はここまで射程を延ばせる点が最大の強み。 上位の全体像は データ分析プロセス、 問いの設計は 問いの立て方 を参照。

🗺 概念マップ

CRISP-DM の中心から、 隣接する MLOpsKDD プロセスSEMMATDSPAgile データサイエンスなどの方法論との関係、 そして 6 フェーズ (ビジネス理解 → データ理解 → データ準備 → モデリング → 評価 → 展開) の循環構造を放射状に整理した。 SSDSE-B-2026 を用いた都道府県分析を回す際にどのフェーズで何を確認するかの俯瞰図として使える。

CRISP-DM KDD プロセス (並列) SEMMA / TDSP (並列) PPDAC サイクル ドメイン知識 (前提) EDA (第 2 フェーズ) データクレンジング 特徴量設計 評価指標 (第 5) MLOps (第 6 展開) Agile データ分析

概念マップの読み方: 中心の CRISP-DM から放射状に伸びる節点はいずれも CRISP-DM が依存する隣接フレームワークまたは派生方法論。 上方の MLOps は CRISP-DM 第 6 フェーズ「展開」の現代版で、 モデル監視・再学習自動化を担う。 右方は KDD・SEMMA・TDSP といった代替方法論で、 CRISP-DM と同じ「反復サイクル」思想を共有しつつフェーズ粒度が異なる。

下方には CRISP-DM の各フェーズ内で用いられる具体技法 (EDA、 特徴量設計、 ハイパーパラメータ探索、 残差解析) が連なる。 CRISP-DM はこれら個別技法を 束ねる枠組み として機能し、 単一技法の習熟だけでは到達できない「プロジェクト全体の見通し」を提供する。 SSDSE 分析では業務理解→評価のループを 2 週間で 1 周し、 経年データで複数周回することで初めて知見が定着する。

🔗 隣接手法への橋渡し

CRISP-DM は 6 フェーズ (ビジネス理解・データ理解・データ準備・モデリング・評価・展開) からなる反復モデル。 3 視点 (接続・統合・比較) で隣接概念との関係を整理する。

🔌 接続: 上流・下流での連鎖

🧩 統合: プロジェクトに組み込む

業務理解で KPI を確定 → データ理解で SSDSE-B-2026 のスキーマ確認 → データ準備で欠損補完・型変換 → モデリングで回帰/分類試行 → 評価で AUC/RMSE 等の閾値判定 → 展開で MLOps に乗せる。 フェーズ間の往復 (例: 評価 → データ準備) を明示することで、 反復の質が劇的に向上する。

⚖️ 比較: 隣接プロセスモデルとの位置づけ

モデルフェーズ数主眼適用領域
CRISP-DM6業務理解 + 反復業界横断データマイニング
PPDAC サイクル5問題定義中心教育・統計的問題解決
データ分析プロセス4-7分析作業の標準化社内分析チーム
MLOps連続運用・継続学習本番 ML システム

4 モデルは目的が異なる。 CRISP-DM は業務理解・反復重視、 PPDAC は問題定義重視、 MLOps は運用継続重視。 SSDSE 分析なら CRISP-DM をベースに、 展開フェーズで MLOps に接続する設計が現実的。

🌳 手法選択フロー

CRISP-DM は 6 フェーズ反復モデル。 業務理解 → データ理解 → 準備 → モデリング → 評価 → 展開で進む。

  1. 業務理解は明確か? Yes → ドメイン知識、 No → PPDAC サイクル を先に確認
  2. データ理解・準備に時間を取れているか? Yes → EDA、 No → データクレンジング を先に確認
  3. 評価と展開のフェーズを設計したか? Yes → 評価指標、 No → MLOps を先に確認

反復前提なら CRISP-DM、 アジャイル風なら TDSP、 機械学習中心なら MLOps、 と「成果物と運用形態」で選ぶ。