本記事の目的
私がBrainPadに中途入社してからの約1年半について簡単な記録を残す事1 2.
はじめに
私は昨年のAdvent Calendarでも記載させて頂いた通り分析の経験がほぼない状態で2020年4月にBrainPadに(リファラル制度を利用3)データサイエンティストとして中途入社致しました. そんな人間が1年半4データサイエンティストとしてお仕事をさせて頂いた内容を雑多に纏めてみようと思います.
私は文章を書くのが苦手なので本記事は非常に読み辛いと思いますが5ご一読頂けたら嬉しいです.
*本記事はBrainPad Advent Calendarの一環として書かせて頂いております(遅刻申し訳ありません...).
中途研修[2020/04-05]
入社してからはじめの1~2ヶ月では中途研修を行いました. コロナ禍での入社だった為, 基本はオンラインで, かつ, 自習(資料を読み宿題をやり毎日の定例で監督者の方と議論を行う)形式で研修は進みました. 中途研修では
- 会社理解(事業内容, 制度)
- Agile開発ツール, Gitツール
- Excel(〜統計の基礎)
- SQL(集計・可視化)
- Pythonの基礎(プログラミングの基礎)
- 分析の基礎
- Pythonの基礎2(データ分析~Pandasの基礎)
- R
- Shell
- 分析演習(Kaggle likeに想定案件に立ち向かい精度を競う)
の様な内容を扱いました. AgileやGit,SQL,Rなどほとんど経験がない状態からのスタートでしたが, それぞれについて概観を掴む事が出来る素晴らしい内容だったと思います6.
中途研修が終わったら案件にアサイン7されることになります. 本記事の目的でも記載させていただいた通り内容の詳細は書けないので作業の流れと必要となったスキルについて記載させて頂きます.
案件1(研究案件, 数理最適化)[2020/06-07]
はじめの案件は研究案件でした. 既に研究は途中まで進んでいたのでその内容をキャッチアップ8し, 目的, 手法の理解を行いました.
研究の目的はある最適化問題に対し厳密解法が使用可能か, また, ある近似計算法が使い物になるかについて, トイモデル, トイデータに対し厳密解法と近似計算法の比較を行い調査することでした.
私は最適化問題自体初めて扱う手法だった9為, 必要となる手法の学習を書籍10で行いました11.
理論的な理解が進んだら実験をする為にPythonで開発を行いました. 開発はagile開発的タスク管理, gitを利用したコード管理, レビューの体制で進めました. チケットを切る単位であったり, gitの使い方はもちろん, コミットをするタイミング, コメント内容など, 右も左も分からない状態でしたが, PMの方のサポートで何とか進めることが出来ました12。
2ヶ月程度という期限があったので学習と開発を並行しながら進め,なんとか立式,実装,結果の比較を行うことが出来ました13. この比較により,近似解法を厳密解法と比較しながら進める事が出来た為,近似解法の性能を上げる事にも繋がり研究の成果としてはまずまずだったと思います.
- 必要スキル
- Agile
- git
- 数理最適化
- Python(特にNumpy,Pandas,PuLP)
- 文章作成能力(研究成果をまとめる文章~論文形式)
案件2(常駐案件, いろいろ)[2020/08-現在]
案件1がひと段落ついたタイミングで次の案件にアサインされました. 次の案件は今も続いている14"常駐案件"です. こちらでは顧客様のメンバーと顧客様の会社の中で一緒にお仕事をさせて頂いています.
ここではクラウド環境上15でサーバーインスタンスを用いた分析環境を各自用意し,テーブルデータからをSQLクライアント,または,前述の分析環境などを用いて集計を行い,顧客様のサービスについて効果検証や,新規ソリューション(新しい効果検証法,新しいサービスの提供方法)の模索,開発などを行っています16. 特に最近では,抽出したデータを教師データとした機械学習アルゴリズムの調査・研究・模索などを行っています。
顧客様の会社の中で事実上メンバーのように一緒にお仕事をさせて頂く為,顧客様のビジネス理解が非常に重要となります17. 何を目的にどんなサービスをどんな仕組みで提供していて,どんなデータが存在するのかということを出来るだけ早くキャッチアップをする必要があります18.
また,開発環境も顧客様が利用されているものを利用する必要があり,オンプレミス/クラウド開発環境等のキャッチアップをする必要があります.
更に,その中でデータサイエンティストがするべきお仕事についても理解し,実行しなければなりません. 私の場合はSQLで抽出したデータの可視化を行ったり,Pythonで分析ソリューションの開発を行ったりしております.
1週間から数ヶ月の単位まで,様々なスケールの案件にアサインされ,顧客様メンバーの中の案件依頼者と議論の上,分析設計を行い19,納期の設定,分析実行and/orソリューションの開発,結果の共有,納品20を行います. 案件メンバーの単位も1~5名程度と幅があり,また,顧客様メンバーの中で1人お仕事をする事も珍しくありません. 勿論弊社側のPMの方が手厚くサポートをして下さいますので,仕事を進める上で大きな心配は要らないですがはじめの内は心細さがあったりします.
- 必要スキル
- 顧客ビジネス理解
- 統計(検定程度まで)
- 効果検証(セレクションバイアス,差分の差分法程度は必須)
- AWS, Azure, GCPなどのクラウド開発環境(サーバーインスタンス,その上のJupyter環境程度は必須)
- SQL
- Excel(レポーティング)
- Python(特にPandas, 何か得意なMLパッケージ)
- 統計, MLモデル(特に回帰, 自然言語処理)
- ドキュメンテーション(成果をまとめる作業)
- git
- docker(今後必須となりそう->勉強中...)
その他活動
その他の活動として本の輪読や論文読み会への参加などを行いました. 詳細は長くなるので省略させて頂きますが書籍リストと一言コメントだけ記載させて頂きます:
-
統計学入門 :
- もっと良い本もありそう21だが取り敢えず有名だったので読みました.
-
効果検証入門 :
- データを漫然と見るのではなくそこに潜むバイアスについて知識だけでなく知恵を得ることが出来ました22.
- しっかり学ぶ数理最適化 : 著者の梅谷先生がチューターで参加して下さっていたので参加していました. 私は計算複雑性の章を担当しました23.
- はじめてのパターン認識 : 機械学習の基礎の基礎を学ぶこと,及び,数式アレルギーを軽減する事を目的に読んでいます(現在進行形)24.
- 施策デザインのための機械学習入門 : 取り敢えず1,2章を読みましたが,機械学習のアルゴリズムについて学ぶ本ではなく,業務上の課題に対し機械学習を機能させる為にどのような点に注意を払わなくてはならないか,"課題","失敗例","提案手法"のステップで書かれており和書には類書が少ないと思われる一冊.
その他にも社内制度で100近い書籍を購入し25,イシューからはじめよなどのビジネス系書籍から,リーダブルコードやAIエンジニアのための機械学習システムデザインパターンなどのモダンな開発について学ぶエンジニアリング系書籍など自習しました.
まとめ
非常に読み辛い文章を最後まで読んで頂き有難う御座いました.
如何でしたでしょうか. 若干算数26とプログラミングの基礎の基礎が解る程度の人間がデータサイエンティストとして必死に過ごして来た1年半の雑多な記録でした. この記事を切っ掛けにデータサイエンスの世界に興味を持たれた方がお一人でも現れる事を密かに願っております。
-
BrainPadは"受託"分析会社であり基本的に顧客様からデータを受け取りお仕事させて頂いている為分析の内容について書くことができません. その為本記事では個人的な記録の役割とデータサイエンティストとしてのお仕事の雰囲気を味わっていただく役割とが果たせたら十分だと考えております. ↩
-
他の方のように分析に関する技術について纏められたらよかったのですが昨年と同様執筆時間が取れずこのような内容とさせて頂きました. ↩
-
現在もリファラル制度を利用した採用は誠意実施中なのでこちらにもご興味を持たれましたらご参照頂けますと幸いです. ↩
-
厳密には1年8ヶ月16日 ↩
-
無限に脚注が存在していますが基本的に無視して頂いて構いません. ↩
-
とはいえ,実際に現場で使おうと思うと再度自習が必要になるかと思います(後述). ↩
-
配属の事(物凄い下らない脚注ですが私個人はビジネス経験のない物理オタクだったためアサインやキャッチアップ...など様々なカタカナ用語に初めのうちは打ちのめされていました). ↩
-
追いかける事(必要な粒度で内容を理解し利用できるようにすること、として使われる印象があります) ↩
-
とはいえ物理で扱う多くの問題は最適化問題としての記述を持つ為学習の抵抗は少なかったです. ↩
-
書籍は社内制度(Skill_Up_Aid)を利用し購入しました. ↩
-
例えば最適化問題入門, あたらしい数理最適化などを読みました. ↩
-
研修でagile, gitについては簡単に学んだものの実際に使うとなると再度学習が必要になりました. これらについてもやはり社内制度で書籍を購入し学習を行いました(例えばわかばちゃんと学ぶ Git使い方入門などを読みました). ↩
-
プログラムの高速化にも成功しました. ここではNumpyの特性の理解や,理論式に捉われず変数を少なくする工夫などについて学ぶ事が出来ました. ↩
-
常駐案件にアサインされると1年~3年程度常駐することは少なくない様です. この期間が長いかどうかは人それぞれかと思いますが,実際に1年半弱程度体験してみた感触としては,"一人前にお仕事が回せるようになる時間なども考えるとさほど長いとも言えない",といった印象です. ↩
-
AWS, Azure, GCPなど ↩
-
クラウド, SQL, 効果検証など勉強するべきことが山積しておりました. ↩
-
書いていて思いましたが常駐案件で無くてもこれは最重要ですね.... ↩
-
矢張りここでも書籍を購入し学習を行いました. 社内制度が無かったら一体どうなっていた事か... . ↩
-
ここでは分析手法の理解は勿論,顧客様の所有するデータについての理解も必要となる為,はじめの内はとても大変でした. ↩
-
納品物は抽出データのテーブルデータから開発プログラムまで多岐に渡ります. ↩
-
調査観察データの統計科学を脇に置いて読むとより効果的. ↩
-
私自身は"最適化に直接関係しない章か..."と思っていましたが,梅谷先生から「結構重要で拘って書きました」とコメントを頂いた,何となく思い入れがある発表でした。 ↩
-
有名なPRLM上,PRLM下を脇に置いて読むとより効果的(というより読めるならこちらを読んだ方が長いが解りやすい,かも). ↩
-
数ページだけ参照するだけの書籍から読破できる書籍まで様々なラインナップで購入していますが"読んだなぁ~"と言えるのは10冊前後程度かもしれません. ↩
-
物理学を専攻し博士号を取得しておりますが統計学などデータサイエンスに直接関係する数学については学んだことはありませんでした. ↩