下町データサイエンティスト 新卒3年目が終わる
- 新卒3年目が終わる
- 4月~ コロナ
- 3月~ 需要予測の案件
- 5月 新卒Git研修
- ~6月 M5コンペ
- 7月 週刊 個人的に気になったデータサイエンスNews
- ~9月鳥コンペ
- 9月 Bonfire Data Analyst #3
- 10月 atma#6でdiscussion賞で賞金をいただく
- 11月 5週連続オンラインB’zライブ
- ~1月Riiidコンペ
- 1月白金鉱業FMがJAPAN PODCAST AWARDS 2020 推薦作品に入選
- 3年経って思うこと
- 最後に
新卒3年目が終わる
こんにちは。nino_piraです。
毎年恒例になっている1年間の振り返りブログの3年目です。 さて、今年も1年間を振り返っていきます。
4月~ コロナ
何よりもまず「コロナによる各所への影響を感じる1年」でした。
我々のお仕事ですと、クライアントワークが完全オンラインになったことが特筆事項であることは間違いないでしょう。
案件「内」の社「外」デリバーについて
自分の担当案件では、円滑にPJTを進行することができました。会議もほぼ100%オンライン会議でした。
クライアントと物理的に対面したのもキックオフの6ヶ月後のMTGが初めてでした。クライアントからは「毎週のドキュメント(バックログのwiki)の品質が高く、助かっている」とのお言葉を頂く機会もあり、オンラインワークでの自分の努力してることについて褒められて嬉しい限りでした。
案件「内」の社「内」デリバーについて
うまく機能したことをいくつかご紹介します。
- meetのリンク、報告書のリンクなど重要リンクを案件のチャットのアナウンスに固定表示
- どんな些細なことでもドキュメント化
- 独り言であっても案件のチャットにとにかく書き込む (15min考えて詰んだらmeetというルールを徹底)
- spread sheet, google slideのフル活用
- JIRAのチケットのフル活用
また、データサイエンティストだけでなくエンジニアと協働することも多くあり、それぞれの責務の切り分けはかなり気を付けました。(かなり反省点はありましたが。。。)
ちゃんとしたシステム化を行う上ではエンジニアの力が不可欠なので、PMとして最低限エンジニアと同じ用語で話せるようにキャッチアップや気配りはしました。
案件「外」の社「内」の人とのコミュニケーション
社内チャットで timesを運営しておりました。実質社内ツイッターです。
どうでもいい話から、仕事の相談をしたり、毎週水曜日に雑談時間設けたり、ごく稀ですがオンライン飲み会をしたりと、かなりの頻度でコミュニケーションが発生していました。
個人的なコミュニケーションだけでなく案件外の人と仕事に関する相談をする機会についても増え、様々なコミュニケーションの頻度がオフラインで働いているときよりも圧倒的に増えたと感じております。
コミュニケーションの促進という意味では、社内勉強会の話にも触れておきます。後述の週刊 個人的に気になったデータサイエンスを代表とし、恐らく「社内で勉強会を最も開催した人」だと思います。勉強会を主催することは多少人事評価に影響があるらしいのですが、個人的には完全に趣味のモチベーションで各種勉強会の主催をしておりました。
関連話題としてコンフルエンス(wiki)についても触れさせていただきます。FY2021上期に自分が書いたコンフルエンスで総計367いいねを頂いております。多分全社員でぶっちぎりの1位です。記事数が33となっていますが、案件外の記事のみが集計対象です。案件関連の記事も含めると半期で200記事程度書いていると思います。
新卒3年目から突然始めたことではないのですが、上記のように、社内勉強会も多く主催しながら、知見共有の意図で多くのコンフルエンス記事を書いておりました。
案件「外」の社「外」の人とのコミュニケーション(プライベートでのコミュニケーション)
オンライン飲み会など、いまままで物理的に会ったことのない人達と交流する機会が増え、知り合い・友達がかなり増えた1年でした。
コロナ以前に界隈の人と毎月開催していたがオンライン開催になった通称「dddn飲み会」、kaggle masterのかえるさん企画の「草の根meet」(ツイッターに突然meetのリンクが貼られる企画)、同じくかえるさん主催の「kaggle 忘年会」など数々のオンライン飲み会に参加させて頂きました。これらの会ではただ楽しい話をするだけでなく、「最近話題になったあの手法の説明して」といった技術的な議論や「御社最近どうよ」などの情報収集も行われ楽しい時間を過ごさせていただきました。
自分の会社の人としかコミュニケーションを取らないと(特に技術の話について)過学習してしまうので、社外の人達とのコミュニケーションはかなり重要だなぁと感じました。
コロナで吹っ飛んだ悲しみイベント
- Google Cloud Next
- 初めての海外出張の予定だった。。。
- さよなら。。。初の西海岸。。。
- Data Gateway Talk Vol.6
- TJOさんをはじめとした大物達に登壇してもらう予定だった自分主催のイベント
- 非常に楽しみであったために、非常に残念。。。正直2020年で中止になった系の話の中でもっとも凹んだ
- いつか、、、再び、、、開催したいです、、、
data-gateway-talk.connpass.com
まぁ、そんなこんなでオンラインワークの割には、社内外の人とたくさんコミュニケーションが取れたかなぁと思ってます。
3月~ 需要予測の案件
1年間PMとして関わっていた案件について、ありがたいことに会社の事例として記事化がされました。(他にもちょこちょこプリセをやっていました)
案件の詳細は話せませんが、かなり幅広い範囲をデリバーしました。
- PoC → MLopsの設計までたどり着いた
- ビジネス構想策定などのビジネス的な立ち回りもかなり経験した
- クライアントのテックイベントに登壇したりと通常のデリバーの範囲を超えたご支援
言える範囲で「これはやって良かった」という点について共有します。
いかに手早くそれっぽい精度のモデルを作るか
- kaggleで公開されているコードを流用することで、モデル作る → 結果を見せる → 精度に基づくユースケースの検討・分析対象の変更議論(粒度だったり、対象データ範囲だったり) → モデル作る → …のループを かなりの早さで回すことが出来ました。
- 早めにモデルを作ることで、社内含む各種ステークホルダーの温度感を冷ますことなく、モデルの実活用を見据えた議論ができたなぁと思っています。
- ベースラインモデル作成以降の精度向上などの深掘りを避けたことも良かったと思っております。早めにモデル作成を切り上げ、ビジネス要件整理や誤差が起こり易いデータの特性の考察など、様々な議論に時間をかけれたことは良かったと思います。ただ、初手でいい感じのベースラインを作る知識や、これ以上良くならないであろうという勘所は普段の勉強の中でキャッチアップする必要がありますので、日常での努力は不可欠だと思います。
初期からPoCだけでなく、システム化・ビジネス化といったところまで考えていた
- MLをPoCだけで終わらせたくないという自分の強い思いもあり、PoCの初期段階から実応用を見据えた検討を行っていました。
- 具体的にはシステムへの導入での検討事項や実際のユースケースの詳細化をかなり初期段階から検討をしていました。
「誤差が起こり易いデータの特性」を説明し「誤差を受け入れた上での運用が必要」であることをしっかりと説明する
- 機械学習において精度100%は難しいので、誤差を考慮に入れた運用(Human in the Loop)を目指すべきという点を強調しました。
- そのためには、「どのような背景を持つデータで誤差が生じやすく」「運用上どのように対応すべきか」を考える必要があります。PoCではこれらの検討にかなりの力をいれました。
書ける範囲ではこれが限界の内容となります。
最近だと、特にMLopsに関してはかなり思うところがあるのですが、ちょっと情報公開が難しいのでご容赦ください。。。いやー。MLops激ムズっすね。。。
最後に本当にどうでもいい話をさせて頂きます。
事例記事を見た友人数名から「太った?」との連絡は来て「・・・」となりました。あ、はい。うん。
5月 新卒Git研修
まだオフラインで働いていた2月頃、先輩から「新卒研修で1日好きに使っていいよって言われたら何やる?(意訳)」という雑談の流れから、企画が爆誕。
自分が1年目の時にgitで苦労したという経験もあり、gitを取り上げることになりました。
新卒からの満足度評価も上々でした。OpenBP(下記参照)でも資料を公開し、そこそこのview数を頂いていることも加味すると、それなりにいい研修を企画できたのでは、と思います。
~6月 M5コンペ
社内の(実質固定)チームshirokane_friendsで参戦
LBは信じられないし、おみくじ要素が強いと予想されていたしとかなり謎なコンペでしたが、メンバーがvalidationを非常に深く考えており、これにより無事42位で銀メダルを獲得しました。ソリューションについては下記資料を参照してください。
コンペ終了後、外部の方も含めた反省会を企画しました。様々な議論を行うことができ、非常に楽しかったです。
自分達が考えていたことを記載したツイートをはJackさんが引用RTして褒めてくださったことが個人的に非常に嬉しかったことも思い出です。
結構、自分と共通する考察が多い。自分も、リツイートのcv2でバリデーションしていて、cv3ではどうしてもスコアが出なかった。(悪さをしている日は特定したが、csvに無い祝日だったとは…。)
— Jack (@sakata_ryuji) 2020年7月1日
最終的に、cv3の期間(Public LB)を追求したモデルは爆死すると予想し、全面的に無視することにしました。 https://t.co/B5eRWzR7BN
7月 週刊 個人的に気になったデータサイエンスNews
「個人的に気になったデータサイエンスニュースを毎週月曜18:00~18:30にmeetで配信する」勉強会を企画しました。
前述に書きましたが、自主勉強会を行うことは一応人事評価になるらしいですが、あまり期待しておらず、完全に自己満足がモチベで運営していました。
毎回約15人の方が来てくださっているのは嬉しい限りでしたが、「データサイエンティスト以外の職種の方に、もう少し来てもらうために何かアクションすれば良かった」と反省しています。
2月になり開催回数が30回も超えて、かなり慣れてきたので、(なんとなく)外部公開を始めました。 外部公開用のmeet(or NweWork)でgithubを映しつつ、その画面を社内のmeetで映しつつというややこしい体制で配信しております。 ちなみに外部の方の参加人数ですが、ありがたいことに毎回約10人~15人くらい参加してくださっています。 今後も可能な限り外部公開を継続していこうと思っております。
下記のカッコイイ画像は会社の有志の方がロゴとして作成してくださいました。感謝。
~9月鳥コンペ
会社の後輩+自分が立ち上げたMusic×Analytics Meetupというイベントの運営を引き継いでくれた人達と参加しました。
毎週土曜に定例をしつつ、各自が書いたコードをgithubで共有し、各自(社)が持っているGPUでぶん回すという作業を1~2ヶ月程度やっていました。
ほぼ初めてのNNコンペでしたが、このコンペを通しpytorchでゴニョゴニョすることにだいぶ慣れました。
かなりお気軽な気持ちで取り組んでいましたが、結果、無事銀上位に入ることが出来たので大変よかったです。
ソリューションとしては、鳥が鳴いていない(no_call)という判定及び学習に工夫をしたことが一番効いたと思っています。
9月 Bonfire Data Analyst #3
Yahoo主催のアナリストの勉強会にお呼び頂き登壇しました。運営チームにデザイナー(?)やエンジニア(?)がアサインされており、かなり質の高い運営でびっくりしました。 NO MORE 無駄分析というテーマで自分が思うことについてお話させていただきました。
資料が永久保存版
— ウィル-Sho Maekawa / データアナリスト (@willanalysts) 2020年9月3日
どの資料も為になる😊
資料はのちほどコンパスでも共有します!#yjbonfire pic.twitter.com/h7Mh9LFFGk
10月 atma#6でdiscussion賞で賞金をいただく
会社の後輩とチーム組んで参加しました。我々が作成したGCN(グラフ畳み込みネットワーク)のsampleコードを公開したdiscusstionにもっとも「いいね」がつき、賞金を頂きました。肝心の精度に関する順位は振るわなかったのですが、私にとっては貴重なコンペでの初賞金です。
コンペ終了後にオフラインでの反省会があったのですが、当日の朝に登壇者の数名のキャンセルが出てしまったらしく「そこで今からでもLTやりたいよ!っていう方いらっしゃいませんか…??登壇予定の方は弊社表参道オフィスに来場いただきますが、急遽登壇したい方はオンラインでの発表で構いません!(原文ママ)」との募集があり、11:00に手を挙げ、電車の中でスライドを作り始め、14:00~発表をしました
ちなみに、もう1名資料作成RTAをした方がいたのですが、データ分析界隈で仲良くしていた人で「おまえもRTAか!?」的な話をした記憶があります。当日の反省会は非常に楽しかったです。GrandMasterの方に「LightGBMのパラメータ見せて」とかその場でコードをもとにした議論が出来たのは非常に面白かったです。
今思えば、この反省会がコロナになってからオフラインで参加した唯一の勉強会でした。
自分は(一応)ほぼ毎回atmacupのコンペには参加登録し、ときたま(睡眠時間を削り)それなりに頑張って参加していました。日本語で開催されていることで、kaggleよりも参加しやすいことに加え、Twitter、discussionでのお祭り感もあって楽しく参加させてもらっています。
11月 5週連続オンラインB’zライブ
最高でしたね。毎週土曜日の19時は家で正座待機でした。
まぁよく、全部違う曲でライブを5週連続で出来るなぁと思いました。
~1月Riiidコンペ
会社の人と全員ソロ銀メダル圏内の状況で恒例のshirokane_friendsチーム爆誕。最終盤でNN担当として別の先輩もジョイン。
このコンペでは、time-seriesAPIという「推論の際にはkggleシステム上でユーザから見えないテストデータがバッチで得られ、そのバッチごとに予測を行う。またバッチデータが出てくると同時に前バッチの正解データも与えれる。つまり前バッチまでの情報を特徴量作成に使える。しかも計算時間・メモリ制限がある」というという機能で実施された「かなり実運用に近い設定」でのコンペでした。
例えばAさんに対する「直前の問題に正解したか」「過去の問題の平均正答率」といった特徴量をテストデータの中でも随時更新しようと思えば出来るコンペでした。この特徴量更新システムを実装するのがまぁ激ムズでした。ちなみにやろうと思えばモデル自体もバッチで随時再学習も出来ますが、恐らくメモリと計算時間の問題で実現可能性はかなり低いです。
チームマージ後にこの各自が好き勝手作り上げた特徴量更新システムをチームで統一するのが、、、、まぁ、、、、やばい、、、しかもdebugがしんどい、、、
という感じで、チームマージをしてみたもののなかなかのヤバさがありました。某先輩さんが全部いい感じにしてくれました。まじで化物。
結果は(安定の?)銀メダル上位。私個人としてはこの1年で銀メダル4枚目です。 金メダル欲しいですね。。。苦笑
また、チームメンバーの一人がmaster昇格しました。おめでとうございます!!
我々はLightGBMでゴリ押しましたが、上位陣はほぼ全チームtransformerでした。「いやー。テーブルデータにもtransformerの時代が来たか」と痛感しました。その後、ツイッターの人たちとtransformer勉強会を開いたりし、なんとなーくtransformerが分かるようになってきました。
Riiidをひとりで黙々と復習してるんですが、1人だとなんか別の楽しいものあるとすぐ逃げちゃって続かないので良ければ一緒にやりませんか?👀
— ML_Bear (@MLBear2) 2021年2月11日
ちなみにtransformer勉強会にお誘いしてくださった方もLightGBMでゴリ押しており、ほぼ同等の順位でした。彼らの参戦記ブログを見て「たぶん9割方同じ着想で同じアプローチやっている」なぁと感じたので、恐らくLightGBMだとこれくらいが限界かと思います。
1月白金鉱業FMがJAPAN PODCAST AWARDS 2020 推薦作品に入選
吉田さん主催の皆さんご存知(?)白金鉱業FMがJAPAN PODCAST AWARDS 2020に入選されました。
自分が「OpenAIの音楽生成論文を解説した会」がノミネートされ、「え!?まさかの技術をガッツリ話した会!?」と驚きました。
業界でそこそこ評判らしいという噂を聞く程度でしたが、このようにそれっぽい賞に選ばれたことは嬉しい限りです。
3年経って思うこと
去年から引き続き「データ分析(特に機械学習)の実活用」について本気で考える一年でした。
今年は、色々な幸運に恵まれ、Poc・ビジネス構想策定・MLops企画までを幅広く行った案件にPMとして携わることが出来ました。
しかし、多くの案件では高々1年という短い期間でここまでたどり着くことが難しいと思います。過去には「あの案件どうなったんだ」的な案件も幾つか経験しました。過去案件で悔しい思い(?)をし、いかにシステム化まで継続するかに熱意を燃やしていたことも、成功(?)の要因の一つであると思っております。
関連話題として、「全てのデータ分析(特に機械学習)案件は必ず実活用(特にシステム化)されなければいけないか」という問いは誰もが一度は考えたことがあると思います。私は(特に受託分析の文脈においては)Noだと思います。求めるべきは(クライアントだけでなく内部の人も含む)ステークホルダーが案件を通し「満足」するかが重要だと思っております。
この件に関しては発信者・読み手の立場により「満足」がどんなロジックツリーで成り立っているかや、Yes or Noの見解が大きく異なることが想定されますので、これ以上の言及は避けます。ただ、自分の考えとしては、ステークホルダーが満足するということが重要だと思っている点は強調させて頂きます。
最後に
この流れで突然なのですが、転職します。
有給をちょこちょ消化して6月に退職し、7月から次の職場となります。
ここ1-2ヶ月、転職活動に伴い自分の人生設計の見直しなどに相当悩みました。相談に乗ってくださった方々に大変感謝しております。。。
前章に書いたことと多少矛盾が生じますが、機械学習の実活用に更にこだわった環境に転職します。
いわゆる転職エントリについては書こうかなぁと思っていますが、気が乗らず書かない可能性があることはご容赦ください(汗
転職をするとなると「新卒」という肩書きが使えなくなるので、この「新卒n年目が終わるシリーズ」は本ブログを持って完結しようと思います。 いま改めて1年目のブログを読むと「gitすらまともに使えなかったぺーぺーが、 一丁前にカッコつけて機械学習プロジェクトのあり方を語る生意気な大人になったな」と思います。
今後もデータ分析(特に機械学習)界隈には居ますので、界隈の皆様は引き続きよろしくお願いします!!!