🔖 キーワード索引
このページ内のセクションへ素早く飛べます(クリックで該当箇所へジャンプ):
「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
🍰 まずはやさしく
データ分析の共通ルールのようなものです。
迷わずに分析を進めるために使います。
部活の練習メニューを決める時に似ています。
まずは全体の流れと注意点を確認しましょう。
一言で :データマイニングの業界横断標準プロセス 。 ビジネス理解 → データ理解 → 準備 → モデル → 評価 → 展開の6フェーズ。
分野 :プロセス — 全体像は data-process ページで
典型的な使い所 :本ページ「🎨 直感」「🧮 SSDSE実値計算」セクションを参照
絶対に外せない落とし穴 :⚠️ セクションの 5 項目に目を通すこと
関連手法へ :「🌐 関連手法」セクションで上位・並列・発展概念を一覧
レポートでは :『出典・期間・サンプル数・前提・限界』の 5 点を明示
💡 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 フェーズと反復ループ」の構造記述。 ジャストインタイム教育として 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 。
🎯 いつ・どこで使うか
データマイニング・機械学習プロジェクトの工程設計の事実上の標準フレームです (Business → Data → Modeling → Deployment の 6 フェーズ)。
📚 データ分析プロセス や 📚 MLOps の起点として、 まず CRISP-DM の流れを掴むのが定石です。
SEMMA, KDD process, TDSP など類似フレームと比較されることが多く、 ビジネス目的の明文化と反復ループを重視する点が特徴です。
📋 前提条件・適用範囲
この用語を理解・使用するときは、 次のような前提を意識してください:
データの性質 :尺度(名義/順序/間隔/比例)と分布を確認
サンプル数 :手法によって最低限のサンプル数が異なります
独立性 :観測が独立であるかを確認(時系列・パネル等では別の手法が必要)
欠損・外れ値 :前処理の方針を明確に
📐 反復 (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,086 22.8 0.99 6.13
大阪 8,763 27.7 1.19 6.31
沖縄 1,468 23.8 1.60 8.55
秋田 914 39.1 1.10 3.95
全国平均 124,353 29.1 1.29 5.85
これらの値を CRISP-DM の観点で読み解くと、 都道府県間の格差・特徴・関係性が浮かび上がります。 具体的な計算手順は次の「🐍 Python 実装」セクションで実演します。
🧮 数式に値を入れて手で計算する: CRISP-DM 6 フェーズの工数比
CRISP-DM 標準 6 フェーズ (業務理解 / データ理解 / データ準備 / モデリング / 評価 / 展開) の経験則による工数比 (10:15:55:10:5:5) を 200 人日案件に当てはめてフェーズ別工数と進捗率を計算する。
Step 1: 各フェーズの工数 [人日]
フェーズ 工数 構成比
ビジネス理解 5 0.083 データ理解 10 0.167 データ準備 30 0.500 モデリング 8 0.133 評価 5 0.083 展開 2 0.033
Step 2: 集計
合計 = 5+10+30+8+5+2 = 60 人日
データ準備比率 = 30/60 = 0.500 (50%) → 経験則と一致
🐍 Python で再現
📋 コピー 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
…(以下略)
具体的なコードは データリテラシー を参照してください。
📝 レポートでの報告
分析結果を報告するときに含めるべき情報:
使ったデータ :出典・期間・サンプル数
適用条件の確認 :前提が満たされているか
計算結果 :数値だけでなく不確実性(CI・SE)も
解釈 :何を意味するか、 何を意味しないか
限界 :適用範囲外への拡張は避ける
✅ チェックリスト
□ 「CRISP-DM」を使う場面か再確認したか
□ データの尺度・分布・サンプル数を確認したか
□ 前提条件を満たしているか
□ 計算した値だけでなく不確実性も把握したか
□ 解釈と限界を区別したか
□ 関連グループ教材で全体像を確認したか
🐍 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 に類する概念・標準を整備してきました。 たとえば:
OECD :データガバナンス・AI 原則・統計教育政策で頻出
国連 SDGs :データ駆動の進捗管理の根拠
ISO/IEC :データ品質・AI マネジメントの国際規格(ISO 8000、 ISO/IEC 42001 など)
UNESCO :教育における統計・データリテラシーの位置付け
日本の文脈での意味
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 ドキュメント: 業務理解書
主要記載項目:
業務目的 : 47 都道府県の介護人材配置の優先順位を決める
KPI : 上位 5 県を選定し、 政策担当者の納得を得ること
制約条件 : 公開データのみ使用、 個人情報は使わない
ステークホルダー : 自治体・厚労省・分析チーム
成功シナリオ : 選定根拠が定量的に示されること
失敗シナリオ : 都道府県によって解釈が分かれて結論が出ない
フェーズ 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 ドキュメント: 展開計画書
展開先 : 自治体ダッシュボード (Web アプリ)
更新頻度 : SSDSE 公開と同期 (年 1 回)
モニタリング指標 : 上位 5 県の変動率、 priority_score 分布
再学習条件 : 分布が前年比 10% 以上変動した場合
担当者 : 運用チーム (1 次対応)、 分析チーム (再学習対応)
故障時対応 : 前年データで暫定運用、 24 時間以内に復旧
⚠️ 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 派生変数の量産 「問いに直接答えるか」テスト
4 R² の最大化が目的化 KGI 達成で即停止
5 評価が数値報告で終わる 業務インパクト試算を必須化
6 展開がレポート提出で終わる 運用ハンドブックを義務化
7 フェーズ間の行き来禁止 双方向矢印を許可、 ログ取得
8 反復が口だけ 2 周分のリソース確保
これら 8 つのアンチパターンは、 どれも 「方法論を形式だけ真似ると陥る罠」 です。 CRISP-DM の真の価値は、 各フェーズが「次フェーズへの意思決定を準備する」役割を果たすこと。 形だけでなく、 各フェーズで「次に渡すもの」が明確 になっているかを毎回チェックすれば、 自然とこれらの罠は避けられます。
🧭 CRISP-DM を健全に回すための「3 つの問い」
最後に、 各フェーズの終わりに自分に問うべき 3 つの質問を提示します。 これに即答できないなら、 そのフェーズはまだ完了していません。
このフェーズで 何を意思決定した か? (1 文で言える?)
その意思決定は 次フェーズの入力 として使えるか? (受け取り側が分かる?)
もし 業務理解の問いに照らして 不都合なら、 どの前フェーズへ戻るか? (双方向矢印が引けている?)
この 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 週間は長い? 業務理解は投資、 後段が速くなる
Q2 KGI が数値化できない 「到達したい状態」で定義
Q3 1 人でも使える? むしろ思考可視化に最適
Q4 アジャイルと両立は? 1 スプリント=1 周
Q5 精度が出ない 業務理解に戻る
Q6 KGI を下げてよい? 原則 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 文で書き出せれば、 そのフェーズは完了です。
双方向矢印を恐れない — モデリング中に「データ準備に戻る」のは失敗ではなく、 CRISP-DM が想定する正常動作です。 戻った記録をログに残し、 後で「なぜ戻ったか」を振り返れば、 次プロジェクトの精度が上がります。
2 周分のリソースを確保する — プロジェクト立ち上げ時点で「1 周目: MVP、 2 周目: 本格モデル」と計画しておくことで、 CRISP-DM の「反復」を口だけにせず実装できます。 SSDSE-B-2026 を使った教育プロジェクトでも、 半期で 2 周は十分回せます。
業務理解と評価をペアで見る — 業務理解で立てた KGI が、 評価フェーズで照合される。 この往復が機能すれば CRISP-DM は機能します。 「業務理解の KGI ≠ 評価フェーズの評価軸」になっていないか毎回チェックしてください。
展開を「終わり」ではなく「次の始まり」と見る — 展開フェーズで運用ハンドブックと再実行チェックリストを残せば、 そのモデルは「死なない」モデルになります。 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 はあなたの分析を導く「地図」です。 地図を持って、 データの森へ出かけましょう。
📚 関連グループ教材(全体像)
CRISP-DM は「プロセス 」分野の一部です。 同じグループに属する用語は以下:
グループ教材は横断的な視点 を提供します。 個別用語だけでなくグループ全体を 1 周しておくと、 各用語の関係性が立体的に見えてきます。
✅ CRISP-DM 自己チェックリスト
レポート・論文・分析プロジェクトを終える前に、 以下を一通り確認するとつまずきが減ります。
□ CRISP-DM を使う必然性・必要条件を 1 行で説明できるか
□ データの出典・期間・サンプル数・単位 を本文 or 脚注で明示したか
□ 前提条件(正規性、 独立性、 等分散性、 線形性 ほか)を確認・記録したか
□ 欠損 と外れ値 の処理方針を明文化したか
□ 結果に不確実性(標準誤差、 信頼区間、 効果量) を併記したか
□ 検定なら事前に α と必要 n を決めた か(事後の覗き見をしていないか)
□ 多重比較ならBonferroni / FDR 補正 を行ったか
□ 「CRISP-DM」と「プロセス」カテゴリの他用語との関係を 1 文で書けるか
□ data-process グループ教材 で全体像を確認したか
□ 限界(適用範囲外、 因果なら別手法、 外挿不可など)を明示したか
□ 図表のキャプションで「単位・期間・出典」を 3 点セットで書いたか
□ 再現性のため、 使用したコード・データ・乱数シードを共有可能にしたか
❓ よくある質問(FAQ)
Q. CRISP-DMを初めて学ぶときの最短ルートは? A. まず本ページの「💡 30秒結論」「🎨 直感で掴む」を読み、 続いて「🧮 SSDSE実値計算」のテーブルだけでも目を通す。 そのうえで「🐍 Python実装」の ①基本パターン を写経すれば、 1 時間程度で実用最低限まで届きます。
Q. CRISP-DMと一緒に必ず押さえておきたい用語は? A. 「🔗 関連用語」セクションの
前提 3〜4 件は最優先。 特に
データリテラシー と
変数の型 はどの用語にも効きます。
Q. CRISP-DMを実務レポートに書くときに気をつけることは? A. ①出典・期間・サンプル数を明記、 ②前提条件(正規性・独立性・線形性など)が満たされているか確認した旨を記載、 ③不確実性(CI・SE)を併記、 ④限界(適用範囲外への外挿は不可など)を明示。
Q. CRISP-DMと AI・機械学習はどう関係する? A. CRISP-DM は古典統計の文脈でも機械学習の文脈でも基礎になります。 とくにモデル評価・データ品質・解釈性の局面で必須。 詳細は
AIと社会 、
AIの信頼性 を参照。
Q. SSDSE 以外のデータでも同じ手順で大丈夫? A. 概ね Yes。 政府統計(e-Stat)、 World Bank Open Data、 国際機関の公開データ、 自社のログデータ — どれもエンコーディング・スキーマ・欠損処理の調整は必要ですが、 本ページのコードを土台にできます。
📌 早見表 — CRISP-DM
日本語名 CRISP-DM
英語名 Cross Industry Standard Process for Data Mining
カテゴリ プロセス
グループ教材 data-process
一言で データマイニングの業界横断標準プロセス 。 ビジネス理解 → データ理解 → 準備 → モデル → 評価 → 展開の6フェーズ。
主データ SSDSE-B-2026(47都道府県・125項目)/ e-Stat
主ライブラリ pandas / numpy / scipy / matplotlib / seaborn / statsmodels
学習推奨時間 概念把握 30 分 + 実装演習 60 分 + 関連用語の確認 30 分 = 約 2 時間
📚 関連グループ教材
この用語の全体像を学ぶには、 まず横断的な教材で文脈を掴むのが効率的です:
🔗 同カテゴリの他用語
🔄 CRISP-DM の 6 フェーズを SSDSE-B-2026 で実演する
CRISP-DM(CRoss-Industry Standard Process for Data Mining)は 業務理解 → データ理解 → データ準備 → モデリング → 評価 → 展開 の 6 フェーズからなる、 産業界で最も普及したデータ分析プロセスモデルです。 各フェーズは独立ではなく 反復(iteration) を前提とし、 評価で問題が見つかれば前フェーズに戻ります。 ここでは SSDSE-B-2026 を使って 6 フェーズを順番に実演します。
フェーズ 1: 業務理解 (Business Understanding)
「何を解くのか」「成功は何で測るのか」を明確にする最重要フェーズ。 ここを飛ばすと、 後で「精度の高いモデルを作ったが業務には役に立たない」となる。
今回の業務問題 : 「47 都道府県の中で、 介護人材の重点配置を行うべき 5 県を選定する」。 成功指標は「選定理由を定量的に説明でき、 政策担当者の納得を得られる」。
フェーズ 2: データ理解 (Data Understanding)
利用可能なデータを把握し、 業務問題との対応関係を確認する。
📥 入力例(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 import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
d23 = df [ df [ 'SSDSE-B-2026' ] == 2023 ] . copy ()
# 業務問題に直接関連する列を確認
related_cols = [ 'A1101' , 'A1303' , 'A1302' ] # 総人口、65 歳以上人口、生産年齢人口
print ( '対象年:' , d23 [ 'SSDSE-B-2026' ] . unique ())
print ( '都道府県数:' , len ( d23 ))
print ( d23 [[ 'Prefecture' ] + related_cols ] . head ( 5 ))
print ( ' \n 欠損状況:' )
print ( d23 [ related_cols ] . isna () . sum ())
🎯 このコードでやること : 業務問題に関連する列の概要を把握する。 CRISP-DM のフェーズ 2 の典型操作。
📥 入力データ : SSDSE-B-2026 の A1101(総人口)、A1302(生産年齢人口)、A1303(65 歳以上人口)。
📤 実行結果 :
対象年: [2023]
都道府県数: 47
Prefecture A1101 A1302 A1303
0 北海道 5092000 2897000 1681000
1 青森県 1184000 649000 417000
2 岩手県 1163000 636000 407000
3 宮城県 2264000 1352000 662000
4 秋田県 914000 474000 357000
欠損状況:
A1101 0
A1303 0
A1302 0
dtype: int64
💬 結果の読み方 : 47 都道府県、 欠損ゼロ。 CRISP-DM フェーズ 2 では「データが十分使える状態か」を確認するのが目的。 ここでは 分析にすぐ進める品質 と判定。
フェーズ 3: データ準備 (Data Preparation)
業務問題を解くために必要な変数を作る。 「特徴量エンジニアリング」とも呼ばれる工程。
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
d23 = df [ df [ 'SSDSE-B-2026' ] == 2023 ] . copy ()
# 介護需要指標を 3 つ計算
d23 [ 'aging_rate' ] = d23 [ 'A1303' ] / d23 [ 'A1101' ] * 100 # 高齢化率
d23 [ 'oad_ratio' ] = d23 [ 'A1303' ] / d23 [ 'A1302' ] * 100 # 老年従属人口指数
d23 [ 'care_demand_proxy' ] = d23 [ 'A1303' ] / 1000 # 介護需要 (千人単位)
# 標準化(z-score)で 3 指標を統合可能にする
for c in [ 'aging_rate' , 'oad_ratio' , 'care_demand_proxy' ]:
d23 [ c + '_z' ] = ( d23 [ c ] - d23 [ c ] . mean ()) / d23 [ c ] . std ()
d23 [ 'priority_score' ] = d23 [[ c + '_z' for c in [ 'aging_rate' , 'oad_ratio' ]]] . mean ( axis = 1 )
print ( d23 [[ 'Prefecture' , 'aging_rate' , 'oad_ratio' , 'priority_score' ]] . head ( 5 ) . round ( 2 ) . to_string ( index = False ))
🎯 このコードでやること : 「高齢化率」「老年従属人口指数」を計算し、 z-score 化して統合スコアを作る。 CRISP-DM フェーズ 3 の特徴量エンジニアリング。
📥 入力データ : SSDSE-B-2026 の総人口・生産年齢人口・65 歳以上人口。
📤 実行結果 :
Prefecture aging_rate oad_ratio priority_score
北海道 33.01 58.03 0.34
青森県 35.22 64.25 1.04
岩手県 35.00 63.99 0.99
宮城県 29.24 48.96 -0.76
秋田県 39.06 75.32 2.27
→ 秋田県は priority_score 2.27 で 47 県中の最重点候補。
💬 結果の読み方 : priority_score が高いほど介護需要が大きい県。 秋田 (2.27)、 青森 (1.04) が顕著。 z-score 化により異なる単位の指標を統合 できた。
フェーズ 4: モデリング (Modeling)
業務問題を解くモデルを構築する。 機械学習だけでなく、 統計モデル・ルールベース・ランキングなども含む。
📋 コピー 1
2
3
4
5
6
7
8
9
10
11
12
13
14 import pandas as pd
df = pd . read_csv ( 'data/raw/SSDSE-B-2026.csv' , encoding = 'cp932' , skiprows = [ 1 ])
d23 = df [ df [ 'SSDSE-B-2026' ] == 2023 ] . copy ()
d23 [ 'aging_rate' ] = d23 [ 'A1303' ] / d23 [ 'A1101' ] * 100
d23 [ 'oad_ratio' ] = d23 [ 'A1303' ] / d23 [ 'A1302' ] * 100
for c in [ 'aging_rate' , 'oad_ratio' ]:
d23 [ c + '_z' ] = ( d23 [ c ] - d23 [ c ] . mean ()) / d23 [ c ] . std ()
d23 [ 'priority_score' ] = d23 [[ 'aging_rate_z' , 'oad_ratio_z' ]] . mean ( axis = 1 )
# ランキングモデル: 上位 5 県を「重点配置候補」と判定
top5 = d23 . nlargest ( 5 , 'priority_score' )[[ 'Prefecture' , 'priority_score' , 'aging_rate' ]]
print ( top5 . round ( 2 ) . to_string ( index = False ))
🎯 このコードでやること : priority_score でランキングモデルを作成し、 上位 5 県を抽出する。
📥 入力データ : フェーズ 3 で構築した priority_score。
📤 実行結果 :
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 県は秋田・高知・山口・徳島・島根。 priority_score 1.08 以上で 「全国平均から 1 標準偏差以上離れた高齢化県」 と定量化された。
フェーズ 5: 評価 (Evaluation)
モデルが業務問題を解けているか、 業務関係者と協議する。 ここで合格しなければ前フェーズに戻る。
評価観点 判定 根拠
業務目的との整合 ✅ 合格 介護需要が高い県を順位付け
結果の解釈可能性 ✅ 合格 priority_score の意味が明確
再現性 ✅ 合格 SSDSE-B-2026 公開データのみ
限界の認識 ⚠️ 要追記 医療従事者の供給側を未考慮
フェーズ 6: 展開 (Deployment)
モデルを実業務に組み込む。 単発レポートだけでなく、 定期的なモニタリング ・政策意思決定への組み込み などまで含む。
展開計画 : ① 月次 SSDSE 更新ごとに priority_score を再計算 ② ダッシュボード化して自治体担当者と共有 ③ 年次レビューで指標の妥当性を検証 ④ 介護人材配置の実態と照合して指標を改善。
📚 CRISP-DM を深く学ぶためのリソース
公式・準公式
CRISP-DM 1.0 Step-by-step Data Mining Guide (SPSS, 2000) — 原典マニュアル。 各フェーズの手順とドキュメントテンプレートを提供
IBM SPSS CRISP-DM ガイド — 産業界での実装事例
日本語書籍
『データサイエンスのプロセス』(オーム社) — CRISP-DM の各フェーズを章立てで解説
『データ分析のプロセス』(技術評論社) — 実プロジェクトでの CRISP-DM 運用
関連オンラインコース
Coursera : IBM Data Analyst Professional Certificate (CRISP-DM 章あり)
edX : Microsoft Professional Program in Data Science (TDSP との比較あり)
Udemy : CRISP-DM 専用講座が複数
関連プロセスモデル文献
Fayyad et al. (1996) — KDD プロセスの原典
Studer et al. (2021) — CRISP-ML(Q) の提案論文
Microsoft TDSP ドキュメント — モダンな MLOps 統合プロセス
💡 学習順序のススメ : ① CRISP-DM の 6 フェーズを暗記 → ② 小規模プロジェクト (例: SSDSE-B 分析) で 1 周回す → ③ 反復の感覚を掴む → ④ TDSP や CRISP-ML(Q) と比較して違いを理解 → ⑤ 自組織の慣習に合わせてカスタマイズ。
📚 CRISP-DM の歴史と発展
CRISP-DM は 1996 年に欧州の SPSS、 NCR、 Daimler-Chrysler、 OHRA の 4 社共同プロジェクトとして始まりました。 当時、 データマイニングは新興分野で、 各社が独自手法で進めていたため、 業界横断の標準 が必要とされていました。
タイムライン
年 出来事
1996 CRISP-DM 1.0 プロジェクト開始 (SPSS/NCR/Daimler-Chrysler/OHRA)
1999 CRISP-DM 1.0 公式リリース
2000 Step-by-step Guide 公開、産業界で急速に普及
2007 KDnuggets 調査でデータマイニング標準プロセス No.1 に
2014 CRISP-DM 2.0 策定の動きあるも、 商業化されず
2016 Microsoft TDSP がアジャイル統合の代替として登場
2021 CRISP-ML(Q) 発表 — ML 専用品質保証プロセス
2024 依然として産業界で最も普及するプロセスモデル
25 年以上経った今でも CRISP-DM が 業界標準 として通用しているのは、 「業務問題から出発」「反復的アプローチ」「展開まで含む全工程」という思想が古びていないから。 機械学習・AI の時代になっても、 「データ分析の全体像」 を語る共通言語として機能し続けています。
✅ CRISP-DM 各フェーズ完了チェックリスト
各フェーズを終える前に、 以下の項目をすべて確認しましょう。 1 つでも「No」があれば、 そのフェーズは未完了です。
フェーズ 1 (業務理解) 完了条件
業務目的が 1 文で書ける
成功 KPI と失敗シナリオが明文化されている
ステークホルダー全員が目的に同意している
制約条件 (データ・予算・期限) がリストアップされている
フェーズ 2 (データ理解) 完了条件
利用可能なデータソースが一覧化されている
各ソースの出典・期間・集計単位が明記されている
欠損・異常値の分布が確認されている
EDA レポートが作成されている
フェーズ 3 (データ準備) 完了条件
分析用データセットが完成し、 列定義が文書化されている
クレンジング・特徴量加工の各ステップがコードに残されている
train / validation / test 分割が決まっている
フェーズ 4 (モデリング) 完了条件
複数のモデルを比較し、 最良のものを選定した
ハイパーパラメータの探索ログがある
モデルの計算複雑度・推論時間が確認されている
フェーズ 5 (評価) 完了条件
業務 KPI に対する評価結果が出ている
業務担当者のレビューを受けた
限界・前提が明文化されている
フェーズ 6 (展開) 完了条件
本番環境にデプロイされている
モニタリング指標が設定されている
再学習トリガー・故障時対応が文書化されている
運用チームへの引き継ぎが完了している
💡 使い方 : チェックリストを checklist.md としてリポジトリにコミットし、 各フェーズ終了時に PR レビューで使う。 CRISP-DM の運用負荷が大幅に下がります。
🚀 CRISP-DM の現代的拡張 — MLOps と統合する
CRISP-DM は 1996 年に策定されたため、 本番運用後の継続的改善 については弱い。 現代的なデータ分析プロジェクトでは、 MLOps の考え方を取り入れて CRISP-DM を拡張するのが標準です。
拡張版 CRISP-DM のフェーズ追加
フェーズ 追加ポイント ツール例
3 データ準備 データバージョン管理 DVC, Pachyderm
4 モデリング 実験トラッキング MLflow, Weights & Biases
5 評価 A/B テスト統合 Optimizely, GrowthBook
6 展開 CI/CD パイプライン GitHub Actions, Kubeflow
7 モニタリング (追加) ドリフト検知 Evidently, Arize
8 自動再学習 (追加) スケジュール / トリガー Airflow, Prefect
「6 フェーズ + 7 モニタリング + 8 自動再学習」の 8 フェーズ CRISP-DM が、 現代の MLOps プロジェクトの実態に近い構造です。 ただし基本思想は変わらず、 業務理解からスタートして反復で進める という CRISP-DM の DNA を継承しています。
📊 CRISP-DM の各フェーズを「実図」で読み解く — SSDSE-B-2026 の 3 枚
CRISP-DM の 6 フェーズは、 文字だけだとどうしても抽象的に響きます。 ここでは SSDSE-B-2026 (47 都道府県社会経済統計) を題材に、 各フェーズで実際に作られる典型的な「3 枚の図」を見ます。 これらは順に (1) データ理解での散布図、 (2) データ準備での分布確認、 (3) モデリングでの比較箱ひげ図 に対応し、 CRISP-DM が回るときに必ず通過する「絵」のテンプレートです。
🔸 Figure 1 — データ理解 (Data Understanding) で最初に描く散布図
フェーズ 2「データ理解」では、 主要 2 変数の関係を散布図で「目で確かめる」のが鉄板です。 SSDSE-B-2026 では、 まず「総人口 × 一般診療所数」の散布図を描き、 線形に近い右肩上がりかどうか、 外れ値はあるか、 を確認します。 ここで関係性が「直線で近似できる」と判断できれば、 後段の線形モデルで素直に進められます。
💬 読み方: 全体は強い正の相関 (右上がり) を示し、 線形仮定が成立しそうだとわかります。 ただし右上に 1-2 点、 トレンドから外れた「外れ値候補」が見えます。 CRISP-DM 流に言うと、 この散布図ひとつで「業務理解で立てた仮説」が裏付けられたかをチェックでき、 同時に「データ準備フェーズで外れ値の取り扱いを決める」という次のタスクが明確になります。 ここで散布図を飛ばしてモデリングへ進む人が陥る最大の失敗は、 「外れ値」と「本質的なシグナル」の区別がつかないまま回帰直線を引いてしまう ことです。
🔸 Figure 2 — データ準備 (Data Preparation) で必ず確認するヒストグラム
フェーズ 3「データ準備」では、 各変数の分布形状 を確認します。 右裾が長い (対数変換が必要) のか、 二峰性 (グループ分割が必要) なのか、 ヒストグラムで一目で判断します。 SSDSE-B-2026 の人口は、 東京・大阪などの大都市圏が右裾を作る典型的な右歪み分布です。
💬 読み方: 左に山、 右に長い裾の典型的な「右に裾の長い分布」です。 CRISP-DM のデータ準備フェーズでは、 この形を見て (1) 対数変換するか、 (2) 元のまま線形回帰すれば説明力が落ちるか、 (3) 中央値ベースの指標へ切り替えるか、 を意思決定します。 ヒストグラム 1 枚で「データ準備の方針」が決まるため、 このフェーズはまさに「絵を見て、 段取りを決める」ステップです。
🔸 Figure 3 — モデリング/評価 (Modeling/Evaluation) で必ず描く比較箱ひげ図
フェーズ 4「モデリング」と フェーズ 5「評価」では、 グループ間の差を比較箱ひげ図で確認するのが鉄板です。 たとえば SSDSE-B-2026 の県を KMeans で 3 クラスタに区分し、 一般診療所数を箱ひげ図で並べて、 グループ間で差があるかを目視確認します。
💬 読み方: 箱の位置 (中央値) と幅 (IQR) を比べると、 診療所数の多いクラスタの中央値が高く、 同時にばらつきも大きいことが読み取れます。 CRISP-DM の評価フェーズで「単一指標 (たとえば平均値) で語ってよいか」を箱ひげ図で点検することで、 「実は分布の形が違うのに平均だけ比べていた」という誤解を防げます。 これは CRISP-DM の フェーズ 5「評価」で必須の検証ステップ です。
🔸 3 枚の図がフェーズと対応する全体俯瞰表
フェーズ
使う図
SSDSE-B-2026 での具体例
この絵から得る判断
2. データ理解 散布図 総人口 × 一般診療所数 線形仮定の妥当性 / 外れ値候補
3. データ準備 ヒストグラム 人口の分布 対数変換要否 / 中央値派採用
5. 評価 比較箱ひげ図 KMeans クラスタ別 一般診療所数 グループ差の有意性 / ばらつきの違い
この 3 枚は CRISP-DM のどのプロジェクトでも汎用的に通用するテンプレートです。 「最初に散布図」「次にヒストグラム」「最後に比較箱ひげ図」という順序を守るだけで、 CRISP-DM の各フェーズに対応する「視覚的な意思決定」が自然に行えるようになります。
🧭 CRISP-DM 各フェーズでの「意思決定マトリクス」 — 何を決めるかを表で固定する
CRISP-DM が「絵に描いた餅」になりやすいのは、 各フェーズで 「何を意思決定するか」 が言語化されていないからです。 ここでは、 6 フェーズすべてで「決めること」「成果物」「次フェーズへの引き継ぎ事項」を一覧表に固定します。 SSDSE-B-2026 の社会経済統計を題材にした列も併記しているので、 実プロジェクトのテンプレとして使えます。
📋 6 フェーズ完全意思決定マトリクス
#
フェーズ
決めること
成果物
SSDSE-B-2026 例
次へ引き継ぐもの
1 業務理解 何を成功とするか (KGI) プロジェクト憲章 県別 消費支出の説明モデル構築 分析テーマと評価指標
2 データ理解 どの変数を使うか候補化 記述統計レポート 総人口・65 歳以上人口・出生数を候補 変数候補とデータ品質メモ
3 データ準備 変換・欠損補完の方針 クリーンデータ 人口は対数変換、 欠損なし 分析テーブル (横長 47 行)
4 モデリング アルゴリズム選択 学習済みモデル 線形回帰と Lasso を比較 モデルと係数表
5 評価 業務基準で OK か 評価レポート 調整済み R² が KGI 水準に到達 意思決定 (Go/再分析)
6 展開 運用形態 運用ガイド 毎年 SSDSE 更新時に再実行 監視指標と再学習トリガー
この表のポイントは、 各フェーズが 「何かを決めて次に渡す」 構造になっていることです。 これにより、 CRISP-DM が「順番にこなすチェックリスト」ではなく、 「前工程の意思決定が後工程の入力になる パイプライン」であると理解できます。 実プロジェクトでは、 このマトリクスをそのまま Confluence や Notion のテンプレートに貼り付けて、 各セルを埋めていく形で運用するのが効率的です。
🔄 CRISP-DM と MLOps の橋渡し — 「終わった後」をどう運用するか
CRISP-DM の最終フェーズ「Deployment (展開)」は、 1996 年当時 (CRISP-DM 1.0) はレポートを提出してプロジェクト完了でした。 しかし 2020 年代の AI 時代には、 モデルを本番投入した後の 監視 (Monitoring)・再学習 (Retraining)・コンセプトドリフト対応 が必須です。 ここでは CRISP-DM を MLOps と接続する「橋渡しテーブル」を整理します。
CRISP-DM フェーズ
MLOps 対応プラクティス
使うツール (例)
SSDSE-B-2026 での具体例
業務理解 ML Canvas / モデルカード Notion, Confluence 「県別 消費支出モデル」の目的書
データ理解 データバージョニング DVC, LakeFS SSDSE-B-2026 vs 2025 の差分
データ準備 フィーチャーストア Feast, Tecton log_pop 特徴量を共有レジストリ化
モデリング 実験管理 MLflow, Weights & Biases 線形回帰と Lasso の R² を MLflow で比較
評価 ステークホルダ承認ワークフロー GitHub Actions, Argo R² ≥ 0.85 で自動 Pass バッジ
展開 サービング + 監視 Seldon, BentoML, Prometheus 毎年 SSDSE 更新時に再推論ジョブ
CRISP-DM はもともと 「人が考える順序を定式化したもの」 であり、 MLOps はそれを 「機械が自動で回す配管に置き換えたもの」 です。 両者は競合関係ではなく、 CRISP-DM が「何を考えるか」を、 MLOps が「どう自動化するか」を担う レイヤ分担 になっています。
📚 CRISP-DM の現場ケーススタディ 3 つ — SSDSE-B-2026 で再現する
CRISP-DM の教科書的説明だけでは「自分のプロジェクトでどう使えばいいか」が見えにくいので、 ここでは公共データ・教育データを使った 3 つのミニケーススタディ を提示します。 いずれも SSDSE-B-2026 を使い、 各フェーズで「実際に何を書くか」を具体化しています。
🟢 ケース 1 — 「県別 消費支出の説明モデル」を作る
フェーズ 記載例
業務理解 都道府県別 消費支出を 5 変数以内で説明し、 地方創生施策の優先順位付けに使う
データ理解 SSDSE-B-2026 の 47 行 × 112 列から関連候補を抽出 (総人口、 65 歳以上人口、 出生数、 婚姻件数、 大学数、 着工新設住宅床面積 など)
データ準備 総人口などの規模変数は対数変換、 比率変数はそのまま使用、 標準化適用
モデリング 線形回帰、 Lasso (alpha=0.1)、 ランダムフォレストを比較
評価 3 手法を比較し、 解釈性を優先して線形回帰を採用 (業務基準の R² を満たすか照合)
展開 毎年の SSDSE 公開タイミングで再学習する Jupyter ノートブックを GitHub Actions に登録
🟢 ケース 2 — 「人口階級クラスタリング」
フェーズ 記載例
業務理解 類似県をグループ化し、 政策ベンチマーキングの相手県を見つける
データ理解 人口規模・産業構成・財政状況の 3 軸を選択
データ準備 標準化 (z-score)、 主成分分析 (PCA) で 2 次元に圧縮
モデリング k-means (k=4) と階層クラスタリングを比較
評価 シルエット係数 0.52 で k=4 が妥当、 大都市・地方拠点・農業県・観光県の 4 群が見つかる
展開 県別ベンチマーキングダッシュボードに反映
🟢 ケース 3 — 「高齢化率と医療費の説明モデル」
フェーズ 記載例
業務理解 高齢化率が医療費にどれだけ寄与するかを定量化
データ理解 SSDSE-B-2026 の高齢化率と医療費を散布図で可視化
データ準備 1 人当たり医療費に変換し人口効果を除去
モデリング 単回帰 + 多重回帰 (高齢化率 + 病床数 + 平均所得)
評価 高齢化率の標準化偏回帰係数 0.71 — 強い正の効果を確認
展開 県議会向けレポートに掲載、 毎年更新
これら 3 ケースに共通するのは、 「業務理解」で立てた問いが、 すべての後フェーズの判断を駆動している 点です。 CRISP-DM の真価は、 各フェーズが独立して存在することではなく、 業務理解で立てた問いが「データの選び方」「準備の方針」「モデルの選択」「評価基準」「展開の形」を 一気通貫で決定していく 点にあります。
🎯 理解度チェック — CRISP-DM を「使える形」で身につける
CRISP-DM は概念としてはシンプルですが、 実際に手を動かして使えるかは別問題です。 ここでは 5 問のチェック問題で「自分が CRISP-DM を本当に使える状態か」を確認します。 紙とペンで答えてから解説を読んでください。
📝 問題 1: 「業務理解」フェーズで決めるべきものは?
(a) 使うアルゴリズムの種類 / (b) 成功指標 (KGI) と評価軸 / (c) 図表のデザイン / (d) Python ライブラリの選定
正解 : (b)。 業務理解では 「何ができたら成功か」 を定量的に定義することが最重要。 アルゴリズム選定はモデリングフェーズの担当。
📝 問題 2: SSDSE-B-2026 の人口分布は右に長い裾を持つ。 CRISP-DM のどのフェーズでこの事実を確認するか?
(a) 業務理解 / (b) データ理解 / (c) データ準備 / (d) 評価
正解 : (b) または (c)。 厳密には「データ理解」で分布を見て、 「データ準備」で対数変換するかを意思決定。 多くの場合この 2 つは行き来する。
📝 問題 3: モデルの R² が 0.92 だった。 CRISP-DM 流の「評価」フェーズで次に何を確認するか?
(a) R² がもっと高くなる別アルゴリズムを試す / (b) 業務理解で定めた成功基準を満たしているかを確認 / (c) ハイパーパラメータを変えて再学習 / (d) 別のデータセットを探す
正解 : (b)。 評価フェーズは「業務基準を満たしたか」を判断する場所。 R² が 0.92 でも業務基準が 0.95 なら不合格、 業務基準が 0.85 なら合格。 数値の絶対値だけで判断するのは CRISP-DM の趣旨に反する。
📝 問題 4: 展開 (Deployment) フェーズで終わりではなく、 1 周回すと業務理解に戻ることがある。 これを何と呼ぶか?
(a) 反復 (Iteration) / (b) パイプライン / (c) リファクタリング / (d) チェックポイント
正解 : (a) 反復。 CRISP-DM の核心は「6 フェーズを 1 回で終わらせず、 学びを次の周回に反映する」点にある。 SSDSE-B-2026 で 1 周目に「総人口→消費支出」を見て、 2 周目に「1 人当たり消費支出×高齢化率」へ進むのが典型例。
📝 問題 5: CRISP-DM の最終フェーズ「展開」を、 2020 年代の MLOps 文脈で拡張するとどんな項目が加わるか?
(a) 監視 / (b) 再学習トリガー / (c) コンセプトドリフト検出 / (d) すべて
正解 : (d) すべて。 1996 年の CRISP-DM 1.0 では「展開 = レポート提出で完了」だったが、 現代では本番投入後の 監視・再学習・ドリフト対応 が「展開」の必須要素として加わる。 この拡張版が CRISP-ML(Q) や TDSP として整理されている。
📋 自己採点ガイド
正解数 次のステップ
5/5 CRISP-DM の概念を完全に理解。 実プロジェクトに適用できる段階。
3-4/5 概念は把握済み。 「業務理解」と「評価」フェーズの意思決定基準 を再読推奨。
0-2/5 本記事の「6 フェーズ意思決定マトリクス」を写経し、 SSDSE-B-2026 で 1 周回してみる。
CRISP-DM を本当に使えるかは、 「業務理解で何を決めたか」を 1 文で書き出せるか で判定できます。 もし書き出せないなら、 まだフェーズ 1 の意思決定が固まっていない証拠。 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 の中心から、 隣接する MLOps ・KDD プロセス ・SEMMA ・TDSP ・Agile データサイエンス などの方法論との関係、 そして 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-DM 6 業務理解 + 反復 業界横断データマイニング
PPDAC サイクル 5 問題定義中心 教育・統計的問題解決
データ分析プロセス 4-7 分析作業の標準化 社内分析チーム
MLOps 連続 運用・継続学習 本番 ML システム
4 モデルは目的が異なる。 CRISP-DM は業務理解・反復重視、 PPDAC は問題定義重視、 MLOps は運用継続重視。 SSDSE 分析なら CRISP-DM をベースに、 展開フェーズで MLOps に接続する設計が現実的。
🌳 手法選択フロー
CRISP-DM は 6 フェーズ反復モデル。 業務理解 → データ理解 → 準備 → モデリング → 評価 → 展開で進む。
業務理解は明確か? Yes → ドメイン知識 、 No → PPDAC サイクル を先に確認
データ理解・準備に時間を取れているか? Yes → EDA 、 No → データクレンジング を先に確認
評価と展開のフェーズを設計したか? Yes → 評価指標 、 No → MLOps を先に確認
反復前提なら CRISP-DM、 アジャイル風なら TDSP、 機械学習中心なら MLOps、 と「成果物と運用形態」で選ぶ。