tkm2261's blog

研究員(OR屋) → データ分析官 → MLエンジニア → ニート → 米国CS PhDが諸々書いてます

NIPS2017読み会@クックパッドでLightGBMの論文紹介してきた(全発表資料リンク付き)

こんにちは

今日はNIPS2017読み会@クックパッドでLightGBMの論文紹介してきたのでブログにします。

cookpad.connpass.com

Twitterで既に告知しましたがブログに残しておかないと埋もれるのでこちらにも置いておきます

今回は急遽前日に発表が空いたのでニート力を活用して発表して来ました。ノリと勢いで行動出来るのはニートの特権

そして懇親会はなんとクックパッドさんの方の手作りという流石のクオリティでした。

f:id:tkm2261:20180127181715j:plain

ドリンクはNVIDIAさんの提供でなんと無料で懇親会に参加させて頂きました。ありがとうございました!

他の方の発表資料

www.slideshare.net

nishibaさん
https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/46346.pdf

ニートなので人と会話する機会は貴重なので、勉強会など誘って頂けると嬉しいです。

業務メール書き方チートシート

お久しぶりです。

今日は技術的な話題では無いですが、社外・社内にメールを出す時のテンプレ的なものを紹介したいと思います。

初めに言いますが、クッッソどうでも良い話題です。面接のスーツに何を着るかぐらいどうでも良い話です。

ただ、学生だと志望会社にメールを出すときに変に文面悩んだり、エンジニアだと社外にメール出す経験があまり無くて変に文面悩んだりとか、ここで悩むのは更に無駄なので、

ニートという身軽な身分のうちに、日本の会社で大体OKっぽいメールの書き方を適当に紹介します。

アホらしいですがメールの行間から仕事慣れてない感がでるとマイナス印象になったりもするので、それっぽいメールの書き方は知っておいて良いかもしれません。

自分もコンサルの新卒の時にいきなりクライアントにメールするのは怖かった記憶があるので、自分が学生の時に知りたかった内容的なのを書いておきます

業務メール書き方チートシート

f:id:tkm2261:20180109180946p:plain

解説

1. To

基本的にメールを見て欲しい人はToにする。MTGした時の参加者とかはToに基本入れとく。

人によってはToで来たメールしか見ないので注意。

一方、情報共有レベルの人はToから外してあげるとメールチェックの手間が省けるので、送る前にToにするかccにするかを吟味してあげると喜ばれる。

2. Cc

情報共有レベルの人はccにする。

業務メールは基本「全員に返信」で運用されます。新卒時に普通の返信にして連絡がいってなくて怒られるのは誰もが通る道

ccが増えて行くと、新卒とかは『自分fromで知らない人に送らない方がよいかな・・・』と思って外したりする事がありますが、基本一度スレッドに入った人には「全員に返信」でccで送る。

「俺連絡もらってないよ?」とか後で言われたりすると面倒ですし。

3. Bcc

基本使いませんが、先方への重要な連絡の時とかに直属の上司をいれて報連相として使うとデキる後輩アピールが出来たりします。

4. 件名

基本的に働いてると、複数プロジェクトに関わるので何の話題かを【】に入れて書いておいた方がよいです。

もし先方にアクションして貰う必要があったら【要ご対応】とかを付けてもよいです。

丁寧でない表現と感じるかもしれませんが、偉い人ほど大量にメールを受信するので、むしろ書いてあると喜ばれます。

メールは埋もれるものなので、タイトルで分かるのが重要

5. 先方氏名

1行目に自分の名前があるかで読む読まないを決める人もいるので、読んで欲しい人の名前はしっかり書きましょう

社内であれ、社外であれ敬称は『さん』で基本OKです。

相当フォーマルなメールは別ですが、よそよそしさが出るので一度会って話したなら『さん』で良いでしょう。受発注関係や役職の差は身分の差ではないですし。

人数が多い場合は『各位』や『関係各位』でもokです。ただ社外向けには余り使わない

会社名に敬称はいりません。

追記:

結構先方敬称『さん』は問題だとの指摘がありましたが、確かにこの辺りの距離感は難しいので、各自適宜状況を考えて使って下さい。ただ敬語学の議論は面倒なので、フォーマルなメールの書き方はネットにいっぱい転がってるのでそちらに任せます。

6. 社外『お世話になっております。』社内『お疲れ様です。』

どの会社ともメールしても、このフォーマットになっているので、業務メールっぽくなるので使うと良いです。

書き出しで悩んでも仕方ないので、使っておくと無難です。

7. 適当なお礼1行

面接やMTGのお礼は忘れたり、あんまりやり過ぎると慇懃すぎるので文頭1行に書く癖をつける。

たまに腸煮えくり返って怒りのメールをすることありますが、怒ってる相手にお礼を書くと冷静になれたりするので習慣づけると役立つ場面もある。

8. メール本文

簡潔に書く

9. 最強締めワード『よろしくお願いします。』

多少文章の繋がりが不自然でも『よろしくお願いします。』で締めておけばなんとかなる。

文章で悩むぐらいなら『よろしくお願いします。』で締めてサッサと送ってしまったほうが良い。

10. 最後に名前と署名

慣習なので入れておく。

署名あるとそれっぽい業務メール感が増すので入れておく。メーラーの設定で自動で挿入できます。

会社の場合は指定があったりするので、先輩のをパクっておくと無難です。

なんでも良いですが、1例はこんな感じ

-------------
山田 太郎 (Yamada, Taro)
Tel: xxx-xxxx-xxxx
Mail: xxx@xxx.co.jp

こんな感じに自分の業務メールフォーマットを作っておくと、脳みそ使わずにメールをさばけるので楽です。

適当に書いてみるとこんな感じになります。

aaaさん、bbbさん

お世話になっております、◯◯の山田太郎です。
先日はMTG頂きありがとうございました。

MTGにてこちらの宿題となっていた、11/15~11/30のデータをご共有する件ですが、
本メールにて送付させて頂きます。

ご確認のほど、よろしくお願いします。

山田

-------------
山田 太郎 (Yamada, Taro)
Tel: xxx-xxxx-xxxx
Mail: xxx@xxx.co.jp

NIPS2017 タイトル&概要訳 一覧を作った

ブログに書いておかないと忘れるのでこちらにも

NIPS2017 タイトル&概要訳 一覧 - Google スプレッドシート

Kaggle Tokyo Meetup #3 開催レポート

こんにちは。tkm2261です。

今日は10/28に開催したKaggle Tokyo Meetup #3の模様をレポートします。

connpass.com

このmeetupは@threecourseさんや@smlyさんが2年前ぐらいから始めて不定期で開催しており、

私もニートの有り余る労働力を活かして今回運営をして来ました。

開始前

今回はsmlyさんの勤め先であるアドバンステクノロジーラボさんに会場をお借りすることが出来ました。

渋谷の超良いところにあって、美術館の上という超良いところのオフィスでした。

今回、Youtubeのチャネル登録者数が100人を超えたのでライブストリーミングスマホで出来るようになったのですが、配信に耐えられる回線がなかったため今回は見送りました。次回以降考えます。

挨拶と自己紹介

threecourseさんがTokyowebminingからもろパクリしたスライドで開始

いつもはネタですが、今回は裏開催だったため喧嘩売ってる感じになってますが、向こうとも仲良いので大丈夫ですw

f:id:tkm2261:20171028133452j:plain

自己紹介は数が多いので紹介することは出来ませんが、meetup参加条件がKaggleで最低1 submitだったからか、コンペ上位者等レベルの高い人が散見されました。

運営入れて40人弱でmeetupはスタート

発表① ONODERAさん『Instacart 2nd Place Solution』

www.slideshare.net

最初の発表はONODERA(@0verfit)さんによる、Instacartコンペ2位の発表でした。

概要としては

  • いつも買ってるコーラを買ってない時はダイエットコーラ買ってるなどの特徴を捉えたかった
  • 1位の人は過去のその商品の購買有無を0-1にして、数字として特徴にいれていた。これはやるべきだった
  • 予測値を確率として解釈するのは無理があるが、良い案がなかったため特徴の作り込みで対処した
  • 商品購買予測モデルと購買有無(None予測)モデルを2つ作って精度がかなりあがった

ONODERAさんはKaggle公式ブログやgitリポジトリも公開しているので気になる方はそちらもどうぞ。

Instacart Market Basket Analysis, Winner’s Interview: 2nd place, Kazuki Onodera | No Free Hunch

GitHub - KazukiOnodera/Instacart: 2nd place solution

Prize Winnerの話が生で聞けるのは貴重な経験でした。ONODERAさんありがとうございました!

発表② Jackさん『Santander Product RecommendationのアプローチとXGBoostの小ネタ』

speakerdeck.com

二人目は大阪からお越し頂いた、Jackさんです。長く私にとって謎の人で凄いお会い出来て良かったです。

Twitterを始めてくれて助かりました。

内容はSantanderコンペとXGBoostの概要の2本立てでした。

非常に資料がわかりやすいので見て頂ければと思いますが、Kagglerにとって有益な知見の塊でした。

  • Santanderコンペでの商品特徴をみて直近データと去年同月のどちらで学習するかを見つけられた
  • ラップトップのみで分析したので、データをローリングして学習、最後に幾何平均をとった
    • 直近重み付けとかも試したが、幾何平均が最も良かった
  • カテゴリカル変数をtarget平均で置き換える手法をとった
    • targe-based encodingと呼ばれて最近知られてきた
    • 単にやるとoverfitするのでCVのvalidationデータで特徴を作る
    • CVの切り方は特に気にしなかったが上手く言った
  • XGBoost概要はデータサイズやcolsambleを動かした時の結果への影響度やXGBoostアルゴリズムの概要を説明
    • (XGBoost使う人は一度見ておく事を強く推奨します)

途中電源が切れてLTにも回ってもらったりもしましたが、発表ありがとうございました!

発表③ mamas16kさん『画像認識コンペ(UNIQLO)にdeep learning以外の手法で殴りこんでみた』

speakerdeck.com

お次は、なんと若干学部3年生のmamas16kさんにUNIQULOコンペについて発表頂きました。

UNIQULOコンペ3位のthreecourseさんに面白いアプローチの人がいたと紹介頂き、今回知り合うことができました。

内容としては色を当てるコンペなのでひたすら色空間(RGB、HSV等)の3次元空間から特徴を如何に作るかという話で、

猫も杓子もDNNの中で良い着眼点だと思いました。Kaggleの衛星画像(DSTL)コンペでも色空間情報は有効だったらしく、頭の片隅に置いておくとコンペでも有効な場面がありそうです。

また、Probability Calibrationにも力を入れたと言っていました。

これはXGBoostなどのモデルが出す確率(スコア)は確率として解釈できない場合が多く、(というか普通できない。)

Probability Calibrationはどうにかスコアを実際の確率に近くする事を目指す手法です。

個人的にはLogistic Regressionは『訓練データの頻度=訓練データ予測値の和』となるので、こういう時はLogistic Regressionをかけてましたが、

Probability Calibrationという名前がついて一分野になっていることは知らず、非常に学びが多い発表でした。

1.16. Probability calibration — scikit-learn 0.19.1 documentation

学部2年でコレは末恐ろしく、また成果が出た折に発表をお願いしたいです。

ありがとうございました!

発表④ lyakaapさん『Carvana 3rd Place Solution』

※スライドは後ほど

※スライド来ました!

speakerdeck.com

最後の発表者はCarvanaコンペ③位のlyakaapさんです。

こちらはCarvanaコンペ後にKaggler Slackに降臨した折に、発表をお願いすることが出来ました。

こちらも学部4年生の方でした。発表者の半分が学部生とは、日本の将来に期待が持てそうです。

内容はスライドが来てからですが。

  • 領域検知はU-NETが最強
  • Dilated Convolutionを底の層に入れたのが聞いた。
  • Psedo-Labelingで学習データを増やした
  • 今回タスクとしては検知し易いものだったので、Psedo-Labelがそのまま信用できた
  • Psedo-Labelingと訓練データの割合や、解像度の違いでアンサンブルをした。
  • 1モデルを作るのに、学習に2日、予測に6時間かかった。

スライドの作りも非常に丁寧でわかりやすく、発表も落ち着いており、学部4年とは思えない風格でした。

今Smlyさんとコンペに一緒に出てるらしく、若いKagglerの台頭をまざまざと感じたmeetupでした。

こういう方々を見ると、日本の将来は実は明るいんでは無いかと思います。

LT

懇親会

そのまま会場で、ビールと大阪王将のデリバリで懇親会をしました。

1人1,000円は集めすぎかも。。。と危惧しましたが、フタを開けると追加で買い出ししてほぼ使い切りました

運営としては変に余るより会計が楽ですが、予想以上に食って飲みました。笑

要因としては皆若く男だけだったのと、議論の質が高く盛り上がったことかなぁと思っております。

何度か勉強会には参加したり主催したりしてますが、今回はトップクラスの楽しさでした。

TwitterのTLでも同様のコメントが見られたので、また次回開催していきたいです。

最後に

今回は参加頂きありがとうございました!

非常に双方向の議論で楽しかったです。あと運営がグダりながらも上手く進行出来たのは皆様のおかげです。

次回についても開催を予定していますが、基本的に発表者はコンペ(Kaggle問わず)上位を想定しているので連続開催とは行かなそうです。

なので皆さんが上位入賞した時がMeetup開催時期なんので、良い成績をとったらTwitterかSlackでドヤって下さい!

すぐスカウトに行きます!

その代わりといってはアレですが、LTは比較的何でもOKにしようと思ってるので、何か調べたとか新しい手法Kaggleで試したとかも絶賛募集中です。

何かあれば、TwitterかSlackまでお願いします!

Kaggle入門動画をつくった

皆様こんにちわ

今回はKaggle入門動画作ったので、その事について書いていきます。

Twitterでも告知したし、ブログは良いかなーと思ってたのですが、

英語の翻訳タイトルつけると、Googleが日本語でインデックスしてくれない事に気づき、ブログにも投稿することにしました。

良ければ見てみて下さい。

Kaggle入門 Porto Seguroコンペ

www.youtube.com

規約的に怪しかったので、Kaggleにも問い合わせてOK貰ってます。

https://www.kaggle.com/c/porto-seguro-safe-driver-prediction/discussion/41562#233452

英語での議論はここでやってます。

引き続きニートなので、Youtuberとしてお金入ってくると嬉しいですが、まあ現実は厳しいでしょうね。

内容目次

内容としてはこんな感じになってます。気になるところがあったら視聴してみて下さい。

  • Kaggleについて
  • Porto Seguroコンペについて
  • GCP立ち上げ(アカウント作ると付いてくる$300クーポン使用)
  • Bitbucketでgitリポジトリ作成
  • GCPの使い方
  • Ubuntuセットアップ
  • Anacondaセットアップ
  • Pythonコーディング (Pandas, scikit-learn, xgboost)
  • Gitの使い方
  • loggerの使い方
  • ロジスティック回帰
  • Cross Validation解説
  • Grid Search解説
  • xgboost解説
  • on hot encoding解説
  • Kaggleの提出方法
  • おまけ: 私の過去コンペのコードの解説