タグ

ブックマーク / shuyo.hatenablog.com (28)

  • Mahout の開発環境を Maven+Eclipse で作る (1) - 木曜不足

    Mahout in Action 買ったんだけど、開発環境の作り方についてはほとんど何も書いてない。いや、それも大事なことだと思うぞ。 というわけで、Mahout 用の開発環境をちょっとまじめに作ってみた。 とりあえず今回は Mahout in Action のサンプルコードを Eclipse 上で動かすところまで。 いろいろインストール 必要なものをインストール。今回入れたのはこんな感じ。それぞれの入れ方は略。まあ JAVA_HOME を設定して、パスを通すぐらい。 OS が Windows 2008 x64 なので、Java と Eclipse は x64 版を入れている。 Cygwin Java SDK 6u23 x64 Eclipse 3.6(helios) SR1 x64 Maven 3.0.2 (Hadoop 0.21.0 0.20.2) Cygwin は Mahout が D

    Mahout の開発環境を Maven+Eclipse で作る (1) - 木曜不足
  • Mahout の開発環境を Maven+Eclipse で作る (2) Hadoop セットアップ - 木曜不足

    Mahout はやっぱり Hadoop の上で使ってこそでしょ。というわけで開発用にも Hadoop をセットアップしなければならない。 基的に Hadoop は Linux で使うべき。Linux 上での疑似分散くらいまでなら結構簡単にセットアップできる。ネット上にいっぱい情報がある。Cloudera 使ってもいい(まだ使ったこと無いけど)。 スタンドアローンなら Windows でもそんなには難しくない。けど、疑似分散になると途端にやっかい。 そんなこんなで Windows 2008 x64 に Hadoop 0.21.0 を疑似分散でセットアップにチャレンジ。 最初に結論から。 Hadoop 0.21.0 は使うな。 Windows で Hadoop は使うな。 【追記】Mahout 0.4 が Hadoop 0.20.2 なので、最初からそれを使うのがベストだった。0.5-SNA

    Mahout の開発環境を Maven+Eclipse で作る (2) Hadoop セットアップ - 木曜不足
  • Mahout の開発環境を Maven+Eclipse で作る (3) Eclipse で Hadoop の開発環境を作る - 木曜不足

    Mahout の、と言いつつ今回も Hadoop の話ばかり。 Hadoop は各ノードにアプリケーションを配布する関係から、通常 jar を作らなければならない。そのため、Eclipse で書いたコードを実行するのもデバッグするのも非常にめんどくさい。 でもうまくやれば、スタンドアローンモード限定だが、Eclipse から jar も作らずそのまま Map-Reduce ジョブを起動できる。デバッグ実行もできるので、ブレイクポイント入れてステップ実行とかも可能だ。 今回はそういう環境の作り方の話。ずいぶん苦労したけど、出来るようになったら簡単。 Eclipse のセットアップなどは済んでいるものとする。Mahout の開発環境を Maven+Eclipse で作る (1) - Mi manca qualche giovedi`? 参照。 なお、Hadoop を展開すると contrib/

    Mahout の開発環境を Maven+Eclipse で作る (3) Eclipse で Hadoop の開発環境を作る - 木曜不足
  • エンジニアから機械学習への要望 - 木曜不足

    Machine Learning that Matters(ICML 2012) 読んだ - 糞ネット弁慶 (Wagstaff ICML2012) Machine Learning that Matters (原論文) 機械学習のトップカンファレンス ICML にて、「機械学習はこのままでいいの?」という感じの論文が発表された。 細かい内容は上の紹介記事を読んでいただくとして*1、乱暴に一言でまとめると「実応用から離れすぎ」ということになるだろう。 あるいは、2章の章題となっている "Machine Learning for Machine Learning's Sake" がこの論文をもっとも端的に表す一言と言ってみるのもいいかも。 内容についてはいちいち同感で、素性だの正則化だの最適化だのいう用語は分野外とのコミュニケーションを拒否しているとしか思えないとか、定量的なこともまあ大事だろ

    エンジニアから機械学習への要望 - 木曜不足
  • 第2回 Tokyo.SciPy で「数式を numpy に落としこむコツ」を発表してきました - 木曜不足

    10/15 に IBM さんの渋谷オフィスにて開催された 第2回 Tokyo.SciPy にのこのこ参加してきました。主催の @sla さんはじめ、参加者・発表者各位おつかれさまでした&ありがとうございました。 せっかく行くならなんか発表したいよね、ということで「数式を numpy に落としこむコツ 〜機械学習を題材に〜」なんてタイトルで、数式(あるいは数式入りのアルゴリズム)を実装するときに、どういう点に注目すれば易しくコードを書けるか、についてちらちら語ってみた。 こちらがその資料。 数式をnumpyに落としこむコツ View more presentations from Shuyo Nakatani 例えば、機械学習の(多クラス)ロジスティック回帰という技術では、次のような数式が登場する。 (PRML (4.109) 式) これを一目見てすらすらとコードが書けるなら苦労はないが、慣

    第2回 Tokyo.SciPy で「数式を numpy に落としこむコツ」を発表してきました - 木曜不足
  • CRF を使った Web 本文抽出 - 木曜不足

    とある確率でカオスでタイムマシンな勉強会を 7/30 にサイボウズにて開催。 お疲れ様でした&ありがとうございました>各位 会のテーマに合うかなあと心配しつつ、以前 TokyoNLP #1 にて発表させていただいた、CRF(Conditional Random Fields) を使った Web 文抽出ネタを焼き直し&プチバージョンアップして発表した。 その資料がこちら。 CRF を使った Web 文抽出 View more presentations from Shuyo Nakatani 最初は、元の資料そのまま持って行こうかな、と思っていたのだけど、結局結構それなりに改訂版に。 実装の方も少し更新してあって、最急降下法+FOBOS L1 に対応していたり、素性も約3倍に増えていたり。 データは……相変わらず少ないけど(苦笑)、訓練データとテストデータを分けて、定量的な結果を資料にま

    CRF を使った Web 本文抽出 - 木曜不足
    gologo13
    gologo13 2011/07/31
    こんな使い方もあるんだ。HTML を与えて、系列としてタグ列を考える。タグは本文タグ、コメントタグ、など
  • 階層ディリクレ過程を実装してみる (2) HDP-LDA の更新式を導出・前編 - 木曜不足

    階層ディリクレ過程を実装してみる (1) HDP-LDA と LDA のモデルを比較 - Mi manca qualche giovedi`? の続き。 今回も [Teh+ 2006] に基づいて、Chinese Restaurant Franchise(中華料理店フランチャイズ, CRF) の枠組みで Hierarchical Dirichlet Process(階層ディリクレ過程, HDP) の Collapsed Gibbs sampling 推論を行う場合の更新式を導出していく。 まず今回は一般の HDP を CRF に落とすところ。次回はそこから full conditional を導出([Teh+ 2006] にある および t や k の事後分布を導出)、そして次々回あたりで、それらの更新式を HDP-LDA に当てはめた場合(つまり前回記事の base measure H

    階層ディリクレ過程を実装してみる (2) HDP-LDA の更新式を導出・前編 - 木曜不足
    gologo13
    gologo13 2011/07/09
  • C++ でお手軽乱数(boost::random のラッパー) - 木曜不足

    C++ で乱数、特に正規乱数とか欲しいなあ。 rand() 関数は使っちゃダメ! 絶対! ということらしいので、boost::random を使ってみた。 が、なんでちょこっと乱数が欲しいくらいでそんなややこしいコード書かないといけないの!? と、キレたくなるほど複雑。 同じ型名を何度も書くのとか、ダサダサでしょう…… なので、最小限の汎用性を持たせつつ、便利でお手軽に使えるラッパーを書いてみた。 #include <boost/random.hpp> template<class D, class G = boost::mt19937> class Rand { G gen_; D dst_; boost::variate_generator<G, D> rand_; public: Rand() : gen_(static_cast<unsigned long>(time(0))),

    C++ でお手軽乱数(boost::random のラッパー) - 木曜不足
  • どうしてサンプリングで推論できるの? - 木曜不足

    TokyoNLP #5 で「はじめてのトピックモデル」的なのをやろうと思ってたんだけど、地震とかとかで1ヶ月延びている間に「はじめての生成文法」にすり替わってた。あれー? で、次回はその後編の予定だし、その次に TokyoNLP 的なところでなんか話す機会をもらえる頃にはまた別のネタができてるだろうし、うーん、「はじめてのトピックモデル」はお蔵入りかな。 というわけで、なんか最近 LDA のことをあれこれ書いてるのは、そのへんの蔵出し。 で、そんなネタの内、昨日の記事でうっかり書き忘れてた一口メモ。 どうして LDA で Collapsed Gibbs sampling すれば、つまり乱数で適当に選ぶことを繰り返すだけで推論できてしまうんだろう? わかっている人には簡単で当たり前の話だが、正直恥ずかしながら最初はどうしてそうなるのかさっぱりわからなかったw 普通のベイジアンの枠組みでは、事

    どうしてサンプリングで推論できるの? - 木曜不足
  • R で識別器を作ってみるのに必要な散布図の書き方・正規化の方法(iris データセットを例に) - 木曜不足

    PRML 4章とかを読んで、ちょっと試しに識別器を実装してみたい! というとき、初心者的にはデータセットをどこから持ってくるか、そのデータセットをどう使うか、実行結果をどうやってグラフなどに出力するか、といったあたりが悩み。 R はそのへんとてもよくできていて、すごくラクチン。 まず結構な数の著名なデータセットがあらかじめ入っている。その一つである iris dataset を例に「識別器を試作するための準備」について説明していこう。 iris dataset は、3品種(setosa, versicolor, verginica)のユリの花それぞれ50について、花の萼(がく)の長さと幅、花弁の長さと幅を測ったもの。 iris はデータがきれいに分かれているので、どんな識別器にわせてもそこそこ良い結果が出る。初心者が達成感を得るのに最適(笑)。 R での iris データセットの利用は

    R で識別器を作ってみるのに必要な散布図の書き方・正規化の方法(iris データセットを例に) - 木曜不足
  • PRML 読んでやってみた(下巻編) - 木曜不足

    昨日の記事を書いて、そういえば「パターン認識と機械学習」(以下 PRML) 上巻については「やってみた」「試してみた」系の記事をまとめページを作っていたことを思い出した。 PRML 読んでやってみた(上巻編) http://d.hatena.ne.jp/n_shuyo/20100505/prml そして、これの下巻編を作るの忘れてたので、ここにまとめておこう。 基的には PRML を読む中で、当にそうなのかなというあたりを手を動かしてみて確かめてみたという内容。実装は主に R で、たまに Python + numpy を使っている。 専門でない人間がやっているわけで、いろいろ間違っているかもしれない点はあらかじめ(実際、変分ベイズのときは盛大に間違えてた)。 6章 カーネル法 PRML6章「ガウス過程による回帰」を R で試す http://d.hatena.ne.jp/n_shuyo

    PRML 読んでやってみた(下巻編) - 木曜不足
  • PRML 読んでやってみた(上巻編) - 木曜不足

    今までに書いた「 PRML を読んで、やってみた」系の記事をまとめてみた。何か参考になれば幸い。 根的にとても疑り深い人(教科書の類に対しては特に)なので、「こんなん書いてあるけど、ほんまかいな〜?」という姿勢が目立つ。 また、よく「手触り」という言葉が出てくる。なんというか、「感触」がわからないと気持ち悪いのだ。基的な道具類は目をつむっていても使えるのが理想、と言えば、なんとなくでもわかってもらえるだろうか。 あと、言葉使いに無駄に小うるさい(苦笑)。多くの人にとってはどうでもいいところで妙にこだわっているかも。 下巻編はこちら。 PRML 読んでやってみた(下巻編) http://d.hatena.ne.jp/n_shuyo/20110519/prml 1章&2章 特に実装とかしてない。 ディリクレ分布のパラメータが0のとき http://d.hatena.ne.jp/n_shuy

    PRML 読んでやってみた(上巻編) - 木曜不足
  • Latent Dirichlet Allocations の Python 実装 - 木曜不足

    LDA とは "Latent Dirichlet Allocation"。文書中の単語の「トピック」を確率的に求める言語モデル。 「潜在的ディリクレ配分法」と訳されていることもあるが、その名前だと「それってなんだっけ?」という人のほうが多そうw。 各単語が「隠れトピック」(話題、カテゴリー)から生成されている、と想定して、そのトピックを文書集合から教師無しで推定することができる。特徴は、果物の apple音楽apple とコンピュータ関連の apple を区別することが出来る(ことが期待される)という点。そのために、どのトピックを生成しやすいかという分布を各文章も持つ。細かい話は略。 結果の見方としては、定量的にはパープレキシティを見るし(一般に小さいほどいい)、定性的には各トピックがどのような単語を生成するか、その確率上位のものを見てふむふむする。この「各トピックが生成する単語」

    Latent Dirichlet Allocations の Python 実装 - 木曜不足
  • LDA 追試(訓練データとテストデータを分けたら) - 木曜不足

    LDA の評価結果+Collapsed Variational Bayesian の初期化における工夫 - Mi manca qualche giovedi`? のコメント欄にて、daichi さんに「テストデータを用意して、そちらのperplexityを順次評価してみるとどうなるでしょうか。LWLM等と同様、その場合には smart init が一番高い確率を与える可能性があるかも知れません」とアドバイスをいただいた。多謝。 θ_d が大変そう、とつぶやいてたら同じくコメント欄にて yossy さんから「θ_d周りの実装が少し面倒なせいか、各文書の90%の単語で学習して残り10%で評価することがよく行われます」とさらにアドバイスをいただいた。またまた多謝。 というわけで試してみた。 https://github.com/shuyo/iir/blob/master/lda/lda_test

    LDA 追試(訓練データとテストデータを分けたら) - 木曜不足
    gologo13
    gologo13 2011/05/14
  • EMNLP 2010 の論文紹介 / 自然言語処理勉強会@東京 #3 - 木曜不足

    この記事は 第3回 自然言語処理勉強会@東京 での発表資料です。 EMNLP 2010 (The 2010 Conference on Empirical Methods on Natural Language Processing) の論文を4+5紹介しています。質より数で勝負。 論文を広く浅く読むススメ(仮) 「たまたま手近にあった方法論」に固執する可能性 by 持橋さん (IBIS 2010 のオープニングセッションにて) 例)関係ない、関心ない、難しくてわかるわけないから(読んでも|聞いても)ムダ 例)読めそうな、わかりそうな論文だけ読む 例)とりあえずナイーブベイズ、その枠内でどこまでも泥臭く 論文を手当たり次第に、広く浅く読んじゃおう 1あたり1〜2時間 目安は「twitter で2,3回つぶやけるくらい」(ぇ もちろんちゃんと読む論文はちゃんと読むんだけどね でも、まだ

    EMNLP 2010 の論文紹介 / 自然言語処理勉強会@東京 #3 - 木曜不足
  • LDA の評価結果+Collapsed Variational Bayesian の初期化における工夫 - 木曜不足

    えらく間隔があいてしまった。 LDA の結果を評価しつつ、前回やった LDA の Collapsed Variational Bayesian(CVB) 推論にて、初期化に一工夫入れて、少ないイテレーションで定性的によい結果を得られることを確認していたので、その解説も入れていこう。 Latent Dirichlet Allocations の Python 実装 - 木曜不足 Latent Dirichlet Allocations(LDA) の実装について - 木曜不足 LDA で実験 その1:stop words の扱い方でどう変わる? - 木曜不足 LDA で実験 その2:初期値を逐次サンプリングにしてみた - 木曜不足 LDA の Collapsed Variational Bayesian 推論 - 木曜不足 CVB0 では γ_ijk の更新式が以下の形で得られる。 この γ_

    LDA の評価結果+Collapsed Variational Bayesian の初期化における工夫 - 木曜不足
    gologo13
    gologo13 2011/04/24
  • 有名どころな機械学習手法の年表 - 木曜不足

    ちょっと機械学習の比較的有名なモデルやアルゴリズムの初出について年表を作ってみた。 って今週末用の資料なんだけどねw 1805 Method of Least Squares 1901 PCA (Principal Component Analysis) 1905 Random Walk -1925 Logistic Regression 1936 Fisher's Linear Discriminant Analysis 1946 Monte Carlo Method 1948 n-gram model 1950 RKHS (Reproducing Kernel Hilbert Space) 1950s Markov Decision Process -1957 Perceptron 1958 Kalman Filter 1960s Hidden Markov Model -1961 N

    有名どころな機械学習手法の年表 - 木曜不足
  • 独断と偏見によるノンパラ入門 - 木曜不足

    「ノンパラメトリック」って言うくらいだからパラメータ無いんかと思ってたら、パラメータめっちゃあるし。 機械学習のネーミングのひどさはこれに始まった話じゃあないけど、それにしたって。 ノンパラの一番素朴なやつ( K-means とか)は当にパラメータ無くてデータだけだから納得なんだけど、だんだん欲が出てパラメータ足しちゃったり派生させちゃったりしてるうちに、よくわかんなくなってきちゃったんだろうかねえ。まったく。 どれどれ、と英語Wikipedia の "Non-parametric statistics" を見たら、なんか意味が4種類くらい書いてあるし。じゃあ名前分けろよ。 en.wikipedia.org とりあえずここで言う「ノンパラ」とは、変数の個数決めなくていい「分布の分布」なメタっぽいやつのこと。つまりディリクレ過程とか、ディリクレ過程とか、そこらへん。 「あー、ノンパラベ

    独断と偏見によるノンパラ入門 - 木曜不足
  • PRML読書会 #5 資料「線形識別モデル(1)」 - 木曜不足

    これは パターン認識と機械学習(PRML)読書会 #5 (4章 線形識別モデル) での発表用の資料「4.1 識別関数」〜「4.1.2 多クラス」です。 まとめメインで、細かい説明/計算やサンプルは板書する予定。 【更新】読書会での指摘を反映。 PRML 4章 線形識別モデル 2クラス分類 [4.1.1] 多クラス分類 [4.1.2] 最小二乗による学習 [4.1.3] フィッシャーの線形判別による学習 [4.1.4-6] パーセプトロン・アルゴリズムによる学習 [4.1.7] おまけ 分類問題 入力ベクトル を K 個の離散クラス の1つに割り当てる 入力空間は決定領域 ( decision region ) に分離される 決定面 ( decision surface ):決定領域の境界 線形識別モデル 決定面が superplane 線形モデル 入力ベクトル の線形関数(★*1線形方程式

    PRML読書会 #5 資料「線形識別モデル(1)」 - 木曜不足
    gologo13
    gologo13 2010/10/03
    4章
  • 第2回 自然言語処理勉強会@東京 - 木曜不足

    遅ればせながら 第2回 自然言語処理勉強会@東京 の感想。 まず、自分の発表「ナイーブベイズで言語判定」についていくつかフォロー。 長時間発表してしまって聞く方も疲れただろうに、いっぱい質問や意見をいただけたことを感謝。 「なぜナイーブベイズ? 他の方法は?」というところが比較的みなさん気になったようで、会場での質問もそのあたりにまつわるものが多かったと思う。 機械学習を実際の問題に適用する場合、唯一無二の解なんてもちろんどこにもなくて、様々なアプローチがあるわけだけど(それこそ論文の数くらい……)、エンジニアとして実用物を作るときのベストな選択は、「うまくいく方法の中で、一番シンプルで つぶしが効くもの」ではないかと思う。 って、当たり前のこと言ってるだけだけどね。 その点、ナイーブベイズはシンプルで つぶしが効くことは間違いないので、後はそれでうまくいきさえすればいい。じゃあ試してみよ

    第2回 自然言語処理勉強会@東京 - 木曜不足