集合知プログラミング
・・・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・・・ 一つのソースからのデータを加工することだけでも、限りない数のアプリケーションを作れる可能性を秘めている。 複数のソースのデータを組み合わせたり、さらにそれをあなた自身のアプリケーションのユーザから人力されるデータと組み合わせると、その可能性は図り知れない。 いろいろなサイトでさまざまな方法で作り上げられたデータを組み合わせる能力というのは、集合知を創出する上での重要な要素である。 オープンなAPIを持ったサイトを探したい方は、まずはPmgmmmableWeb(http://www.programmableweb.com)を見てみるとよい。 各章の概要 本書のすべてのアルゴリズムでは、やる気が湧くように、そしてすべての読者が容易に理解できることを期待して、実際に発生しそうな問題を取り上げている。 特定分野の知識を要する問題を扱うことは避けた。十分に複雑であり、多くの人が関心を持ちそうな問題に焦点を合わせている。 1章 集合知への招待 機械学閥の概念について説明をする。機械学習がさまざまなフィールドにどのように適用されているのか、さまざまな人々から集めたデータから新たな知見を引き出すために機械学習がどのように利用されているのかについて述べる。 2章 推薦を行う メディアや多くのオンラインショップで商品を推薦するために用いられている協調フィルタリングという技術を紹介する。 本章にはソーシャルプックマークサイトから人々へリンクを推薦することや、MovieLens のデータセットを用いて映画を推薦するシステムを構築することが含まれている。 3章 グループを発見する 2章のいくつかのアイデアをさらに押し進めて、膨大なデータセットから似ているアイテムを発見して、クラスタリング(分類)するための手法を2種類紹介する。 本章ではクラスタリングを用いて人気のWeblogのグループを探し出す方法や、ソーシャルネットワークサイトから、人々の「望 み」のグループを探し出す方法について紹介する。 4章 検索とランキング クローラ、インデクサ、クエリエンジンなど、検索エンジンを構成するさまざまなパーツについて説明する。 あるサイトへ外部のサイトから張られたリンクを基にそのページのスコアを算出するPageRank アルゴリズムについて説明し、どのキーワードがさまざまな結果と関連があるかを学習するニューラルネットワークの作り方について説明する。 5章 最適化 数えきれないほどの解決策が候補としてある中から、最適なものを探し出すためのアルゴリズムを紹介する。 ここで紹介するアルゴリズムが幅広く利用されている例として、ある人々の集団が特定の目的地へ旅行をする際にベストな便を探し出す例や、学生に寮を割り当てるための最良の方法を探し出す方法、交差が最小限になるようなネットワークのレイアウトを見つける方法について紹介する。 6章 ドキュメントフィルタリング 商用、非商用を問わず、多くのスパムフィルタで利用されているベイジアンフィルタについて説明する。 これは文書中で使われている単語のタイプや、その他文書中に出現するさまざまな特徴を基に分類を行う。 実際の自動分類の様子を示すため、RSS 検索結果に適用する。 7章 決定木によるモデリング 決定木を予測するための手法としてだけではなく、決定がなされる過程をモデリングするために用いる方法も紹介する。 まずは、仮想のサーバーログデータから、あるユーザが有償の購読者になるかどうか予測をする決定木を作る。 その他の例としては、データを実際のWebサイトから取押して不動産の価格や"hotness"をモデリングする例を紹介する。 8章 価格モデルを構築する 5章で紹介した最適化のアルゴリズムも適用しながら、K近傍法を利用して、単に分類するだけでなく、数値を予測する問題にアプローチする。 ここではeBayのAPIを利用してオークションの最終価格を予想する。 9章 高度な分類:カーネルメソッドとSVM ここではサポートベクトルマシンを使って、オンラインデートサイトで、カップルになりそうなペアを探す方法について説明する。 サポートベクトルマシンはかなり高度な概念である。 本章では他の手法との比較も交えて紹介する。 10章 非負値行列因子分解 比較的新しい手法である、非負値行列因子分解(non-negative matrix factorization)について紹介する。 これはデータの中から独立した特徴たちを発見するために使われる。 多くのデータセットで、アイテムは私たちが事前には知らない、いくつかの特徴を組み合わせたものから構成されている。 この手法はこれらの特徴を発見しようというものである。 ここでは、いくつかのニュース記事を用い、ある記事の中のテーマを記事同士を利用して発見する例を紹介する。 11章 進化する知能 遺伝的プログラミングについて紹介する。 これは、進化のアイデアを利用して特定の問題を解くためのアルゴリズムを自動的に作成する一連の技術であり、最適化などを超えた非常に洗練されたやり方である。 例として、単純なゲームをプレイするプログラムを紹介する。 コンピュータプレーヤーは最初は弱いが、ケームをプレイするたびに、自分のコードを改良していく。 12章 アルゴリズムのまとめ 本書で紹介した機械学習や統計学のすべてのアルゴリズムを振り返る。 そして、いくつかの適当な問題に対して比鮫する。 これにより、アルゴリズムの動作の理解を助け、それぞれのアルゴリズムがデータをどう分割するかが見えるようになる。 付録A サードパーティによるライブラリ 本書で使用されたサードバーテイのライブラリについて、入手先とインストール方法について解説する。 付録B 数式 本書を通じて紹介してきた数学的な概念について、数式、詳細、コードについて説明する。 付録C 日本語テキスト処理 日本語テキストの分かち書きについてのヒント。 各単末にあるエクササイズを通じ、アルゴリズムを拡張して、もっと強力にするためのアイデアを得ることができる。 |