集合知イン・アクション (Collective Intelligence in Action) by Satnam Alag

Share/Save

集合知イン・アクション
Collective Intelligence in Action

Toby Segaran の Programming Collective Intelligence に遅れること一年、この本は、Webアプリのプログラマ向け集合知実装書としては、第二弾といえる。Toby本との大きな違いは、アプリケーションへの組み込みを考慮した内容となっているということ。ユーザからみて、集合知はどのようにアプリケーションに体現されるのか、システムのアーキテクチャはどうあるべきか、実装はどうなるかを、具体例を挙げて説明している。特に実装に関しては、詳細なER図、クラス図、SQL、Javaのソースコードを提示している。

Toby本はアルゴリズム実装のための本、Satnam本はアプリへの組み込みのための本、と考えてよい。数学や機械学習に対する知識がなくとも読めるのは Toby本と同様。しかし、クラス図、ER図が読めて、GoF の Strategyパターンを解説なしに用いられても理解できる程度のスキルは求められる。

Gathering intelligence

このパートは、データの収集方法について解説している。

Understanding Collective Intelligence

ドットコムバブル後のウェブアプリケーションは、表現することを覚えたユーザの参加によって変革の時を迎えていると説く。Amazon の商品レビュー、YouTube のタグづけ、ブログなどは、全てユーザの参加によって成り立っている。ユーザの参加によって生じるデータからは、ある種の「知」を生み出すことができる。ウェブアプリは、ユーザから得られる集合知を用いてサイトをパーソナライズすることで、ユーザを引きつけようと努力している。

著者は、本書における集合知 (Collective Intelligence) を、「他者から提供される情報を効果的に用いることでアプリケーションの価値を高める」ものであると定義する。他者とは、アプリのユーザがアプリ内部で発生させるものに止まらず、外部サイトの情報までもを意味する。生の情報を、意味のある「知」に昇華させるために、機械学習、テキスト解析、データマイニングの初歩の初歩を解説し、それらの技術を用いて、集合知をどのようにアプリに組み込めば良いのかを詳述する。

「知」を得るための方法を、大きく二つに分けている。コンテンツベースの方法 (content-based approach) と協調ベースの方法 (collaborative-based approach) である。多くの場合、ユーザは、ブログやレビューコメントのように、構造化されていないテキストをコンテンツとして提供する。これを解析するために、テキストマイニングなどの手法が用いられる。コンテンツベースの手法では、コンテンツそのものについてのみ、知ることができる。コンテンツから得られた情報を、ユーザの行動と結びつけて用いる手法を、協調ベースの方法と呼んでいる。アプリケーションは、コンテンツがあればそれで良かったコンテンツ中心の世界から、ユーザの行動をも分析して動作の改善に活かす、ユーザ中心の世界に移行しつつある。

情報は三種類に分けられる。レビューやランク付け、投票、タグ、ブックマーク、閲覧履歴などなどの、直接解析できるもの。テキストマイニングなどを通す必要のあるユーザコンテンツ。そして、テキスト解析、機械学習、データマイニングの結果得られる高次の情報。

Learning from User Interaction

Extracting Intelligence from Tags

コンテンツ中心のアプリケーションでは、製作者によって用意されたナビゲーションを用いてユーザはコンテンツを渡り歩く。しかし集合知を用いると、タグクラウドに代表される、ユーザに最適化されたナビゲーションを提供することができる。

タグには、コンテンツ提供者によってつけられるもの、ユーザによってつけられるもの、自動生成されるものの三種が存在する。コンテンツ提供者によるタグは、コンテンツの意味を適切に表現することができる、広い視点から見たコンテンツの位置づけを表現できる、用語を適切に制限することができるなどの利点がある一方で、コストの観点から、コンテンツ数の増大に対応しにくいという欠点がある。ユーザによるタグは、コンテンツの意味を表現することができる、ユーザとコンテンツの間の関係を表現することができるという利点があるが、タグテキストの表現を統一しにくいという問題がある。自動生成タグは、人間によるタグ付けが行われていないコンテンツからもタグを生成できるという利点があるものの、コンテンツテキスト中から抽出を行うため、重要度の低いタグが付きがちであるとか、複数の単語から成る複合語をタグにするには辞書が必要であるという欠点がある。

ユーザとアイテムは、タグを用いて同じメタデータで表現できる。コンテンツベースの方法では、アイテムを解析することにより、それぞれのアイテムを表現するタグのタームベクターを生成する。アイテムを訪れたユーザは、アイテムのタームベクターを取り込んでゆく。すると、ユーザもアイテムも共に、タームベクターで表現することができる。協調ベースの方法では、タグ付けに代表される、ユーザの行動からメタデータを生み出す。アイテムのメタデータは、アイテムに関連付けられたタグの相対的な頻度から算出される。ユーザとアイテムのメタデータの生成にタグを用いる場合、タグを重みづけしたタームベクターの採用を検討することになる。

メタデータとしてタームベクターを用いると、タグクラウドはユーザやアイテムが持つメタデータの視覚的表現となる。コンテンツベースの方法、協調ベースの方法、またはそれらの組み合わせによって生成されたタームベクターを用いて、それぞれのユーザ毎にタグクラウドを作成することができる。アイテムに対しても同様にタグクラウザが存在する。

タグクラウド中のタグをクリックすると、レコメンデーションエンジンが呼び出される。すると、そのタグと、そのユーザに最適な内容を検索することができる。タグによって検索を拡張する手法は、Google に対抗して 2005年に立ち上げた Yahoo の MyRank でも用いられている。Google が、ページ間に張り巡らされたリンクを解析する PageRankアルゴリズムを基本とするのに対して、MyRank は、ユーザの友人から構成されるコミュニティによって付けられたタグを基本指標として用いる。PageRank がリンクによるページへのランク付けであるのと同様に、MyRank はタグをページへのランク付けに採用した。

この例にみるように、タグと、タグが現れたコンテキスト、そしてユーザのメタデータをサーチエンジンへの入力とすることで、より適切な検索結果を得ることができる。

Extracting intelligence from content

Searching the blogosphere

Web crawling

Discovering intelligence from data

Data mining: process, toolkits, and standards

この章では、データマイニングアルゴリズムの概要と、データマイニングツール WEKA を紹介している。

学習対象のデータは複数の「例(example)」で成り立っており、各例には複数の属性(attribute)が付いていると定義する。属性には三種類ある。年齢に代表される数値(numerical)、大・中・小のような、並び順の決まったカテゴリ(ordinal)、男・女のような、並び順の決まっていないカテゴリ(nominal)、である。数値をカテゴリに、カテゴリを数値に、という相互変換は、ルールを決めればできる。

学習には、教師付き学習(supervised learning) と教師なし学習(unsupervised larning) の二種類が存在する。教師付き学習は、入力値から出力値を予測する場合に用いられる。決定木(けっていぎ, decision tree)、ニューラルネットワーク、回帰分析(regression)、ベイジアンネットワーク(Bayesian belief networks) などが該当する。出力がカテゴリで場合、予測器は分類器と呼ばれる。出力が連続数値である場合、回帰問題となる。
教師なし学習は、データの中からパターンを見つけてクラスタの形成を行う。K-meansクラスタリング、階層クラスタリング、密度ベースクラスタリングなどが該当する。

本章では、数式なしで、文章と図のみで、次の学習アルゴリズムの概要を説明している。

  • 決定木
  • k-meansクラスタリング、階層クラスタリング、密度ベースクラスタリング
  • 回帰
  • ニューラルネットワーク: Multi-layer perceptron(MLP)、Radial basis functions(RBF)
  • サポートベクターマシン (Support vector machine: SVM)
  • ベイジアンアルゴリズム (Bayesian algorithm): Naive Bayes, Bayesian belief network(BBN)

この後は、WEKA のインストールと、簡単な Javaプログラムによる動作確認、さらには、Java でのデータマイニング標準インタフェースである JDM の紹介を行っている。

Building a Text Analysis Toolkit

Clustering

Making predictions

Applying intelligence

Intelligent search

Building a Recommendation Engine

in