投稿

12月, 2019の投稿を表示しています

【振り返り】2019年10月~12月

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 僕は修論と論文執筆とスプラで忙しい年末ですが、いかがお過ごしでしょうか。 四半期ごとの振り返り記事です。 一年を振り返って、という記事でもいいのですが、今年は三ヶ月ごとに書いてきたので少なくとも今年まではこのスタイルで書き切りたいと思います。 一応記事の最後の方に一年を振り返る部分も設けたいと思います。 10月~12月はこんな感じでした。 * IBISで発表 * 統計検定受けたけど落ちた * 国際会議に投稿した論文がrejectに * 2つのアドベントカレンダーに参加 なんかあまりいい文字列が並んでいませんが、ちゃんと振り返ります。。。 ## IBISで発表してきた 名古屋で行われたIBISに発表参加してきました。 今まであまり研究を対外的に発表できるぐらいまとまったネタが作れてこなかったので、ワークショップや学会など、参加したことがないという状態でした(発表とかではなく参加自体も初でした)。 教授からM1のときから「来年IBISで発表できたらいいね〜」と言われていて、自分もその頃までに成果をだしておけば修論も書きやすくなるだろう、と思って一つの目標にしていたので、無事ここは達成できてよかったです。査読とかはないので質は担保できてはいないですが、一応進捗的には自分としてはokです。 教授曰く、こういう発表の場はお祭りらしいので、楽しみにしていましたが、本当にお祭りでした。 いろんな方の発表やチュートリアルを聞いたり、懇親会や知り合いの知り合いの方と飲みに行ったりしてお話しすることができて楽しかったです。 M1の頃に参加したサマーインターンの同期などに再会したり、飲みの場であった研究者が知り合いの知り合いでびっくり、など、世界は狭いですね。 ポスターやセッション、チュートリアルでは、機械学習の説明可能性や、広告配信評価のバイアス除去系の話が面白かったです。あまり自分が詳しくない分野の話が楽しめないので、こういう場を楽しむためにはもっと広く浅く知識を持っておく必要があるんだなあ、と実感しました。と同時に、自分が何に興味を持っているのかが浮き彫りになるという一面もある

【論文紹介】Improving Ad Click Prediction by Considering Non-displayed

イメージ
## はじめに こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 本記事はアドベントカレンダー「<a href="https://adventar.org/calendars/4489">#今年読んだ一番好きな論文2019</a>」の21日目の記事です。 本ブログでのアドベントカレンダー参加は初めてなので、頑張りたいと思います。 普段はM2の学生をやっていて、機械学習やプログラミングを勉強しています。 機械学習における公平性や、レコメンド、因果推論、アドテクなどが興味のある分野です。 今回はWeb広告配信の最適化についての論文を紹介していきます!よろしくお願いします。 ## 紹介論文 本記事は、以下の論文の紹介記事となっています。 題名 : Improving Ad Click Prediction by Considering Non-displayed([pdf](https://www.csie.ntu.edu.tw/~cjlin/papers/occtr/ctr_oc.pdf)) 著者 : Bowen Yuan, Hong Zhu, Jui-Yang Hsia, Chih-Yao Chang, Meng-Yuan Yang, Zhenhua Dong, Chih-Jen Lin 出典 : CIKM'19 Proceedings of the 28th ACM International Conference on Information and Knowledge Management Pages 329-338 本記事はこの分野に明るくない方も多く見ていただくことになると思うので、厳密にというよりかは簡潔にして書いていきたいと思います。詳しい方でもっと知りたい!となった方はぜひ論文を読んでみてください。 (また、本記事の画像は上記論文からの引用になります。) ## 論文概要 Web広告配信の最適化を行う際、過去に配信した広告とクリックされたかどうかのフィードバックを元に学習したモデルを用いてWebページ閲覧者にクリックされそうな広告を予測するという

Factorization MachinesのPython実装pyFM, fastFMをMovielensで試してみる

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回はFactorization Machines(FM)のPython実装の二大巨頭であるpyFM, fastFMをMovielensデータセットに使ってみた、という記事になります。 ## fastFMの使い方 * <a href="https://github.com/ibayer/fastFM">GitHub - ibayer/fastFM: fastFM: A Library for Factorization Machines</a> regressionやclassificationだけでなくBPR lossを用いてランキングの予測もできるとのことですが、<a href="https://repose.hatenadiary.jp/entry/20170524/1495552930">他の方による記事</a>ではBPRがうまくいかないとのことでした。 自分も今回の記事とは別でBPR lossを試してみたのですがうまく学習してくれませんでした。 今回の記事ではMovielensでrating予測なのでregression modelだけ使って学習してみます。 入力の与え方はpyFMと同様で、scipyの疎行列として与えます。 結果はpyFMの方のみ載せることとして、こちらでは書き方だけ載せます。 普通に初期化して、fitするだけです。 ```python from fastFM import als,sgd model = als.FMRegression(n_iter=100, l2_reg_w=0.1, l2_reg_V=0.1, rank=10) model.fit(X_train,y_train) ``` ですが、デフォルトだと学習履歴を全く表示してくれず、学習曲線とかもかけないので学習が進んでいるのかどうかもよくわかりません。 調べてみると、 [Guide — fastFM 0.2.10 documentation](https://ibayer.gith

LightFMを使ってギターのおすすめカポ位置推薦してみた

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今日は最近やっていた自由研究の記事です。 ## 概要 ギターを弾く際に、押さえるのが難しいコードがありますが、 カポタスト(カポ、と呼んだりします)をギターに装着することで難しいコードが出現するのを避け、演奏しやすくしたりします。 今回はこのカポの装着する位置をLightFMというライブラリを用いて推薦するプログラムを書いてみました。 ## ギターのカポとは ギターのコードには押さえるのが比較的難しいコードがあるので、カポをつけてキーを変えることでそのコードが出ないようにします。 例えば、Fコードを鳴らさなければいけない曲を弾きたいが、Fコードがどうしても押さえられない、という時にカポを1フレット目につけると、Eコードの手の形(Fコードよりは簡単)で押さえて弾くと音としてはFコードが鳴る、という優れものです。 このようにして、カポをつけると出てくるコードが変わるので、つける位置をうまく選べば自分の苦手なコードを回避することができます。(もちろんちゃんと練習しないとダメですが!ある程度簡単なコードを選べるということです。) (参考)カポはこんな感じで、ギターに挟んで使います。 <div class="separator" style="clear: both; text-align: center;"><a href="https://3.bp.blogspot.com/-HSdUXXRtRoo/XfCT3yKhn4I/AAAAAAAADKA/qWeTtbyqV30uS7DIRn6Q4FWCjZzU1NvJwCLcBGAsYHQ/s1600/capo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-HSdUXXRtRoo/X

【論文紹介】WSABIE: Scaling Up To Large Vocabulary Image Annotation (IJCAI 2011)

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 今回は、WSABIE: Scaling Up To Large Vocabulary Image Annotation という論文を読んだのでメモします。 手法のところ、特に損失関数をメインに解説します。 <a href="https://dl.acm.org/citation.cfm?id=2283856">論文リンク</a> ## 3行まとめ 大きなimage annotationデータセットに対して、画像とタグを同一空間上に埋め込んで内積をとるJoint Word-Image Modelと、Precisionを近似したWARP lossを組み合わせたWSABIEを提案。 ## 問題設定 image annotationタスクは、画像に対して適切なタグ(単語)をつけるというタスクで、今回は与えられたタグリストの中からどれが近いかをランキングにして表示する、みたいな状況を想定している。 評価指標は[email protected]としている。 ## Joint Word-Image Model こちらは単純で、modelと呼ぶほどのこともなくて、単純に画像とtagのembeddingを得て、内積をとることで類似度を計算している。 同じ長さのembeddingをとるので同じ空間上にtagとimageがembedされる。 ## WARP loss 今回の目玉(だと個人的に思っている)。 Precisionの近似になっているlossらしい。 与えられるデータセットには正解のtagが与えられているので、これをrank=1だと思って、この画像に対して予測したランクが1位から離れていれば離れているほどlossが大きくなるように設計している。 予測した順位が$rank_y(f(x))$と表記されている。 <div class="separator" style="clear: both; text-align: center;"><a href="https