時間割で大学生を分類する [カニバリズム山脈クラスタリング ]
カニバリズム山脈(http://cannibalism.jp/)という大学生の時間割を共有するサービスを京大学内向けに運営している。
多くの学生の時間割のデータが集まっているので、これをデータ・クラスタリングして大学生を分類できないかと思ってやってみた。
データ・クラスタリング - Wikipedia
動機としてはどちらかというと試験期間前の現実逃避という色が強い。
説明
使ったデータは、ユーザーの名前(Twitter ID)とそのユーザの登録してる授業科目のIDで、数はおよそ300ユーザーくらい。
クラスタリングには『集合知プログラミング』のコードをPythonからRubyにほとんどそのまま書きなおしたプログラムを使った。データにうまく対応させるために書き換えたりした部分もある。
データを分類するためには時間割の類似度を測ることが必要なのだけど、これにはTanimoto係数を使った。Tanimoto係数は集合の類似度を測る指標で、単純に集合の共通部分の要素数を和集合の要素数で割ることで求められる。
Aの要素数 Bの要素数 AとBの共通部分の要素数
結果
下は階層的クラスタリングしてデンドログラムというグラフにしたもの。時間割の類似度が高いユーザ間ほど直線で直接結ばれやすくなる。
詳細画像:http://i.imgur.com/GAjcm.png
次のはどの塊がどの学部学科に対応するかデンドログラムに手動で注釈をつけてみたもの。同じ学部回生がクラスタに集まってることが分かる。
専門科目の多い学部学科ほどうまく分類しやすいみたい。
詳細画像:http://i.imgur.com/s53nB.png
次のは多次元尺度構成法を使って2次元平面に写しだしたもの。時間割の似ているユーザほど近くに位置して、似ていないユーザほど遠くに位置するようになる。
デンドログラムと比べるとはっきりしないけど、同じ学部学科や学年が集まりやすいことが分かる。
詳細画像:http://i.imgur.com/t8r5Q.png
まとめ
時間割という枠の限られたデータだからうまくいかないかもしれないかと思ったけど、意外とうまくクラスタリングできて良かった。
類似度を用いると同じ学部学科の人間を推測できたりして色々と楽しそうなことができるので、これからのサービス開発に役立てていけたらいいなと思う。
『集合知プログラミング』にはデータ・クラスタリングなどの機械学習のトピックを分かりやすく説明されている素晴らしい本なので、大学生の人はつまらない試験勉強なんかせずにこの本を読みましょう。
コードとか
- 作者: Toby Segaran,當山仁健,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/07/25
- メディア: 大型本
- 購入: 70人 クリック: 1,791回
- この商品を含むブログ (258件) を見る