森に自家発電センサーネットワークを張り巡らす
Preventing forest fires with tree power
http://web.mit.edu/newsoffice/2008/trees-0923.html
<p>木に温度・湿度センサーをつけて無線ネットワークで結び、しかも電気は木が発生する微弱な電力でまかなうという実用目前の研究。ネットワークの構成には 1エーカー(64メートル四方)中 4本の木に取り付ける必要がある。東京ドーム(11.5エーカー)の広さなら 46本に相当する。</p>
<p>電力は木と土壌の pH の差によって生まれ、市販のバッテリーを少しずつ充電する。この電力で、一日に4回の温度・湿度データの収集ができる。火事の際はすぐに知らせる。木が非常に微弱な電気を発生することは昔から知られていたが、その仕組みも利用方法も未開拓だったという。</p>
<p>ワイアレス・センサー・ネットワークの開発は Voltree Power (http://voltreepower.com) が行った。国土防衛、環境・農業のための計測、天候の研究を主な用途としている。</p>
yooreeka - Algorithms of the Intelligent Web のソースコードが Google Code に
Algorithms of the Intelligent Web のソースコードが、LGPG のライブラリとして Google Code に登場した。yooreeka はユーレカと発音してよいのだろう。英語の eureka のスペルをいじったもので、元はギリシア語。日本語では「我、発見せり」と訳される。データの山から集合知を引き出すライブラリとして、いい名前だ。
http://code.google.com/p/yooreeka/
http://www.manning-sandbox.com/thread.jspa?threadID=26417&tstart=0
Hadoop本が O'Reilly の Rough Cuts に登場
Apache Hadoop の本が Safari のドラフト版書籍 Rough Cuts に登場した。Hadoop は、Google が crawler のインデックス作成に用いている大量データシステム基盤、Google File System (GFS) と MapReduce のオープンソース実装で、現在は Yahoo! のインデックス作成にも使われている。
http://safari.oreilly.com/9780596521974
<p>Hadoop は、Apache Lucene の開発者 Doug Cutting が書いたもの。彼らの見積もりによれば、10億ページをインデックス化するには、ハードだけでも5000万円するが、それでも検索エンジンアルゴリズムの民主化のためには、やる価値のある仕事だということで始まった。Doug は後に Yahoo! に雇われ、そして Yahoo! は 2008年2月、実働環境下で Apache Hadoop を動かしていることを発表した。
その発表によると、Yahoo! の Hadoop cluster は
<ul>
<li>10,000 core の linux cluster</li>
<li>1兆のリンク</li>
<li>圧縮状態で 300TB のデータ</li>
<li>5ペタバイトのディスク (ペタはテラの次: MB → GB → TB → PB)</li>
</ul>
のデータを処理している。以前のシステムに比べ、66%の時間短縮が実現できているという。
</p>
<p>規模の大小はあれ、同様のことが、中小企業や大学の研究室はおろか、一個人でも Amazon EC2 を使えば実現できてしまう。MapReduce 自体は、ウェブのインデックス作成に特化したものではなく、大量のデータを分散処理するための枠組みだから、応用範囲は広い。用途が見えてきて利用が広がれば、Hadoop cluster を有料で貸すサービスも出現するかもしれない。</p>
ci-bayes - ベイジアンフィルターの Java 実装
Toby Segaran の Programming Collective Intelligenct のベイジアン分類器を Java で実装した ci-bayes というプロジェクトが java.net に公開されていた。
https://ci-bayes.dev.java.net/
<p>
使い方は簡単。
<pre class="prettyprint">FisherClassifier fc=new FisherClassifierImpl();
fc.train(“The quick brown fox jumps over the lazy dog’s tail”,”good”);
fc.train(“Make money fast!”, “bad”);
String classification=fc.getClassification(“money”); // should be “bad”
</pre>
</p>
<p>日本語の場合は、文章を単語に切り分ける処理であるWordListerの実装をデフォルトのものから変更する必要がある。</p>
『集合知プログラミング』のR実装
Rも相性がいいですね。
http://d.hatena.ne.jp/mrkn/20080725/collective_intelligence_in_gnu_r
<p>R や SQL のように、データの集合に対して同じ演算を一括して実行するような記述ができる言語は、協調フィルタリングを簡潔に書ける。より正確には、繰り返し処理を書かないで済む。</p>
<p>とはいえ、『集合知プログラミング』で使われている Python の list comprehension もきれい。オブジェクト指向言語なら、”Collective Intelligence in Action” で示されているように、データそのものに演算を定義することによっても、読みやすいコードになる。</p>
<p>協調フィルタリングは同じ演算を均一に行うけど、他のデータマイニング手法、例えば k-means clustering などは、条件による処理の分岐が欠かせないし、繰り返し処理も書くことになるだろう。</p>