タグ

ブックマーク / hillbig.cocolog-nifty.com (8)

  • C++の便利ツール・ライブラリ - DO++

    フルタイムで働きはじめて4ヶ月。 いろんなことがありました。 今日はインターンが来ているということもあり日頃のC++コーディングライフの中で大変重用しているツールを紹介します。といってもどれも有名なツールでググれば解説がでてくるとは思いますので、一言ずつだけ紹介してみます。みなさんも何かよさげなライブラリ・ツールがありましたら教えてください。 - valgrind/callgrind/cachegrind プログラムの実行結果を解析するツール群。まぁ、王道であえて紹介する必要はないかもしいませんが.。valgrindはプログラムのどこかでメモリが漏れているかどうかのチェックに使います.コードのどの部分で確保した領域がどこで漏れているかまで追跡することができます valgrind --leak-check=full command プログラムのどのが計算量的にボトルネックになっているかを調べ

    C++の便利ツール・ライブラリ - DO++
  • 侮れないbias項 - DO++

    最近改めて知ったこと 線形識別器は入力x, 出力y から定義される素性ベクトルφ(x,y) とモデルパラメータの重みベクトル wの内積 s(x,y) := w φ(x,y) をスコアとして考えて、これが最大となるような出力yを識別結果とします。このwは訓練データを使って、何か訓練のための基準を定めて(最大エントロピー法だと対数線形モデル作って最尤推定、SVMだとヒンジ損失を最小化するようにとか)、それを最小化 or 最大化するという最適化問題で解くのが一般的です。 大抵 w = \arg \min \sum 各データに関するフィットの損失関数 + C |w|^2 で、線形モデルには一応bias項があって s(x,y) := wφ(x,y) + b_y という感じでwとは独立にモデルパラメータb_yがyの個数分付く。でもこれってφ(x,y)をy次元分増やしてそこに1を置いておけば式としては等

    侮れないbias項 - DO++
  • DO++: いろんな学会

    ICML/UAI/COLTのaccepted paperが出揃い、ざーっと面白そうなのを片っ端から読んでみました。 ICMLの読んでみた、読んでみたいリスト そのうちピックアップします。 ICMLは強化学習系が多くなっているなぁという気もしたのですがそうでもないかな。 ついでに、私が興味を持ってみている機械学習の学会(と一個ジャーナル)紹介を。これも境界領域なので他の学会で面白い話が発表されたりすることも多いです。 機械学習系 JMLR Journal of Machine Learning Research 機械学習の一番メジャーなジャーナルで出るスピードも速い(その年に学会発表されたものがその年のうちに出てくることも珍しくない)。全部web上からタダで論文を落とせる。よいですね ICML International Conference on Machine Learning 機械学習

    DO++: いろんな学会
  • 行列分解ライブラリredsvdを公開しました - DO++

    大規模疎行列向けの行列分解ライブラリredsvdを公開しました. redsvd 大規模疎行列向けの特異値分解や主成分分析,固有値分解を行うライブラリredsvdを公開しました. 修正BSDライセンスで公開しており,コマンドラインから使える他,C++ライブラリが用意されています. 例えば,行と列数がそれぞれ10万,非零の要素が1000万からなる疎行列に対する上位20位までの特異値分解を約2秒で処理します. 特異値分解とか,使っている技術の詳細とか応用事例を以下に簡単に紹介しましたので,興味のある方は参考にしてください. 特異値分解とは まず行列を適当に復習します.行列Xの転置をX^tと表すことにします.またIを単位行列とし,Oを全ての成分が0である零行列とします.また,行列XX^t=IであるようなXを直交行列と呼びます.Xが直交行列の時,Xvはベクトルvを長さを変えずに回転させます.ここでは

    行列分解ライブラリredsvdを公開しました - DO++
  • トーナメントと多値分類 - DO++

    今やってる研究で、トーナメント問題を調べる機会がありました。 トーナメントは私も知らなかったのですが、勝者や順位を決める方式のことを指し、いわゆる二人ずつ戦って生き残っていく方式はノックアウトトーナメントといわれるそうです(wikipedia)。 #10000人戦う時にノックアウトトーナメントでは何回試合が行われるかというのはよくある質問ですね。 で、このトーナメント方式というのは調べてみると非常に様々なものがあります 例えばスイス式トーナメントは、最初はランダムな組み合わせで対戦、次は勝者同士と敗者同士、その次は全勝・1勝1敗・2戦全敗のそれぞれが・・というふうに同じ成績の人同士で戦う方式です。レーティングを計算して、レーティングが近いもの同士を戦わせるような拡張もあります。近いのは将棋でやってるようなものですね。 利点は全ての人が同じ試合数で戦い、また厳密な順位が決めやすいことがありま

    トーナメントと多値分類 - DO++
  • netflix prize is over, 時間経過による嗜好性の変化 - DO++

    米国のオンラインDVDレンタルサービス「Netflix」が、現在利用しているレコメンデーションシステムの性能をはじめに10%改善したチームに100万ドルの賞金を与えるという触れ込みで始まったnetflix prizeは当初の予想よりも時間がかかったが、つい最近最初からトップを走り続けていたbellkorと、上位陣のコラボレーションのチームが10%の壁を破った(leaderboard)。 彼らの手法は「非常に多くの様々な種類のレコメンデーションシステムの結果を混ぜ合わせる」という愚直だがいかにも精度が出そうだという方法を採用している(、と昨年度の結果からは思われる。近々詳細は出るだろう。) 実際に使ってとどめになったかどうかは分からないが、彼らのチームの主要メンバーがKDDで新しい手法を発表しており、単一の手法による最高精度を達成している。ちなみに今年のKDD(データマイニング系の学会の最高

    netflix prize is over, 時間経過による嗜好性の変化 - DO++
  • DO++: AND検索の最尤推定

    検索技術においてAND検索、つまり二つの単語を指定して、それが両方出現している文書数の推定を高速に行うのは難しい問題です。 問題を正しく書くと単語w_xが出ている文書番号(x1,x2,x3,..,xn)とw_yが出ている文書番号(y1,y2,y3,...,ym)が与えられたら | {(i,j)|x_i = y_j} | の数を求める問題です。 これは前もって全通り求めて保存しておくにも単語種類数の二乗のオーダー分必要なのでできません。 これは機械学習でも特徴関数が0/1の値しかとらないとき、二つの要素の特徴ベクトルの内積を求める問題と同じで、またデータベースでもJOINの順番を決めるときにでてくる問題です。 普通は全体の文書からサンプルをとって、その中で数えてみて、それを元のサイズにスケールさせることをします。例えば全体文書1億件の中から文書1000件だけとってきて、その中でw_xとw_y

    DO++: AND検索の最尤推定
  • オンラインEMアルゴリズム - DO++

    EMアルゴリズム(Expectation Maximizationアルゴリズム、期待値最大化法、以下EMと呼ぶ)は、データに観測できない隠れ変数(潜在変数)がある場合のパラメータ推定を行う時に有用な手法である。 EMは何それという人のために簡単な説明を下の方に書いたので読んでみてください。 EMのきちんとした説明なら持橋さんによる解説「自然言語処理のための変分ベイズ法」や「計算統計 I―確率計算の新しい手法 統計科学のフロンティア 11」が丁寧でわかりやすい。 EMは教師無学習では中心的な手法であり、何か観測できない変数を含めた確率モデルを作ってその確率モデルの尤度を最大化するという枠組みで、観測できなかった変数はなんだったのかを推定する場合に用いられる。 例えば自然言語処理に限っていえば文書や単語クラスタリングから、文法推定、形態素解析、機械翻訳における単語アライメントなどで使われる。

    オンラインEMアルゴリズム - DO++
  • 1