バイオプログラミング第2 慶應義塾大学理工学部 生命情報学科 榊原康文、佐藤健吾 クラスタリング Ø データを似たもの同士に分ける Ø 例. 空間上の点を距離が近いもの同士に分ける Ø クラスタ : 似たもの同士の集まり クラスタリング Ø データを似たもの同士に分ける Ø 例. 空間上の点を距離が近いもの同士に分ける 4 個のクラスタ Ø クラスタ : 似たもの同士の集まり 生物における様々なクラスタ 蛍光タンパク 哺乳類 糖分解酵素 魚類 機能の類似したタンパク質 進化的に近縁な生物種 k-means クラスタリング Ø 空間上の点をクラスタリングする手法の 1 つ Ø あらかじめクラスタの個数を指定する (k 個) Ø クラスタリングの手順 1. 各点を k 個のクラスタのどれかへランダムに割り当てる 2. k 個のクラスタそれぞれについて中心点を求める 3. 各点について k 個のクラスタ中心点との距離を計算する。 各点を最も近い中心点のクラスタへ割り当て直す 4. 2. と 3. を繰り返す 5. クラスタの割り当てが変化しなくなったら終了する 具体例 Ø まずはデータを散布図で眺めてみる Ø クラスタの個数を指定する (k = 4 が良さそう) 具体例 Ø 各点を 4 個のクラスタのどれかへランダムに割り当てる (赤、紫、水、緑) 具体例 Ø 4 個のクラスタそれぞれについて中心点を求める (◆ : クラスタ中心点) 具体例 Ø 各点について k 個のクラスタ中心点との距離を計算する。 各点を最も近い中心点のクラスタへ割り当て直す 具体例 Ø クラスタの中心点を求める。各点をクラスタに割り当て直す (2 回目) 具体例 Ø クラスタの中心点を求める。各点をクラスタに割り当て直す (3 回目) 具体例 Ø クラスタの中心点を求める。各点をクラスタに割り当て直す (4 回目) 具体例 Ø クラスタの割り当てが変化しなくなったら終了する (8 回目で終了した) プログラムのヒント Ø 空間上の点を構造体で表現する struct point { double x, y; /* 2 次元空間の座標 */ int clust; /* 現時点でのクラスタの番号 */ }; Ø 構造体の配列を使って、複数の点を格納する Ø i 番目のクラスタ中心点の座標 (clust==i な点の座標の和) / (clust==i な点の個数) Ø 点 p と点 q の距離 sqrt( (p.x - q.x)^2 + (p.y - q.y)^2 ) レポート課題 Ø 使用する点のデータ (200 個) Ø http://www.dna.bio.keio.ac.jp/lecture/progen2/data/kadai.points Ø 1 行につき 1 個の点の座標が書かれている 1.39297476767153 -1.83731892533098 -11.9737970429392 9.80189535609729 0.633617920304605 -5.66327735378856 4.93843116171288 3.18323357449407 -1.89887681640184 11.1991822051262 ... x 座標 y 座標 Ø これらの点を散布図で示し、クラスタの個数を決める レポート課題 Ø k-means クラスタリングを行う Ø 途中経過を図で示す (このスライドの図を参考に) Ø 各点をクラスタへランダムに割り当てた Ø クラスタの中心点を求めた Ø 各点をクラスタへ割り当て直した ... Ø クラスタリングが終了した Ø 今回の課題は、今週来週と 2 週間かけて行う
© Copyright 2025