サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
marugari2.hatenablog.jp
昔からある話ですが、Google CloudからAutoML Tablesが発表される等、表形式データにニューラルネットを用いることの障壁は日々低くなっているように感じられます。 LightGBM開発者によるDeepGBMが話題になる等、研究においても特に決定木を意識したアプローチが(局所的に)盛り上がっているようなのでリンク集を作ってみました。 論文リスト CTR予測にNNを用いる研究は数多くあるので、次のような特徴を持つものに限定します。 表形式データに対して、FCNでは精度が出しにくい一方でGBDTが実績を挙げているというモチベーション ヘヴィサイド関数的なもの(tanhが多そう)で分岐を表現する 2を積むことで決定木らしい形にする ショートカットを導入することで加法木らしい性質を持たせる Higgs等で数値実験をする 以下に挙げているようにICLR 2020へ3本ほどこのような分野
話題の評点分布についての自分用まとめです。 特に統計的な議論においては各々想定している状況が違っているようなので整理してみました。 筆者は統計というよりは確率の人間なので、ベイズだとかには触らずに確率変数の演算ばかり使います。 大数の法則が使えるような状況 店 の真の評点 が宇宙のどこかに存在していて、レビュワー の 店 に対する評点 は平均 を持つ独立同分布な確率変数と考えます。 店 の評点 は 件のレビューが付いていたときに と書けます*1が、これはレビュワーが増えていくと に収束することが知られています。 確率変数である を仮に に置き換えて考えれば、もはや評点分布は何ら確率的な性質を持ちません。 宇宙のどこかに存在している の値は3.6が多いかもしれませんし3.8が多いかもしれませんし、そうでないかもしれません。 レビュワー数は実際には有限なので収束せず幾らかは確率的なところがある
名刺の会社のアドベントカレンダー3日目です。 へい社ではR&Dメンバーが論文読み会を定期的に開催しています。私は直近でバッチサイズに関するものを読みましたので、それに関連する数値実験を報告しようと思います。 論文 On Large-Batch Training for Deep Learning: Generalization Gap and Sharp Minima (ICLR 2017) Train longer, generalize better: closing the generalization gap in large batch training of neural networks (NIPS 2017) 前者の論文では、Deep Learningにおいて、SGDのバッチサイズを小さくした方が汎化性能の高くなる経験則について、バッチサイズとtrain loss func
勾配ブースティングに特有の問題という訳ではないですが、それはマルチクラス分類をone-vs-allで解いていることに留意しましょうというのが今回の記事です。 2017/04/02追記 LightGBMではマルチクラス分類の際にsoftmaxとone-vs-allのどちらで解くか選択できるようです。 また、XGBoostではsoftmaxのみがサポートされています。 この記事では、マルチクラス分類のためにクラス数と同じ分類器を使っていることを指してone-vs-allとしてしまっています。ご注意ください。 マルチクラス分類について ここではマルチクラス分類の問題を対象に、アンサンブル学習として代表的なランダムフォレストと勾配ブースティングとを比較します。 ランダムフォレスト ランダムフォレストによるマルチクラス分類では学習器に分類木を用いています。 scikit-learnではDecisio
Ryzen 7 1700とGTX 1080 Tiでマシンを組んだので、動作確認がてらXGBoostのGPU版を使ってみました。 タイムラインでそういう話題があったのでネタをパクったような形になってしまいましたが、私自身前からやってみたいと思っていたテーマであり、H2O.aiが最近担いでいる話でもあるので許して頂きたい。 構成 Ryzen 7 1700 (3.7GHz 8core/16thread) GTX 1080 Ti FOUNDERS EDITION (1582MHz 11GB) 今のところ定格で動かしてます。 記事と前後してしまいますが、Deep Learning以外の機械学習アルゴリズムもGPUで気軽に計算を高速化できるような予感があったのでCPUはケチりました。 将来GPUを追加する際の資金の足しにしたい。 インストール 公式のドキュメント 私はUbuntuの環境でmakeを使っ
このシリーズについて XGBoost芸人を自称してちょこちょこ活動をしてきたのですが、最近になって自分の理解の甘さを痛感するようになりました。 気になった箇所を散発的に復習しているのですが、その成果を備忘録として残しておこうと思います。 今のところ体系的にまとめるつもりはないので、これを読んでも勾配ブースティングの全体像はつかめませんので悪しからず。 今回のテーマ以外にはマルチクラス分類の際の挙動等に関心を持っています。 木の構築について 勾配ブースティングでは 回目のイテレーションで誤差 の勾配を上手く表現した木を構築します。 この部分の処理についてscikit-learnとXGBoostでの違いを確認します。 scikit-learn カステラ本に準拠した処理になっています。 勾配の計算は となり、これを各サンプルのラベル扱いにして DecisionTreeRegressor に投げま
はじめに 将棋ソフト不正疑惑に関する事件について新たな記事が出ていたので、また計算機を叩いてみました。 三浦九段不正疑惑について、渡辺明竜王を弁護する 2017/02/27追記 当該記事は削除されてしまっています。一時、ハフィントンポストが全文を掲載してくれていたのですが、そちらも削除されています。ご覧なりたい方は自身で魚拓を漁ってください。 三浦九段については晴れて「シロ」判定がされて、これから名誉回復をどうしていくかという段で、このような記事が出てくるのには違和感があります。 ネット上でもあまり評判良くないようなので、今更内容に噛み付く必要もないのですが、データジャーナリズムの手習いとして公開してみます。 前提 ここでは、記事中にある一致率の推定値を真の値として扱います。 一致率については、将棋ソフトや局面の違いによって値に大きな差異が出る可能性が指摘されています。 そのような数字を基
DMLCひとりアドベントカレンダー0日目の記事です。 強い競合が現れたということで、DMLCとは直接関係ないですがLightGBMについて紹介します。 LightGBMとは 勾配ブースティング木の高速な実装としてXGBoostが有名ですが、Microsoftの開発した更に高速な実装がLightGBMです。 実験によるとXGBoostの数倍高速だということです。 パフォーマンス向上の大きな要因は、決定木の分割をexactに探索するのではなく、ヒストグラムのビン単位にして計算を間引いていることにあるようです。 ビン単位にすると精度が落ちそうな気もしますが、汎化性能を考えたら特徴量が粗いくらいでちょうど良いのだろうと腹落ちしています。 同じアプローチでFastBDTが先に発表されましたが開発が滞ってしまっている一方、LightGBMでは最近Pythonパッケージがベータリリースされました。 今日
周回遅れも甚だしいですが、「乱数のコク」について思う所があったので計算をしてみました。 オリジナル 一様乱数と比べて、5つの一様乱数の平均の方がコクがあるとのことです。 シミュレーションで得たヒストグラムは以下のようになりました。 def rand_koku(n, seed): np.random.seed(seed) u1 = np.random.rand(n) u2 = np.random.rand(n) u3 = np.random.rand(n) u4 = np.random.rand(n) u5 = np.random.rand(n) return (u1, (u1+u2+u3+u4+u5)/5.0) 平均を取った側は正規分布のような釣り鐘型になっています。 果たしてこれをコクと呼べるでしょうか。2次モーメントも異なっていますし、分布の形も別物です。 オーディオで言ったらSONY
将棋界で大騒ぎになっている疑惑について、連盟公式掲示板でのレスバトルをするための材料として手元で計算をしてみました。 計算の前提となっているパラメータがガバガバなので、白か黒かの材料にはなりようがないですが、とりあえず今出ている数字を使ってみたらどうなるかというメモです。 私は 統計検定持ってません。変な計算してたら叱って下さい。 調査設計については無知です。調査法がイケてない点については触れません。 観る将なので、戦法や序盤・終盤でどれくらい手の広さが異なるか知りません。 電王戦は見てるけど、ponaと技巧でどれくらい強さが違うかは知りません。 設定 千田先生のDropboxにある資料の数字から独自に作成します。 「千田棋譜 資料」内に当該ファイルがあります。 www.dropbox.com ソフト指ししないプロ棋士の一手毎のソフト一致率は75%とする。 一致するかどうかは系列相関なしで
皆さんMXNet使っていますか? 年度初に著名データサイエンティストの記事が相次いで盛り上がった感がありましたが、もうChainerなりTensorFlowなりに移ってしまったのでしょうか… MXNetはDeep Learningフレームワークの比較でドキュメントが弱いことをよく指摘されてるので、1ユーザとして草の根でお役立ち情報を発信していきたいです。 やりたいこと 形式の異なる複数のデータを入力として、複数の値を出力するモデルを学習したい。*1 Keras: Functional APIなるものを使って実現できるそうです。 Functional APIのガイド - Keras Documentation Chainer: サポートされている模様。手続き的なフレームワークだと関数に通すだけなので難しいことは少なそう。 Google グループ TensorFlow: サポートされていない模
名刺お疲れ様でした。 終盤はGPUメモリ足りないとイライラしていましたが、足りないのは創意工夫でした。 私はMXNetを使って取り組んでました。multi-inputとかmulti-outputのやり方を泣きながら調べたのも良い思い出です。 その話はまた時間があればまとめます。今日は軽いネタを一つ。 本題 今回のコンペはマルチラベル問題で、評価指標はMAEでした。 サンプル数が で、そのインデックスを とします。同様にクラス数が で、そのインデックスを とします。 番目のサンプルの クラス に対するフラグを 、予測値を と表します。 MAE(Mean Absolute Error)は で計算します。 このとき、 は確率ではなくフラグにしないと殆どの場合で損するはずです。 MAEにはmedianを返すのがお約束なので、これ以上は不要な説明かもしれませんが、泥臭くやってみます。 何らかの機械学
はじめに XGBoostにBoosterを追加しました。 以下のようなIssueを見つけ、興味があったので実装してみたものです。 github.com 今のところ、Dart boosterの仕様について私以外の誰も把握していないはずなので、皆さんに使って頂きたく解説記事を書きます。*1 モチベーション 論文の Boosted Treesでは誤差を潰すために回帰木を大量に作ります。 木の数が多くなったときに残っている誤差は小さいですが、以降に構築される回帰木はその些末な誤差にフィッティングされることになります。 これは効率悪いように思われ、イテレーションの終盤においても一定の影響力を持った回帰木を作りたいということで、NN系でよく用いられる(ものとは趣きが異なるように私には思える)DropoutをBoosted Treesに転用しています。 自分の XGBoostにはいつもお世話になっている
背景 オプトDSLで開催された「ユーザー離脱予想」のコンペで入賞しました。 結構丁寧に検収をして頂くのですが、オプトの方とこちらとでどうしても結果が一致せずに困り果てていました。 Twitterでつぶやいた所、有益情報をゲットします。 xgboostは、Windowsはrand、それ以外はrand_r、R版はRのunif_randなどを使っているようで、環境によって同じseedでも乱数の結果が違っているのだと思うけど、マジでそんな実装なんだ...と思った。 https://t.co/uGmpvpHPeK— id:ultraist (@ultraistter) 2015, 8月 30 random.hを調べてみたところ… struct Random{ inline void Seed(unsigned sd) { this->rseed = sd; #if defined(_MSC_VER)
このページを最初にブックマークしてみませんか?
『marugari2.hatenablog.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く