忍者ブログ
統計、機械学習、AIを学んでいきたいと思います。 お役に立てば幸いです。

【機械学習の知識】階層的クラスタリングの代表格「凝集型クラスタリング」の手順と仕組み

教師なし学習のクラスタリング手法において、事前にクラスタ数を決めずにデータの親子関係や木のつながりを視覚的に捉えられる「階層的クラスタリング」。その中でも最も一般的に使われる「凝集型(アグロメレーティブ)クラスタリング」の具体的な手順と仕組みを整理します。

1. 【 概要 】

凝集型クラスタリング(Agglomerative Hierarchical Clustering)とは、最初はすべてのデータ点がそれぞれ独立した「1つの小さなクラスタ」として存在している状態からスタートし、最も距離の近いペア同士を次々に合体させて大きなクラスタへと育てていくボトムアップ型の手法です。

データがどのようにまとまっていくかの過程(デンドログラムと呼ばれる樹形図)を可視化できるため、データの構造を直感的に深く理解できるのが大きなメリットです。


2. 【 基本手順(3つのステップ) 】

(1) すべてのデータ点ごとに独立したクラスタを作成する(100個なら100個)
(2) 空間内で最も距離が近い(類似している)クラスタ同士をグループ化して合体する
(3) 終了条件(指定したクラスタ数に達したか等)を確認し、満たしていなければ(2)に戻る

3. 整理:各ステップの具体的な処理内容

凝集型クラスタリングがどのようなロジックでグループを大きくしていくのか、ステップごとに詳しく見ていきましょう。

【 各プロセスの具体的な仕組み 】

・ステップ(1):初期状態の設定
データが100個あれば、最初は「100個のクラスタ(中身はデータが1つずつ)」が存在している状態から始まります。

・ステップ(2):一番近いペアの結合
すべてのクラスタ間の距離を計算し、最も距離が近い(類似度が高い)と判定された最も近接するペア同士を1つの大きなグループにまとめます。この時点でクラスタの総数は1つ減ります。

・ステップ(3):終了条件の確認とループ
「目的のクラスタ数(例: 3個)に到達したか」や「全てのデータが1つにまとまったか」という終了条件をチェックします。
条件を満たしていない場合は、新しくできたクラスタと他のクラスタとの距離を再計算し、ステップ(2)の結合処理を繰り返します。

4. 関連して押さえたい「クラスタ間の距離の測り方(連鎖基準)」

ステップ(2)において、「クラスタとクラスタの距離をどうやって測るのか?」という基準(リンク基準)には、いくつかの重要な選択肢があります。

・最遠隣法(Complete Linkage):クラスタ内の「最も遠いデータ同士」の距離をグループ間の距離とする。広がりのある綺麗な固まりになりやすい。
・最短隣法(Single Linkage):クラスタ内の「最も近いデータ同士」の距離をグループ間の距離とする。鎖状につながったデータ(チェーニング効果)を検出しやすい。
・群平均法(Average Linkage):クラスタ内のすべてのデータの組み合わせの「平均距離」を使う。バランスが良く実務でよく使われる。
・ウォード法(Ward's Method):結合したときに「分散の増加が最小になるペア」を選ぶ。丸っこいコンパクトなクラスタを作りやすい(Scikit-learnのデフォルト)。


5. 補足:Python(Scikit-learn)での実装コード例

Pythonで凝集型クラスタリングを実行し、樹形図(デンドログラム)を描く準備をする際の実装イメージです。
可読性の高いライトグレーの背景でまとめています。

# Scikit-learnのAgglomerativeClusteringを使う例
from sklearn.cluster import AgglomerativeClustering

# クラスタ数を3に指定し、ウォード法(ward)を用いてクラスタリング
agg_clustering = AgglomerativeClustering(n_clusters=3, metric='euclidean', linkage='ward')

# データの学習と各データへのクラスタ番号の割り当て
clusters = agg_clustering.fit_predict(X)

print(f"各データの割り当て結果: {clusters}")

# デンドログラム(樹形図)を描きたい場合は scipy.cluster.hierarchy を使用します

6. まとめ

凝集型クラスタリングは、「全データからスタートして、最も近いペア同士を合体させる」というボトムアップの原則を繰り返す非常に分かりやすいアルゴリズムです。
k-means法とは異なり事前のクラスタ数を厳密に決めなくても全体の系統図(デンドログラム)が描けるため、データの構造をじっくり探索したいときに強力な武器となります!


PR

【機械学習の知識】k-means法(k平均法)が持つ4つの限界と実務での注意点

教師なし学習の代表的なクラスタリング手法である「k-means法(k平均法)」。シンプルで高速にグループ分けができるため非常に人気ですが、万能ではありません。今回は、実務で必ず直面するk-means法の4つの大きな限界と、その対策を整理します。

1. 【 概要 】

k-means法とは、データを「k個」のグループ(クラスタ)に自動で分類するためのアルゴリズムです。

中心となる点(重心)を動かしながらグループ分けを行う非常にシンプルな仕組みですが、アルゴリズムの特性上、データの形状や初期条件によってはうまく分類できない「限界」が存在します。この制約を正しく理解しておくことが、精度の高い分析への第一歩となります。


2. 【 基本手順(k-means法の4つの限界) 】

(1) クラスタの個数(k)を人間が事前に決める必要がある
(2) 重心の初期設定がランダムで、実行のつどクラスタ結果が異なることがある
(3) データは「1つのクラスタのみ」にしか割り当てられない(ハードクラスタリング)
(4) 外れ値(ノイズ)に非常に敏感で、重心が大きく引っ張られてしまう

3. 整理:4つの限界の具体的な内容と影響

k-means法が抱える4つの弱点について、それぞれがどのような現象を引き起こすのか詳しく見ていきましょう。

【 各限界の仕組みとデメリット 】

・限界(1):クラスタ数を事前に決める必要性
データの中に本来いくつのグループがあるか分からない状態でも、人間が「k=3」のように最初に指定しなければなりません。不適切な数を指定すると、無理やりグループが分割されてしまいます。

・限界(2):初期値依存(ランダム性)
最初に置く重心の位置をランダムに決めるため、プログラムを実行するたびに分類結果や精度が微妙に変わってしまいます。運悪く悪い初期値を選ぶと、最適なグループ分けにたどり着けません。

・限界(3):単一クラスタへの割り当て(ハード)
すべてのデータは、必ずどれか1つのグループにスパッと割り当てられます。「Aグループに70%、Bグループに30%属する」といった曖昧さ(確率的な所属度)を表現できません。

・限界(4):外れ値への敏感さ
データ群から極端に離れた「外れ値」が存在すると、平均値を計算する重心がその外れ値の方向に大きく引っ張られてしまい、正しいクラスタの中心が狂ってしまいます。

4. 関連して押さえたい「限界を克服するための対策と代替手法」

前述したk-means法の弱点をカバーするために、実際の開発現場ではどのような工夫がされているのでしょうか?

・初期値のランダム性を解決する「K-means++」
初期の重心を適当にバラバラに置くのではなく、お互いの距離がなるべく離れるように賢く初期配置する「K-means++」というアルゴリズムが現在の標準(デフォルト)になっています。

• クラスタ数を決めるための「エルボー法(Elbow Method)」
kの数を変えながらエラーの減り方をグラフにし、肘(エルボー)のように折れ曲がる最適なポイントを視覚的に見つけるテクニックがよく使われます。

• 曖昧さを表現したいなら「混合ガウスモデル(GMM)」
データがどのクラスタに何%属しているかを確率で表現したい場合は、k-meansの代わりにソフトクラスタリングができるGMM(Gaussian Mixture Model)を採用します。


5. 補足:Python(Scikit-learn)での対策設定コード例

Pythonでk-meansを実行する際、初期値ランダム問題を解決する「K-means++」を明示的に指定したり、複数回試行してベストを選ぶコード例です。
可読性の高いライトグレーの背景でまとめています。

# Scikit-learnのKMeansを使う場合の例
from sklearn.cluster import KMeans

# init='k-means++' で賢い初期配置を指定(これがデフォルトです)
# n_init=10 で初期位置を変えて10回試行し、一番安定した結果を採用する
kmeans = KMeans(n_clusters=3, init='k-means++', n_init=10, random_state=42)

# モデルの学習とクラスタ割当ての実行
clusters = kmeans.fit_predict(X)

# 各クラスタの重心座標を確認
print(kmeans.cluster_centers_)

6. まとめ

k-means法は非常に強力でスピーディーな反面、「クラスタ数の事前指定」「ランダムな初期値によるブレ」「単一割り当て」「外れ値への弱さ」という4つの限界を持っています。
K-means++などの改良手法を取り入れたり、データの前段階で外れ値をしっかりクレンジングしたりする工夫を行い、それぞれの特徴を理解した上でスマートに使いこなしましょう!


【DS検定対策】確率の原点!「サイコロの確率」と条件の読み方の基本

データサイエンスや統計学の基礎を学ぶうえで、確率の計算はすべての土台になります。今回は、もっとも身近な「サイコロ」を使った確率の基本問題と、条件の読み方の注意点を整理しましょう!

1. 【 問題 】

サイコロを1回振って、4よりも小さい数が出る確率はいくつか。


2. 【 解答と解説 】

【 ステップ1:全体(全事象)の確認 】
・サイコロの目は 1, 2, 3, 4, 5, 6 の 6通り です。

【 ステップ2:条件に合う場合の数を数える 】
・「4よりも小さい数」なので、該当するのは 1, 2, 3 の 3通り です。
(※「4以下」ではないため、4は含まれない点に注意!)

確率 = 3 / 6 = 1 / 2 = 0.5 (50%)

3. 整理:日本語の「より小さい」と「以下」の違い

確率や統計のテスト・試験で一番多いケアレスミスが、条件の言葉の取り違えです。

表現意味(不等号)「4」の場合に含まれるか?
4より小さい
(今回の問題)
4未満(< 4) 含まれない(1, 2, 3)
4以下 4を含んで下(≤ 4) 含まれる(1, 2, 3, 4)
4より大きい 4より上(> 4) 含まれない(5, 6)
4以上 4を含んで上(≥ 4) 含まれる(4, 5, 6)

5. DS検定形式:実戦4択クイズ

問:通常の6面体サイコロを1回投げるとき、偶数の目が出る事象と、4以上の目が出る事象は「排反(互いに排反)」であると言えるか。最も適切な説明はどれか。

① 排反である。偶数の目(2, 4, 6)と4以上の目(4, 5, 6)に共通する目がないため。
② 排反ではない。どちらの条件にも当てはまる「4」および「6」という共通の目が存在するため。
③ 排反である。サイコロを投げる試行において、すべての目の確率の総和が必ず1になるため。
④ 排反ではない。確率の足し算ではなく掛け算を使って同時に起きる確率を計算しなければならないため。

【 正解: ② 】

解説: 「排反(互いに排反)」とは、2つの事象が「同時に起こり得ない」関係のことを指します。
・偶数の目: 2, 4, 6
・4以上の目: 4, 5, 6
この2つには**「4」と「6」という共通の目(同時に起こるケース)が存在する**ため、排反ではありません(よって②が正解)。もし「偶数かつ奇数」のような絶対に同時にならない事象であれば排反となります。


6. まとめ

確率の基礎では、全事象と該当事象を正しく数えること、そして「より小さい(未満)」と「以下」のような日本語の境界線を正確に読み取ることが合格への近道です。 基礎固めを着実に進めていきましょう!



【DS検定対策】基礎数学の定番!「組合せ(C)を使った確率の計算」の解き方

データサイエンスやAIの基礎となる統計学において、確率の計算は避けて通れない重要分野です。今回は、袋から同時に玉を取り出すときの基本的な「組合せ(Combination)」を使った確率の計算問題を整理しましょう!

1. 【 問題 】

4個の白球と3個の赤玉を入れた袋から、同時に3個の玉を取り出す時、2個が白球、1個が赤玉である確率を求めよ。


2. 【 解答と解説 】

【 ステップ1:全体の総数を求める(分母)】
・全部で 7個(白4 + 赤3)の玉から、3個を選ぶ組み合わせは:
7C3 = (7 × 6 × 5) / (3 × 2 × 1) = 35通り

【 ステップ2:条件に合う組み合わせを求める(分子)】
・白球4個から2個を選ぶ: 4C2 = (4 × 3) / (2 × 1) = 6通り
・赤玉3個から1個を選ぶ: 3C1 = 3通り
・同時におこる事象なので掛け合わせます: 6 × 3 = 18通り

正解の確率 = 18 / 35

3. 整理:順列(P)と組合せ(C)の使い分け

確率の計算で迷いやすい「順列」と「組合せ」の違いを整理しておきましょう。

種類特徴と使い所
組合せ(C:Combination)
★今回使用
「順番を区別しない」選び方。
今回の問題のように「同時に3個取り出す」「何人かからメンバーを選ぶ」など、並び順に関係なくグループを作る場合はCを使います。
順列(P:Permutation) 「順番を区別する」並べ方。
「1着、2着、3着を決める」「暗証番号の数字を並べる」など、順番に意味がある場合はPを使います。

5. DS検定形式:実戦4択クイズ

問:白玉4個と赤玉3個が入った袋から、同時に3個の玉を取り出すとき、少なくとも1個は赤玉が含まれる確率として正しいものはどれか。

① 18 / 35
② 27 / 35
③ 31 / 35
④ 32 / 35

【 正解: ③ 】

解説: 「少なくとも1個は赤玉」という問題は、「余事象(すべて白玉になる確率)」を使って解くとスピーディーです。
・全体から「3個すべて白玉になる確率」を引きます。
・3個すべて白玉になる選び方: 4C3 = 4通り
・全体の選び方: 7C3 = 35通り
・すべて白玉の確率 = 4 / 35
・よって、少なくとも1個が赤玉の確率 = 1 - (4 / 35) = 31 / 35(③が正解)となります。


6. まとめ

DS検定や資格試験の数学パートでは、「組合せ(C)」の基本公式と、「少なくとも〜(余事象)」の考え方が頻出します。 計算の基本をしっかり押さえて、試験での得点源にしていきましょう!


【データマイニング】伝統的な標準プロセス「SEMMAメソッド」の5つのステップ

膨大なデータから価値ある知見を発見するデータマイニングのプロジェクトを成功させるには、行き当たりばったりではなく、体系化された標準的なプロセスに沿って進めることが不可欠です。今回は、SAS Instituteが提唱したデータマイニングの伝統的な手法論「SEMMAメソッド」の全体像を整理します。

1. 【 概要 】

SEMMAメソッドとは、データマイニングのプロジェクトを効率的かつ高品質に進めるための伝統的な5つの段階(プロセス)の総称です。

名称は、各ステップの頭文字である Sampling(サンプリング)、Exploration(探索)、Modification(修正)、Modeling(モデリング)、Assessment(評価) を繋ぎ合わせたものです。プロジェクトの全工程を迷わず進めるための羅針盤として広く活用されています。


2. 【 基本手順(5つのステップ) 】

(1) サンプリング(Sampling):膨大なデータから分析に適したサンプルを得る。
(2) 探索(Exploration):データを視覚化・統計量で確認し、関連や異常値を発見する。
(3) 修正(Modification):モデリングに向けてデータのクレンジングや変数変換を行う。
(4) モデリング(Modeling):最適なアウトプットを得るための予測モデルを構築する。
(5) アセット/評価(Assessment):有用性や信頼性の観点から構築したモデルを評価する。

3. 整理:各ステップの具体的な処理内容

SEMMAを構成する5つのステップが、実務でそれぞれどのような役割を持つのかを詳しく見ていきましょう。

【 各プロセスの具体的な中身 】

・ステップ(1):サンプリング(Sampling)
全データが巨大きすぎる場合や、計算コストを抑えたい場合に、母集団の傾向を正しく反映したサンプルデータを抽出します。データの質とサイズを最適化する最初の関門です。

・ステップ(2):探索(Exploration)
取得したデータをグラフ化したり基本統計量を出したりして、データの癖を深く理解します。
変数同士の隠れた相関関係や、予期せぬ異常値・外れ値をこの段階でいち早く発見します。

・ステップ(3):修正(Modification)
探索で見つかった問題点をクリアにするため、欠損値の穴埋め、異常値の除去、外れ値のクリッピング、新しい変数の生成(特徴量エンジニアリング)など、モデリングのためのデータ修正を行います。

・ステップ(4):モデリング(Modeling)
綺麗に整えられたデータに対し、機械学習アルゴリズム(決定木やニューラルネットワークなど)を適用し、目的とする予測や分類を行うためのモデルを実際にビルド(構築)します。

・ステップ(5):アセット(Assessment)
構築したモデルが「本当にビジネスで使える精度を持っているか」「過学習を起こしていないか」を、テストデータなどを用いて有用性・信頼性の観点から厳しく評価します。

4. 関連して押さえたい「CRISP-DMとの違い」

データマイニングの標準プロセスとして、SEMMAと並んで非常に有名なフレームワークに **「CRISP-DM(クリスプ・ディーエム)」** があります。

両者の最大の違いは「プロジェクト全体の視野の広さ」にあります。

CRISP-DMは、「ビジネスの課題定義」から始まり、「データの理解」「データの準備」「モデリング」「評価」、そして最終的な「展開(システム導入や実運用)」まで、ビジネスの文脈を含めた全6段階を網羅する包括的な枠組みです。

一方、SEMMAは、その中核となる「データを受け取ってから分析・モデル評価を行うまでの実務フェーズ(データ中心)」に特化しています。実務では、プロジェクト全体はCRISP-DMで管理し、分析の実作業はSEMMAのステップに沿って進めるといった使い分けがなされます。


5. 補足:SEMMAメソッドが現場で選ばれる理由

SEMMAメソッドが長年支持されてきた理由は、**「エンジニアやアナリストが次に何をすべきかが直感的に分かりやすい」**という点にあります。

データ分析の現場では、「データを取ってきたが、どう処理していいか分からない」「モデルを作ったはいいが、どこが悪いのか検証できていない」というボトルネックが頻発します。

「まずはサンプリングして、全体を探索し、データを修正してからモデルを作り、最後に評価する」という直線的かつ王道のフローを頭にインプットしておくことで、分析プロジェクトの品質とスピードを安定させることができます。


6. まとめ

データマイニングの伝統的な手法論である「SEMMAメソッド」。サンプリング、探索、修正、モデリング、評価という5つのステップを順番に踏むことで、データの迷子にならず確実に対象を分析・モデル化することができます。標準プロセスをしっかり体に染み込ませ、実務でのデータ分析力をさらに高めていきましょう!