具体例で学ぶ!情報可視化のテクニック

第2回 階層的クラスタリングによる特徴抽出

この記事を読むのに必要な時間:およそ 6 分

はじめに

前回は,情報可視化の基本的な考え方について,HatenarMapsなどの実例を示しながら説明しました。第2回以降は,Java言語を使用して実際にプログラムを作成することで,情報可視化の実践例を示していきたいと思います。

目標

本連載では,はてなブックマークの人気エントリーのデータを可視化することを最終的な目標にします。可視化にあたっては,統計学的観点から「階層的クラスタリング」,視覚的観点から「ツリーマップ」の手法をそれぞれ用いることにします。

Java開発環境のセットアップ

手元にJavaの開発環境がなく,本連載のプログラムを試したい場合には,Sun Microsystemsが提供している統合開発環境,NetBeansの導入をおすすめします。 NetBeansはオールインワン型のIDEですので,インストールするだけで特別な設定の必要もなく,一通りの開発環境を整えることができます。

NetBeansのインストール時にはJDK(Java Development Kit)が必要になりますので,あらかじめインストールしておきましょう。また,NetBeansのダウンロードページには何種類ものパッケージが用意されていますが,「Java SE」または「すべて」のパッケージを選択すれば良いでしょう。

ソースコードのダウンロード

今回作成するプログラムのソースコードは,こちらから一括してダウンロードすることができます。ZIPファイルを展開して生成されるフォルダを,プロジェクトとしてNetBeansに読み込むことも可能です。

階層的クラスタリングの概要

今回は,データを可視化しやすくするための「前処理」として,統計学的手法を使ってデータの特徴を抽出する過程を取り上げます。統計学的手法には様々なものがありますが,本連載では「階層的クラスタリング」を扱うことにします。

階層的クラスタリングとは,類似性の高いデータ同士をグループ化し,さらにそのグループ同士をまとめて親グループ化するという作業を繰り返すことで,グループの階層構造を作り出す手法です図1)。

階層的クラスタリングのアルゴリズムの手順を示すと,次のようになります。

  1. データ集合の中から,互いの距離が最も近くなるデータ項目の対を探す。
  2. その項目対を,1つのクラスタに統合する。
  3. そのクラスタと残りのデータ集合の中から,互いの距離が最も近くなる要素対を探して統合する。
  4. 上記の処理を,データ全体が1つのクラスタに統合されるまで繰り返す。

図1

図1 clustering

以上の手順によって,ツリー状のクラスタ構造が形成されます図2)。

各クラスタのノードが常に2つの子ノードを持つことから,このツリーは二分木(binary tree)となります。

図2

図2 clustering_tree

本連載では,多次元ベクトルの集合を対象とした階層的クラスタリングを行います。基礎的なベクトル演算のみを使用しますので,ベクトルの知識がなくても,内容を理解する上で特に問題はありません。

著者プロフィール

浜本階生(はまもとかいせい)

1981年生まれ。栃木県出身。東京工業大学情報工学科卒業。技術やアイデアの組み合わせから面白いソフトウェアを生み出したいと日々考えている。現在,ブログの解析および視覚化の試みとして「TopHatenar」「Blogopolis」を開発,運用中。

URLhttp://d.hatena.ne.jp/kaiseh/

コメント

コメントの記入