はじめに
前回は,情報可視化の基本的な考え方について,HatenarMapsなどの実例を示しながら説明しました。第2回以降は,Java言語を使用して実際にプログラムを作成することで,情報可視化の実践例を示していきたいと思います。
目標
本連載では,はてなブックマークの人気エントリーのデータを可視化することを最終的な目標にします。可視化にあたっては,統計学的観点から「階層的クラスタリング」,視覚的観点から「ツリーマップ」の手法をそれぞれ用いることにします。
Java開発環境のセットアップ
手元にJavaの開発環境がなく,本連載のプログラムを試したい場合には,Sun Microsystemsが提供している統合開発環境,NetBeansの導入をおすすめします。 NetBeansはオールインワン型のIDEですので,インストールするだけで特別な設定の必要もなく,一通りの開発環境を整えることができます。
NetBeansのインストール時にはJDK(Java Development Kit)が必要になりますので,あらかじめインストールしておきましょう。また,NetBeansのダウンロードページには何種類ものパッケージが用意されていますが,「Java SE」または「すべて」のパッケージを選択すれば良いでしょう。
ソースコードのダウンロード
今回作成するプログラムのソースコードは,こちらから一括してダウンロードすることができます。ZIPファイルを展開して生成されるフォルダを,プロジェクトとしてNetBeansに読み込むことも可能です。
階層的クラスタリングの概要
今回は,データを可視化しやすくするための「前処理」として,統計学的手法を使ってデータの特徴を抽出する過程を取り上げます。統計学的手法には様々なものがありますが,本連載では「階層的クラスタリング」を扱うことにします。
階層的クラスタリングとは,類似性の高いデータ同士をグループ化し,さらにそのグループ同士をまとめて親グループ化するという作業を繰り返すことで,グループの階層構造を作り出す手法です(図1)。
階層的クラスタリングのアルゴリズムの手順を示すと,次のようになります。
- データ集合の中から,互いの距離が最も近くなるデータ項目の対を探す。
- その項目対を,1つのクラスタに統合する。
- そのクラスタと残りのデータ集合の中から,互いの距離が最も近くなる要素対を探して統合する。
- 上記の処理を,データ全体が1つのクラスタに統合されるまで繰り返す。
以上の手順によって,ツリー状のクラスタ構造が形成されます(図2)。
各クラスタのノードが常に2つの子ノードを持つことから,このツリーは二分木(binary tree)となります。
本連載では,多次元ベクトルの集合を対象とした階層的クラスタリングを行います。基礎的なベクトル演算のみを使用しますので,ベクトルの知識がなくても,内容を理解する上で特に問題はありません。

