tkm2261's blog

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

コネなし論文なし英語苦手なアラサーのおっさんだけど米国CS大学院入学に頑張ったので全てを晒す ー はじめに -

皆様

こんにちはtkmです。
今回から数回に分けて米国のComputer ScienceのPh.D.とM.S.の受験について語っていきたいと思います。

Ph.D.は駄目でしたがUC Irvine MSCSから合格を貰えたので後に続く人たちのためになるっぽいもの書いていきます。

スペック的には下界を攻めた気がするので多くの人に勇気を与えたい。笑

最近は受験する人が増加傾向なのか、記事が増えてきましたが、超優秀勢だったり、恥ずかしいからか細部が隠してたりするので、全部晒す記事は需要ありそうなので書きます。もう見栄とか張る歳でもないですし(´・ω・`)

あとなるべくポエムは廃して客観的な数字を記載するよう頑張ります。

2年半かかった受験の全てを書いていきたいと思います。

とりあえず私のスペック

  • 29歳独身

  • 2011年東工大経営システム工学科卒業(BEng of Industrial Engineering and Management )

    • GPA: 84.2/100 (4.0換算で3.37)
  • 2013年東工大大学院社会理工学研究科経営工学科卒業(MEng of Industrial Engineering and Management)
    • GPA: 88.9/100 (4.0換算で3.56)
  • 専門は連続最適化でSDPという対称錐推計画問題を扱ってました。
  • 論文なし
  • 英語は思い立ったときTOEIC 630点、最終的にTOEFL iBT 92点
  • GREはQuantitative: 168, Verbal: 141, Analytical Writing: 2.5
  • データ分析・機械学習分野での5年の実務経験
  • Kaggle Master
  • 留学奨学金全落ち
  • 完全コネ無し

なぜ米国CS Ph.D.を志望したか

  • 昔から研究してPh.Dが欲しかった
  • 日本のPh.D.はその後のキャリアでプラスに働きにくい
  • 米国の就労ビザがほしかった
  • 修士から時間が経っていたので3年でPh.D.とれる気がしなかった(米国PhDは基本5年)
    • 英国とかの3年Ph.D.は入学時点でResearch Proposalが必要と聞いてビビった
  • どうやら無料な上に給料がでると聞いた
  • 英語を運用出来るようになりたかった。

留学という観点からみた私のスペック

  • 年齢は本番の出願では関係ないが、多分国内奨学金の選考で見られている
    • そもそも学生でないと応募できないのも多い。30歳を超えるとさらに狭まる
  • 学位がnon-CSで卒論修論書いたけどBEngとMEng
    • BEngとMEngだと研究能力や経験があるとみなされない。むこうだと授業取ってただけの人と見られる
  • GPAが3.6超えてない
    • 日本だと意識しないけどGPA超大事。米国はGPAが就活まで効いてくるので覚醒剤飲んでも勉強しているのはこのため
    • 米国外のGPAは当てにされてない説もある
  • 論文ない時点でPh.D.はほぼ無理
    • 論文は英語で研究活動が出来る事の最高の証明。おじさんみたいに苦労しないよう学生は頑張りましょう。
  • TOEFLは大体100点が推奨で90点が最低要求(後述)
  • GREのVerbal: 141, Analytical Writing: 2.5は誰が見てもクソスコア
  • 実務経験はかなり効いたと思う。
  • Kaggle Masterは唯一のアピールポイント
    • UT Austinの面接もここを押しまくったし聞かれた。落ちたけど
  • 米国Ph.D.は学生に給料支給が前提なので、お金持ち込むと受かりやすい。というか英語怪しい日本人は奨学金ないと厳しい
  • 米国は超絶コネ文化なので、推薦状は強力。もちろんそんなものは持ってないし、コンタクトもとってない

留学における日本人の不利な点

  • 英語版の学位名が適当だったりする。
    • 多分自分の学位の英語名暗記している人多くないと思う。
    • 卒論修論も立派な研究活動の一部なので、研究能力があることを頑張ってアピールしましょう。
  • 学部修士ともに取る授業数が膨大でどこでどの数学を勉強したのか把握されない
    • インタビューで「君はどの授業で数学を学んだのか?」と聞かれた
    • 向こうは学期で3つ程度しか授業をとらない
    • 願書に数学関連の履修した授業を書かせるところも多いが、日本語名が長すぎて大体かけない
      • StanfordのCS243みたいな授業コードを日本の大学も導入して欲しい
  • GPAを取る側も採点側も適当にやってる
    • 日本だと就活でも見られないし、単位貰えればOKの精神で適当にやってしまった人多いと思う。
    • 米国では重視されるので注意。例えばGaTechのPh.D. in Computer Scienceでは『The desirable minimum undergraduate GPA is 3.5/4.0.』と書いてある。
    • やっちまったものはしょうが無いので、過去の自分が頑張っている事を祈りましょう。
  • 日本学生支援機構奨学金は学生ローン
    • 『特に優れた業績による返還免除』になったのでCVに書いたが、書き方が凄い難しかった。
    • 結局記載は「Repayment Exemption of Student Loan (about $25,000) for Students with Excellent Grades ー Japan Student Services Organization」とした。金額はしっかり書いてアピール

受験結果

f:id:tkm2261:20180415055419p:plain

年齢的にもきつかったので2年間応募しまくりました。推薦状を書いていただいた方々の励ましなしにはここまで応募は出来ませんでした。

中国人留学生は30ぐらい応募すると聞いていたのでノリと勢いです。

最終的にPhDでインタビューが来たのは去年のUT Austin ECEだけでした。しかも最終的に祈られました。

今年はMSも混ぜて正解でしたが、私のスペック的にはPhD減らしてMS増やすべきでした。
ただ諦めもつかなくて記念受験的に受けてしまいました。

日付を細かく書いたのは、出願から4ヵ月間は本当に精神的に辛いので、後に続く人たちに祈られるにしてもいつ祈られるかを共有したかったからです。

我ながらよくこれで応募したと思う。

2年半諦めなかったことが最大のファインプレーだった気がする。

目次

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までお願いします!