下町データサイエンティストの日常

下町データサイエンティストの成果物

データサイエンティスト見習い 新卒1年目が終わる

f:id:pira_nino:20190428223734p:plain

1. 新卒1年目が終わる

こんにちは。pira_ninoです。
表題の通り、 新卒1年目が終わりました。。。 いつまで「見習い」と名乗っていいのですかね(苦笑

せっかくの区切りなので、「受託分析会社の1年目が何をしているか」を自分の経験に基づいて書いていこうかなぁと思います。

2. 注意書き

受託分析なので、基本クライアントの名前が出る話は一切出せません。つまり、具体的な仕事内容については書けません
これ故に、受託分析会社のデータサイエンティストは勉強会などの表舞台になかなか出てこないのかなぁと思っています。自分も色々話したいことはありますが、表舞台に出すのはやはり難しいです(汗
また、 私の所属会社を一部の方はご存知かと思いますが「一応個人のブログ」であることをご了承ください。 本記事では、「ふわっと」受託分析会社の1年目が何をしているかをお伝え出来ればと思います。

3. 全体的には良かった / いい会社に入ったと思う

良いというのは、「最高にやりたいことを出来た」という意味ではなく「満足度が高い」という意味です。
全ての仕事をパーフェクトにこなしたという意味では無く、色々な経験をしたので満足という意味です。 これは、仕事の内容も含め、下記の理由により「弊社はいいぞぉー」と感じられていることが要因だと思っています。

3.1 優秀な同僚

先輩 / 同期が良い人ばかり。頭もいい。 本当に頭がいい。
修士も含め大学6年間を雰囲気で勉強してきた自分からすると、「ちゃんと勉強してきている人が多いなぁ」と 感じました。 定量的には、データサイエンティストの同期約15名のうち5名が博士出身という一般的にはありえない割合で博士がいます。
同様に、「機械学習の知識が深い方」「コンサルワークが深い方」といったようにスペシャルな能力を持った人が私の周りにたくさんいます。何か困ったことがあったら「誰かしらに聞けばすぐに解決できる環境」という点は非常にありがたいと日々感じております。
また、同じ理系出身が多いということもあり、居心地は良いです。 やはり毎日会社にいく上では、「良い人に囲まれている」という事実は非常に大切です。

3.2 働きやすい環境

単純に職場の立地がいいです。正直、渋谷や六本木勤務は自分には向いていないと思います。 加えてフレックスタイムっていいですね。弊社では多くの朝会が11時から始まります。「それは朝では無い」というツッコミは入社3ヶ月くらいで忘れました。
会社の設備は至って普通です。イケてるベンチャーみたいな感じではありません。開発環境も普通にいいです。Mac Book Pro支給だし、ちょっとした計算も社内サーバーにsshで入ってできるし、何も不満はありません。 ただ一つ会社に改善してほしいことがある。無料のコーヒーが美味しくない。このことだけは強調しておきたい。

4. 新卒1年間何をやってきたか。

お待たせしました。1年間何をやってきたかを書ける範囲で書いていきます
実は本記事は社内wiki(コンフルエンス)に書いた記事にマスキングをかけた記事になります。 後述しますが、私はコンフルにありとあらゆる文書を残すことがマイブームです。皆様も是非コンフルなどを用いドキュメント文化を積極的に行うことをお勧めします。

4-7月:新卒研修

研修内容については特に触れません。まぁ皆様が想像している通りです。 ビジネス研修 → エンジニア研修 → プロジェクト体験 みたいなテンプレです。
一つやってよかったなぁと思うことを紹介します。「新卒同士で研究発表LT」はやって良かったです。
理系初対面あるある「何の研究やってたの?」という会話。こんなの立話で終わる訳無いですよね。
ということで、ちゃんとしたLT会を主催しました。同期の研究を知れて楽しかったです。
「物理素粒子博士のナニモワカラナイ研究」や「街コンとは / モテる男子の特徴」についてなど幅広い研究(?)の話を聞けて楽しかったです。

肝心の研修についても少し触れておきます。最後の1ヶ月程度で新卒3名で仮想PJTを回す、プロジェクト体験(通称:ミニプロ)が行われました。
私は、福利厚生の一つである、ランダムで社員3人の組み合わせが生成されランチ補助を行う制度の改良PJTを担当しました。 具体的には、何をもって良い肉会とするかの「KPI策定」(例:実施確率が高ければいいのか)と、その「KPIを最大とするようなマッチングアルゴリズムの作成 and シミュレーション」を行いました。
最終発表がそれなりに評判がよかったこともあり、新卒研修終了後に、延長戦として自主的に上司と交渉し自分が作成したマッチングアルゴリズムの運用化を行いました。
最近気が付いたのですが、自分が作成した人生初の機械学習システムです。そう考えると感慨深いものです。。。

6月〜:kaggle活動

弊社の新卒研修で、「kaggleのTitanicをやってみよう」のコーナーがありました。この研修は、「データの前処理 / EDA → モデル作成」 の一連の動作を体験することが目的となっています。
自分はデータ分析の経験がそこそこあったのでTitanicでは物足りませんでした。そこで、他コンペに手を出してみましたが努力の方向性すらわからない問題にぶつかりました。(まぁSantanderコンペだったのでなんとも言えませんが苦笑)
そんなことを上長と1on1で話すと、「弊社には個人でkaggleをやっている人がいるけどkaggleを組織として取り組んでないんだよねぇー」との話題になりました。 自分的にも「強い人と一緒に活動したい」との目論見もあり、「弊社でもkaggleを組織的にやろう」と提案し、様々な人を巻き込み正式に活動を開始しました。

具体的な活動として、以下の活動を行っています。

  • 現行コンペに参加する
  • 過去コンペの知見をまとめる

前者はともかく、後者はユニークな活動であると思ってます。
過去コンペの知見をまとめることが非常に有用であることは想像がつくと思います。
過去コンペは、現行コンペと比較した際、期限がないので短期的に工数が発生せずに取り組め、また敷居も現行コンペよりも低いため、kaggle初心者でも取り組みやすいです。 このような背景/ 目的を踏まえて弊社では「過去コンペまとめ」を積極的に行なっています。

肝心の現行コンペですが、なんとか私もeloコンペで銀メダルを取れました。
先輩のおかげです。。。詳しくは先輩が書いたQiitaを読んでください。

qiita.com

現行コンペを初めて走りきって、日々業務と並行しながらkaggle活動に取り組まれている方は本当に凄いなぁと痛感しました。。。。自分は先輩についていくだけで必死だったのに、いわゆるkagglerの方って本当に凄いと思います。。。

7月:B'zブログ バズる

本配属された直後に空き時があり「B'zの歌詞にLDAとかw2v」とかを適用させた実験をして遊んでた。 社内wikiにまとめるついでに「はてなブログ」にも書いてみました。(人生初ブログ)
はじめは、B'z好きの方々を狙っていたつもりであったが、機械学習の人たちにウケてプチバズりました

pira-nino.hatenablog.com

当時の正確なview数などは遡れないですが、はてなブログで週間11位を獲得するくらいまで伸びました。

blog.hatenablog.com

LDAがバズったのに、(後輩と一緒に書いた)w2vが伸びなかったのはちょっと悔しかったです。。。個人的にw2vの方が面白い内容だと思うので、是非読んで下さい(宣伝)

pira-nino.hatenablog.com

今思うとコーディング規約守ってないし、matplotlibの可視化はオブジェクト指向ではないしでコードが非常に汚いです。。。コードを綺麗に書くということも学んだ1年でした。(小並)
また、本ブログがプチバズりしたおかげで、社外の勉強会で「B'zの人」って言われることがあり、めちゃくちゃ嬉しかったです。
「技術者はアウトプットをどんどん出すべき」という話題をよく見かけますが、本当にその通りだと思います。自身のブランディング向上も含め様々な効果ができます。「なぜoutputを出すか」「どのようにネタ探しをするか」はu++さんの以下の資料にまとまっているのでご参照ください。

speakerdeck.com

8月-10月:強化学習案件

クライアント名は書けないのですが、強化学習関連の案件をやってました。この案件が「超学びのあった良い案件」and「思い入れのある案件」なので、詳しく書きます。

結構しんどかった。

この案件、結構大変でした。 数年振りに「何から手をつけていいか分からない」経験をしました。 野球でいうと、「打席には入ってるものの、バットの持ち方すら分からない」みたいな状況です。

1.強化学習 / 深層学習わからん
雰囲気では知っていたが実質何も知らなかった。 強化学習は実質入門書が存在しないし、深層学習は雰囲気でkeras書ける程度だったし、一方で案件のメンバーはみんな精通してるしで精神的にきつかった 。。。

2.エンジニアわからん
情報系出身でなく、経営工学出身の自分には、「git? PEP8?」状態であった。新卒研修ではもう少し、案件応用を見据えた内容を教えてほしかったなぁ。。。そしてB'zのブログのコードを今見ると超汚いなぁ。。。(小声)
他にもシステム化を見据えたコード実装や、クラスの切り方など未知の体験だらけでした。

3.ドメイン知識がない
どんな業界がクライアントであったかは書けないが、まじでドメイン知識がなさすぎて辛かった。
受託分析ではドメイン知識が案件ごとに切り替わるので、キャッチアップが大変である。

しかし、いい案件だった

とはいうものの「超学びのあった良い案件」と思える最高の案件だった。
なぜそう思えるか?以下の2点が全てである。

  • 技術的に難易度が高い案件だった(強化学習なんて知らんかった)

  • 圧倒的技術力に加え、なんでも教えてくれるメンバーと仕事ができた

今まで技術的なことは独学で乗り切っていた自分としては、彼らに技術を学べた経験は非常に大きい。これ以上短期で技術を学ぶ機会はしばらくはないと思う。
冒頭にも書いたが、結局「誰と働くか」が案件や会社に対する個人の満足度に直結すると思う。

さて、本案件で何を学んだかを、かいつまんで以下に列挙します。

  • コードの書き方

    • もともと、分析出身であったことから俺俺notebookコードを書いていた
    • この案件で「ちゃんと」スクリプトで書くことを学んだ
    • 今となっては一切notebookを叩かない。(kaggleのEDAは除く)
    • ディレクトリ構造とかもなんとなくわかってきた
    • クラスの切り方やメソッドの命名方法など、なんとなくオブジェクト指向を理解した
  • git

    • 研修で雰囲気を学べたが、まぁ現場は違うよね。。。
    • WIPでもだす・プルリク上でのコメントのやりとりといった文化を学ぶ
    • わからないことは先輩に聞く事件が多発した
  • documentを読む

    • 例えばpandasのpivot_tableを使うとき、雰囲気はqiitaで掴んどいて、絶対にdocumentで最終確認するようにった
    • これは先輩教えであり、引数の形や返り値の形を正確に確認できるので絶対に行なっている(最近はあまりqiitaを信用していない)
  • 結局論文が正義

    • 素人な我々が考えたヒューリスティックな解決は得てしてうまくいかず、論文ではこんな方法をやってるからやってみようが正解
    • 加えて深層学習の論文は基本を抑えたら、最新のを読まないとまじで話にならない
    • 学生時代は、1998年の潜在クラスを元論文としてたとか恥ずかしい
    • documentもそうだが、英語への抵抗はなくなった
  • 複雑なkerasがちょっと書けるようになった

  • 強化学習がちょっとわかるようになった

    • 個人的な所感だが、強化学習は基本的にはシミュレータが必要なので、実案件としてはしばらく流行らないと思う
    • 学問としては発展途上であり面白い領域なので、論文を読む分には良い分野だと思う
  • 困ったら強い人に対面で聞きに行く

    • じっくり考える系の問題はさておき、分からないことはすぐに有識者に聞きに行く
    • 本案件の関係者は、みなさん非常に聞きに行きやすい方ですごくよかった(語彙力)
    • この会社の人はめちゃくちゃ強いことを再認識。凄い(語彙力)
  • メモ書きは全部社内wiki(コンフル)に

    • ちょっとした議事録など雑多なことは全部コンフルに。notメモ帳。
    • コンフルに書いておけば、簡単に共有できる。

11月〜:強化学習書籍執筆に携わる

弊社にいると年に数回書籍執筆の話題が降っています。
ちょうど自分の稼働に余裕がある時期に、強化学習書籍の話が出てきたのでジョイン。
弊社では、新卒1年目であっても書籍執筆に関われるチャンスがあります。
自分は連続制御(Continuous Control)の章に取り組んでいます。 順調にいけば、今年の夏頃に発売予定らしいですので皆さまお待ちください。

12月-2月:NLP案件

どんなクライアントかを、もちろん書けないのが受託分析のツラミです。(n回目)
使った手法も詳しく話せないのですが、分散表現やトピックモデルなどなど有名どころのモデルを使いました。
この案件に関して、個人的に思い入れがあるポイントとして、技術的な話ではなく「運用 / 分析方針を自分で決めれた」ことが挙げられます。 社内の様々な事情により、PJT運用に関する様々なことを能動的に動く必要があり、大変学びになりました。
また、最終報告では次フェーズに向けた提案といったコンサルワークも行えて、充実度が高い案件でした。

1月〜:社内ドキュメント職人になることを志す

様々な案件をこなすにつれ、「考えていること / 進捗 / 知見のドキュメント化の重要性」を感じる機会が多くありました。例えば、「あの資料なんだっけ?」「議事録どこにある?」「分析方針のブレストをしたホワイトボードの写真どこに置いたっけ?」といった、「過去の記録を遡る必要性」がある事象が多々ありました。
また、「この手法ってどんな手法?」「このツールってどう使うの?」といった「マニュアルが属人化している」ことも多く、何かと情報共有に困る機会が多くありました。 これらの問題に対し、現在の環境下では社内wikiである「コンフルエンス」の活用がもっとも有効な手段であるとの結論にたどり着きました。

ja.atlassian.com

そんなことを考えていた際に、ちょうど以下のブログに出会いました。

note.mu

樫田さんの言葉を借りると、ドキュメント化を行う面白さとメリットは以下の2点であると私も考えています。

  • 過去の自分の考えや情報、アウトプットがまとまっている
  • 自分の記憶というものは共有性という意味では非常に不便で、その一方でドキュメントというのは非常に共有性に優れるということです。

この2点について、私は非常に共感しました。 弊社には、様々なジャンルのスペシャリストが多くいますが多くの知見はうまく共有できていない現状があります。彼らの考えていることをドキュメント化することで、知の高速道路ができ、理想的な環境を作れると私は考えています。

そんなこんなで、私はコンフルエンス職人になることを志ました。 私が書いた、社内向けブログ「コンフルエンスのすヽめ」という記事から一部抜粋

1. Why コンフルエンス?
 ・ 組織として、共有知になる
 ・ 個人として、ドキュメント化能力 / 自己承認欲求 / 他の記事を見るようになり能力up のメリット
2.コンフルエンスを書く
(こんな感じのことをコンフルエンスに書くべきでは?という提案)
 ・ 案件の情報
 ・ 個人の知識 / 考え (ビジネス / アナリティクス / ポエム)

ちなみに私は必ず ビジネス / アナリティクス / ポエムの3つのカテゴリ分類を意識しながら記事を書いてます。(このブログはポエムです笑)

3月:Data Gateway Talk爆誕

データサイエンス系の勉強会に参加していて、「登壇者強い。。。」と思う機会が多々ありました。
一方で、「そこまで強くなくとも、喋りたい人は多くいるのでは?」と思い、以下の内容をツイートしました。

すると「100いいね」とプチバズリし、「せっかくだし企画するかぁ!!」と一念発起し、様々な協力者のもとでData Gateway Talkが誕生しました。
先日無事にvol. 1を開催することができました。1ツイートから、分析官を40名も集えるイベントの実現ができて、個人的には嬉しかったです。
企画の経緯や初回の様子は別ブログにまとめる予定なので乞うご期待ください。 また、登壇者・会場貸してくれる方については随時募集中なので、希望者はぜひツイッター等でご連絡ください。

data-gateway-talk.connpass.com

その他

役員とご飯行ける

弊社では、役員をご飯に誘えます(Googleカレンダーに予定入れるだけ)。 役員とのご飯はいつも美味しくて最高です。
役員Aにはワインを教えてもらいました。わがままを言ってシャンパーニュ旅行のお土産でワインを1本買ってもらいました!!
役員Bとは「銀座と新橋の境目ってどこだっけ?」「じゃぁ現場に探しに行くか!!」という感じで超美味しい割烹に連れていってもらいました。控えめに最高でした。

f:id:pira_nino:20190413220417j:plain
役員Bに連れていってもらった割烹

何かとある社内勉強会楽しい

弊社には、サイエンス以外にもエンジニアに特化した人やビジネスに特化した人などの様々なスペシャリストが在籍しています。加えて、受託分析という事業ゆえに様々な案件に関するノウハウが蓄積されています。
このような様々な経験についての話を聞ける勉強会が日々日々社内で開催されています。 こんな勉強会が多くあることも弊社の良いところの一つだと思います。

5. 今後について ~生存戦略~

5.1強い人がゴロゴロいる

一年間働いたことで、自分のキャリアパスについて考えさられる機会が多々ありました。主な要因は、この業界には「強い人がたくさんいる」ことです。

例えば、この会社に入って同期含め「みんな数学できるな」と思いました。いかに自分が学部時代に勉強してこなかったかを痛感しました。。。

さらに、外の勉強会に行くと「エンジニアもできてプロダクトに機械学習載せられる化け物」に頻繁に遭遇します。

こうなると同じ土俵で真っ正面から戦いを挑むのは無理だなぁと感じました。「さてさて、自分はどう生きていこうか」と生存戦略を真剣に考えました。元々、サイエンスで勝負仕掛けるつもりはありませんでしたが、なおのこと諦めがついた1年でした(汗

4.2データサイエンティストはジェネラリストになるべきでない?

比較的なんでもできる人材を目指していたが、それもどうなのかと最近悩んでいます。 最近は以下のような「データサイエンティストはゼネラリストになるべきでない」系の話題もチラホラ見かけます。

ainow.ai

さらに、真に強く無いデータサイエンティストと言う肩書きを持った人材が増え、ITベンダーの負の歴史を繰り返すであろうと言及している記事もチラホラ見かけます。 uma66.hateblo.jp

4.3じゃぁお前はどんすんの!?

ごめんなさい。まだ決め切れません。

もう少し考えさせてください。皆さまみたいに優秀で無いので、時間がかかってもいいのでデータサイエンスもクライアントワークもエンジニアリングも勉強したいです。 まだまだ若手なので、学習曲線はサチることなく伸びている最中です。
加えて、データサイエンス業界自体が日進月歩で進化を続けていまおり、データサイエンティストを職業とする身としては、日々の勉強が不可欠であると私自身は考えています。
幸い、今の会社ではまだまだ学べることがあるので、しばらくは今のスタイルを継続していこうと考えております。

一方で、最近話題の「アナリティクスディレクター」にはちょっと興味があります。

speakerdeck.com

6. 最後に

改めて1年間の振替りを書いてみると、「思った以上に色々なことしたなぁ。。。」と思いました。
今後何をやっていきたいか?改めて考えてみましたが、「現状維持」でいいと思いました。「現状維持」というのは、能力を今の状態を保つという意味ではなく、「今のペースで様々な経験を積む」という意味です。

まぁそんなこんなで、まだまだ頑張って行きますので応援(?)よろしくお願いいたします。