分割型クラスタリングアルゴリズムの種類とは?K-means法と最近傍法を徹底解説
分割型アルゴリズムの2つの種類
分割型(partitional)クラスタリングアルゴリズムには、主に以下の2種類があります。
- K-meansクラスタリング(k平均法)
- 最近傍法(Nearest Neighbour Algorithm)
K-meansクラスタリング(k平均法)とは
K-meansクラスタリングは、最も広く利用されている分割型アルゴリズムです。データセット内の各データを、新しく形成された複数のクラスタのうちいずれか1つに再割り当てします。個々のレコードやデータポイントは、距離または類似度の尺度を用いて、最も近いクラスタへと割り当てられます。
K-meansクラスタリングの主な手順は以下の通りです。
- K個の初期クラスタ重心 c1, c2, c3, …, ck を選択します。
- 各インスタンス x を、その重心が x に最も近いクラスタ S に割り当てます。
- 各クラスタについて、そのクラスタに含まれる要素に基づいて重心を再計算します。
- 収束が完了するまで、割り当て処理を繰り返します。
- オブジェクト(データポイント)を K 個のクラスタに分離します。
- クラスタ中心(重心)は、そのクラスタ内の全データポイントの平均値として定義されます。
- 距離関数を用いて、各ポイントを重心が最も近いクラスタに割り当てます。
平均値の初期値は任意に設定されます。ランダムに割り当てることもできますし、最初の k 個の入力データの値をそのまま利用することも可能です。収束判定は二乗誤差に基づくのが一般的ですが、必ずしもそれである必要はありません。たとえば、一定回数の反復後に終了する手法もあります。収束しない場合でも確実に処理を停止できるよう、最大反復回数を設けることも有効です。
K-meansアルゴリズムの流れ
入力
D = {t1, t2, …, tn} // 要素の集合
k // 目標とするクラスタ数出力
K // クラスタの集合
K-meansアルゴリズムの手順:
- 平均値 m1, m2, …, mk の初期値を設定する
- 繰り返し:各項目 ti を、最も近い平均値を持つクラスタに割り当てる
- 各クラスタの新しい平均値を計算する
- 収束基準が満たされるまで 2〜3 を繰り返す
最近傍法(Nearest Neighbour Algorithm)とは
単一リンク法(single link technique)に類似したアルゴリズムが、最近傍法です。この逐次型アルゴリズムでは、アイテムが反復的に、現時点で最も近いクラスタへと統合されていきます。また、閾値 t を設けることで、アイテムを既存のクラスタに挿入するか、あるいは新しいクラスタを生成するかを判断できます。
最近傍法アルゴリズムの流れ
入力
D = {t1, t2, …, tn} // 要素の集合
A // 要素間の距離を表す隣接行列出力
K // クラスタの集合
最近傍法の擬似コード:
K1 = {t1};
K = {K1};
k = 1;
for i = 2 to n do
K 内のクラスタ Km から、dis{ti, tm} が最小となる tm を探索する;
if dis{ti, tm} ≤ t then
Km = Km ∪ ti
else
k = k + 1;
Kk = {ti}まとめ
分割型クラスタリングでは、K-means法がシンプルかつ高速である一方、クラスタ数 k を事前に指定する必要があります。一方、最近傍法は閾値 t によってクラスタ形成を制御でき、階層的なアプローチに近い挙動を示します。データの性質や目的に応じて、適切なアルゴリズムを選択することが重要です。
-
主要なハッシュアルゴリズム6選!MD5・RSA・SHAなどの特徴と用途を徹底解説
ハッシュアルゴリズムとはハッシュアルゴリズムとは、特定の型を持つ任意の長さの入力データを、固定長の出力ビット列へと変換する数学的アルゴリズムです。どんな入力でも受け付け、ハッシュテーブルを利用して一定の形式を持つメッセージへと変換する仕組みを持っています。ここでは、広く利用されている代表的なハッシュアルゴリズムを6つ紹介します。MD5(Message Digest Algorithm 5)MD5は「メッセージダイジェストアルゴリズム」の略称で、メッセージの認証、コンテンツの検証、デジタル署名などに用いられる暗号プロトコルです。ハッシュ関数に基づいており、送信側が送ったファイルと受信側が受け取っ
-
Blowfishアルゴリズムの仕組みとは?サブキー生成とデータ暗号化の流れを解説
Blowfishアルゴリズムの概要Blowfish(ブローフィッシュ)は、対称鍵方式のブロック暗号アルゴリズムの一つで、一度に64ビットのデータブロックを暗号化します。Feistelネットワーク構造を採用しており、その動作手順は「サブキー生成」と「データ暗号化」という2つの段階に分けられます。動作の2つの主要プロセスサブキー生成:最大448ビット長の秘密鍵を、合計4168ビットのサブキー群へと変換するプロセスです。データ暗号化:ネットワークを16回反復処理します。各ラウンドでは、鍵に依存する置換(permutation)と、鍵およびデータに依存する代入(substitution)が行われます。