こんにちは。
2018年4月に新卒としてALBERTに入社した、データソリューション部の羽山です。
入社式から、早3ヶ月が経ちました。
ALBERTでは入社式のブログでお伝えしたように、ALBERTに在籍している100人のデータサイエンティストのノウハウを活用した2ヶ月のデータサイエンティスト技術研修が新卒社員に対して行われます。
本記事では入社後2ヶ月間に渡って受講したデータサイエンティスト研修の内容についてご紹介します。
目次
- 自己紹介
- 研修内容
前半: Python・機械学習
後半: 演習
~演習1: 音楽ストリーミングサービスにおける離反会員の予測~
~演習2: Deep learning を用いた自動車走行中の道路状況の把握~
まとめ
自己紹介
大学院では数学科で統計学の研究、特に非負値行列分解におけるランク選択法について研究をしていました。また、研究室のメンバとハッカソンやコンペティションに参加して、POSデータを用いた併売傾向の分析やサッカーにおけるデュエル (ハリルJAPANの時代) を識別するモデル作成などをしていました。
ALBERTに入社したきっかけは、学部4年の時に2週間のサマーインターンに参加したことです。その後、アルバイトとして2年7ヶ月働きました。
参加したプロジェクトは、
- 中古車販売の販売価格予測
- スポーツ用品店における広告費削減のモデル作成
- 小売業のサイト閲覧データを用いた顧客クラスタリング
- 保険業界におけるプランの併売傾向分析
など様々です。その際に扱うデータの種類や用いる手法は多岐に及びました。
また、実際のデータは研究やコンペティションなどで用いるデータよりもdirtyなため、アルバイトをすることで、SQLやUNIXコマンドを用いてデータクリーニングをする力が身につきました。
大学院では理論を学び、ALBERTのアルバイトでは実際に分析手法を活用する経験を積むうちに、データ分析の面白さと学ぶことが尽きないところに魅力を感じるようになりました。
修士2年の就職活動はデータサイエンティスト職を募集している企業を中心に、いくつかの企業の選考を受けましたが、次の理由でALBERTへの入社を決めました。
- データ分析によるソリューションを事業のコアとしている
・事業会社内のデータ分析部ではなく、会社全体の主軸をデータ分析としている - 仕事に集中でき、モチベーションを保てる社内環境・制度
・数多くのデータサイエンティストが在籍している
・基本的にはキーボードを打つ音しか聞こえないくらい静か
・残業が少なく、集中力を保てるため効率よく働くことができる
・会社全体の行事が少なく、年休日が決まっているため予定を組みやすい
・給与が高い
・様々な分野に精通したデータサイエンティストと協働し、自身が成長できる
・質問がしやすく、定期的に勉強会が開催されるため、学べる環境である
勉強会は業務時間内に参加することができます。最近では、Deep Learning に関連する論文の輪読会や最近の分析手法に関する発表を持ち回りで行っています。
また、入社後に感じたことですが、同期も各分野の修士・博士であり、専門性が高く切磋琢磨しあえるメンバです。
同期は文系・理系問わず、数理工学・機械学習・ロボット工学・計量経済学・心理学・経済学・量子物理学・神経生理学など、各々が専門とする分野は多種多様ですが、対象からデータを取得し、分析をすることは共通しています。
研修内容
研修の前半では、講義形式でPythonと機械学習の基礎から応用までを学びました。
後半では、前半に得た知識を活用し、実際の案件に近い内容での演習に取り組みました。
前半: Python・機械学習
前半の1ヶ月では、統計学や機械学習などの理論とそれを実現するためのプログラミングについて、現役のデータサイエンティストである先輩社員からハンズオン形式で学びました。
まずはじめに、分析で主に用いるPythonの基礎として
- 環境の設定・演算
- ミュータブル・イミュータブルな型
- データ分析に用いるライブラリの使い方 (NumPy・Pandas)
- コーディングの作法・オブジェクト指向・行列演算 (ブロードキャスト)
を学んだ後、
- 統計学の基礎
- ランダムフォレストやサポートベクタマシンなどの予測・分類手法
- ホテリング理論を用いたデータの異常検知
- Word2vecを用いた自然言語処理
- 状態空間モデルを用いた時系列分析
などをPythonを用いた演習を交えながら、ハンズオン形式で学びました。
分析手法について一通り学んだ後は、データベースを操作するためのSQLやスムーズな分析の手助けになるUNIXコマンドなどを学びました。
私は研究やインターンではRを用いていたため、Pythonはほとんど初心者だったので、内定者に事前配布されていた 「みんPy」 で得た知識を引っ張り出しながらなんとかついていきました。一方、同期にはPythonをバリバリ使っていた人もいて、レベル感はそれぞれでした。
講師の先輩データサイエンティストの方々から理論やプログラミングと合わせて、実際の分析事例や、分析の現場において注意すべき点などをレクチャーしていただけたのがとても勉強になりました。
後半: 演習
後半の1ヶ月では、実際の案件に近い内容で演習を2つ行いました。
演習1では音楽ストリーミングサービスにおける離反会員の予測、演習2では Deep learning を用いた自動車走行中の道路状況の把握を行いました。
以下で、それぞれの演習の内容についてご紹介します。
演習1: 音楽ストリーミングサービスにおける離反会員の予測
音楽ストリーミングサービスにおける離反会員の予測を、サービスの契約情報や利用情報、会員のデモグラ情報 (性別や居住地など) を用いて行いました。
契約情報はストリーミングサービスをいつ契約したか・何日間のプランを契約したかなどの情報、利用情報は1日の視聴曲数や視聴時間などの情報で構成されています。
目的
- 実際の案件に想定されるような一連の分析業務を実施する
・大量ログデータのハンドリング
・基礎集計・可視化・モデリング
・分析報告書の作成
問題設定
- 解約・離反の定義を行い、解約した会員が離反するか否かを予測する
- 施策につながる示唆を与える
その他条件
- 期間は12日間
- 各々で取り組む
- 周りとの意見交換は可
入社前に各々が選んだMacBookProかWindowsで分析を行いました。データの大きさがメモリに乗るぎりぎりだったため、個人の分析方針でSQLを用いるか、PythonのPandasを用いてゴリ押しするかでデータクリーニングの仕方はわかれました。
ある程度dirtyなデータだったので異常値や外れ値を決め、データクリーニングを行い、基礎集計から予測モデルの作成・モデルの評価まで行いました。
最終報告では、先輩データサイエンティストの方々にフィードバックをいただきました。予測モデルとしてはランダムフォレストや Gradient Boosting Decision Tree (GBDT) を用いている人が多かった印象です。
演習で難しかったのは問題として与えられていた解約・離反会員を定義する部分でした。実際の案件でも、根拠を持ち、クライアント (今回は先輩データサイエンティストをクライアントとした) が納得する定義を自分から提案していく力は必要なので、定義を自分なりに考えることはとても良い経験になりました。また、12日間という短い期間で一連の分析業務を行うことで、分析のスピード感を感じることができました。
演習2: Deep learning を用いた自動車走行中の道路状況の把握
Deep learning を用いた自動車走行中の道路状況の把握を、CamVid データセット を用いて行いました。
CamVid データセット は、自動車の走行中の動画データとなっています。動画を加工して画像にしたものが既に提供されているため、今回はそちらを用いました。
データセットは元となる画像と、その画像の各ピクセルが何かしらのクラス (CarやTreeなど) に割り振られている教師データとなる画像の組になっています。
目的
- 技術的な部分をフォローアップすること (+ 演習1での目的)
問題設定
- 元画像を Deep learning で構築した学習器に与えたときに、各ピクセルがどのクラスであるかをセグメンテーションする (セマンティックセグメンテーション)
その他条件
- 期間は9日間
- 2~3人のチームで取り組む
私達のチームは3人チームで、全員がほぼ Deep learning 初心者でした。そのため、それぞれが Deep learning の基本的な知識を得て、モデルを実装する力をつけたいと考え、SegNet担当・U-Net担当・シンプルな畳み込みオートエンコーダ担当と大まかに分担して演習に取り組みました。
Deep learning は計算コスト的にラップトップでは時間がかかるため、テスラK80を載せたAWSのインスタンスを各チーム1~2個使いました。
中間報告で他チームの情報も吸収しつつ、軌道修正しながらなんとか最終報告ではいくつかのモデルで精度検証を行うことができました。
他チームも主にSegNetやU-Netが多かったですが、中には Generative Adversarial Network (GAN)を用いたモデルにチャレンジしているチームもありました。
今回は、9日間と少し短めの演習でしたが、最終報告では単眼の深度推定を行った先輩データサイエンティストの方々にたくさんのアドバイスを頂くことができ、知識を深めることができました。
まとめ
新人研修として2ヶ月間、
- Python・SQL・UNIXなど、プログラミングの習得
- 統計学の基礎や機械学習の様々な手法を学び、用いる
- 実際の案件に近い内容での演習
を行い、データサイエンティストとしての基礎力を身に着けました。また、報告の際のストーリーを意識することや、モデルの実装のためにプログラミング力を更に鍛える という今後の課題をみつけることができました。
全体を通して、現場で実際に手を動かして分析している先輩データサイエンティストの方々に質問でき、一人一人フィードバックを受けられるというとても充実した環境での研修でした。
また、充実した研修内容もさることながら、2ヶ月間を共にした同期との団結も深まりました。
来年度の研修では、著しい進化を遂げるAIの流れを感じられるような、最新の技術にも触れられるものになるように、ALBERTの一メンバとしてさらなる研修のパワーアップに取り組みたいと思います。
今後は、実際の案件に加わることになりますが、技術のフォローアップを怠らずに腕を磨いていきたいと思います。また、将来的にはプロジェクトの主軸となるプロジェクトマネージャーになれるよう、ビジネス面のスキルアップにも力を注いでいきたいです。
最後まで読んでいただきありがとうございました。
ALBERTでは積極的に新卒採用/インターンの募集を行っています。
お気兼ねなくお問い合わせください。