Jubatus Casual Talks #1でランク学習について発表しました

Jubatus Casual Talks #1で、「Jubatusでオンラインランク学習」というタイトルの発表を行いました。会場を提供してくださったフューチャーアーキテクト株式会社さま、運営をされたJubatus開発者の皆さま、また素晴らしい発表をしてくださった発表者の皆さま…

Jubatusでオンラインランク学習

もう二か月以上前のことだが、とあるところで、Jubatusでオンライン分類ができるならペアワイズのランク学習もできそうだという話をした。いろいろあって時間がかかってしまったが、実装と簡単な評価をしたのでまとめておく。以下の評価で用いた実装は"y-tag…

マルチクラスSCW評価メモ

昨年のICML2012で、オンライン分類器であるSoft Confidence-Weighted Learningが提案された("Exact Soft Confidence-Weighted Learning")。この際に提案されたのは基本的な二値分類だったが、今までのオンライン分類器と同じように、マルチクラスへの拡張…

テストが通らなかったことのメモ 続き

「64bit環境で通るテストが32bit環境で通らなかったことのメモ」の続き。なぜあのような計算結果になるかを調べてみた。もはや完全にJubatusとは関係ない。前回も用いたコード。#1から#3の三つの計算をしている。 #include <cstdio> #include <cmath> double mixed_entropy(</cmath></cstdio>…

64bit環境で通るテストが32bit環境で通らなかったことのメモ

大した話ではないのだがメモ。Jubatusのビルドが64bit環境(x86_64)では通るのだが、32bit環境(i686)では通らなかったので、いろいろと調べていた。二つの環境は以下のとおりで、ビルドにはg++が用いられていた(どちらもvagrantでUbuntu 12.04を用いてい…

Apache PigのUDFで機械学習するアレを作りました

N番煎じ感が強いが、SIGMOD 2012で発表されたTwitterの論文のアレを作ってみた。https://github.com/y-tag/java-pig-MyUDFsアレとはApache Pigのユーザー定義関数(UDF)を使って分類問題を扱うというもの。オリジナルの論文は以下。Large-Scale Machine Lea…

良くある損失関数の勾配

NIPS 2012の"A Stochastic Gradient Method with an Exponential Convergence Rate for Finite Training Sets"(pdf)を読んで思い出したのでメモ。上記の論文では、stochastic gradient (SG) methodを高速化したstochastic average gradient (SAG) methodを…

"Psychopathy Prediction Based on Twitter Usage"で1位になりました

6月の終わりに終了したので既に4ヶ月以上前の話だが、kaggleで開催されていたデータサイエンスのコンペティションで1位になった。 Psychopathy Prediction Based on Twitter Usage - Kaggle このコンペティションはその名のとおり、twitterの使い方からその…

WSDM2012勉強会に参加してきました

WSDM2012勉強会に参加させていただきました。発表資料など詳細は以下にまとまっているようです。主催者、発表者、会場確保・設営をしてくださった皆さま、とても勉強になりました、ありがとうございました。 WSDM2012勉強会で発表しました #wsdm2012 - nokun…

Top-k retrievalのアルゴリズムを書いてみた(tiny topk)

C++

最近top-k retrievalの話を少し聞いたので、簡単にコードを書いてみた。いつものように恥もなくgithubで公開している。cpp-ToyBox-TinyTopK(github)Top-k retrievalを簡単に説明すると、転置インデックスに対してdisjunctiveなクエリで問い合わせて(OR検索…

int/doubleを文字列に変換する際の速度など

C++

C++でintやdoubleなどの数を文字列(charの配列もしくはstd::string)にしたい時、もしくはその逆で文字列をintやdoubleにしたい時がある。一般的にそのような処理はファイル入出力などと合わせて行われるため、それほど速度を気にすることはなく、むしろ安…

DOM Based Content Extraction via Text Densityのbindingを書いたよ

SIGIR 2011のDOM Based Content Extraction via Text Densityが、シンプルなアルゴリズムながら良さそうな結果を示していたので、著者のコードを改変してSWIGでPerlとPythonのbindingを作った。 下手な英文メールにも関わらず、コードの利用を快く認めて下さ…

IJCAI2011メモ

TwitterでつぶやいたIJCAI2011の論文についてのメモ。全てMachine Learning関連。 Improving Performance of Topic Models by Variable Grouping Latent Dirichlet AllocationでGibbs samplingを行う際、変数の数が増えるとサンプルを広範囲から取ることが難…

downhill simplexでNDCG最適化

ここのところ、周囲でランキング学習への興味が高まっているような気がする。ランキング学習の一手法として、A Stochastic Learning-To-Rank Algorithm and its Application to Contextual Advertisingでは、ランキングの評価指標の一つであるNDCGを最大化す…

ICML 2011メモ

TwitterでつぶやいたICML 2011の論文についてのメモ。まだあまり読めてないのだけれど、とりあえずここで一まとめ。ざっと目を通しただけなのでいろいろと間違ってるかもしれない。SVMの論文が多めなのは、SVMへの苦手意識を払拭しようとしてたから。 Large …

perl-Algorithm-ComplementNB(complement naive Bayes)

最近は教師あり学習の分類器について調べている。そこで2年ほど前に話題になったcomplement naive BayesをPerlで実装した。コードは「y-tag/perl-Algorithm-ComplementNB - GitHub」にある。Algorithm::ComplementNBは通常のnaive Bayesにおいてシンプルに補…

FizzBuzz最短コード(FlogScript)

「anarchy golf - FizzBuzz」にポストしたもの。FizzBuzzをFlogScriptで36文字。 100,{)..{Fizz}@3%!*{Buzz}@5%!*+\`|P,ロジックとしては「FizzBuzz最短コード(GolfScript, Groovy)」のGolfScriptのものと同じ。しかし、stringとintに'*'演算を行うときには…

FizzBuzz最短コード(GolfScript, Groovy)

1周回ってきたのでFizzBuzz。「anarchy golf - FizzBuzz」にポストしたやつ。GolfScriptで37文字。 100,{)..3%!'Fizz'*\5%!'Buzz'*+\or}%n*Groovyで55文字。 100.times{println'Fizz'*(it%3/2)+'Buzz'*(it%5/4)?:++it} FlogScriptにも挑戦したいところ。追記:…

WindowsでもChromiumを使う

Chromiumが容易にインストールできるようになってから、Ubuntu(10.04)ではFirefoxとChromiumの両方を使っている。あの青いアイコンにも愛着を感じてきたので、WindowsにもChromiumをインストールしてみた。そのときのメモ。インストール作業自体はインスト…

Apache Cassandra 0.7で動的キースペース作成

Apache Cassandraの0.6.xまではキースペースとカラムファミリ(RDBでいうデータベースとテーブルのような単位)を設定ファイルに記述していたため、設定変更には再起動が必要だった。しかし、0.7ではこれを動的に作成や変更ができるようになっているとのこと…

GDD 2010 Japan DevQuiz

Google Developer Day 2010 JapanのDevQuizで用いたスクリプトなど。4つともPython。問題リストに表示されていた得点は以下のとおり。 問題 得点 Google Maps API 1.0, 2.0, 3.0 2-legged OAuth 5.0 Shiritori 1.0, 3.0, 6.0 PAC-MAN 35.0, 171.0, 未挑戦