Gunosyデータ分析ブログ

Gunosyで働くデータエンジニアが知見を共有するブログです。

データ分析について学んだこと by サマーインターンシップ

こんにちは。データ分析部インターン生の荻原です。 最近はThe Script - Superheroesをよく聞いています。 本記事では、私と同じデータ分析部所属の大原が9/20・21の2日間開催されたエンジニア職向けサマーインターンシップに参加したので、 その模様及びそこから得た学びを共有したいと思います!

Gunosy Summer Internship 2016とは

Gunosy Summer Internship 2016とは、Gunosyが夏休みの期間に実施した短期インターンシップであり、 総合職向け「経営企画・戦略コース」、エンジニア職向け「テクノロジーコース」がそれぞれ開催されました。

f:id:ogiogi93:20161013163038p:plain Gunosy SummerInternship 2016

総合職向けインターンシップは計5回・約120名ほどの学生が参加し、多くの新規ビジネス案が創造されたようです。 またこのインターンシップに参加することで、役員や社員から直接ビジネスや技術、働き方に関する知識を学ぶことができるだけではなく、 「報酬2万円」「新卒採用フローの大幅スキップ(優秀者のみ)」「優勝賞金10万円(エンジニア職向けのみ)」など様々な特典があります。 何かとお金がかかる大学生にとって、非常にありがたい特典ですね。私はこの報酬で新しいMacbook Proを買いたいなと思っていました。

エンジニア職向けサマーインターンシップの様子

それでは、エンジニア職向けサマーインターンシップの様子を紹介します。 スケジュールは以下の表の通りです。

時間 内容
1日目 9:30 オフィス集合
9:30-10:30 インターンシップに関する説明
10:30-11:30 Gunosyに関する講義
11:30-13:00 昼食、休憩
13:00-14:00 Gunosyの開発組織・技術に関する講義
14:20-18:00 ハッカソン
18:00-20:00 懇親会
2日目 9:00-16:45 ハッカソン再開
17:00-18:00 ハッカソン結果発表、総評

Gunosyに関する講義

まず初めに、Gunosy創業者の1人でCEOの福島から「会社Gunosyについて」そして「グノシーの開発秘話」などに関する講義が行われました。 f:id:ogiogi93:20161014134552j:plain システム開発だけではなくビジネスや起業に興味を持っている学生にとっても、非常に有意義かつ貴重な講義であったと思います。 講義の中で特に

  • 最新技術を好む技術者であるほど新たな技術・考えを試してみたくなることがあり、不要な機能を追加→ユーザーの満足度を低下させてしまうことがある
  • ユーザーの視点になってサービスを考えていくかが最重要→ユーザーの求めているものは行動ログなどのデータの中にある

といったことがとても印象に残りました。「なぜGunosyはデータ分析に注力しているのか」 を知れたと同時に、Gunosyのビジネスにデータ分析は欠かせない重要な要素であることを再認識できました。

Gunosyの開発組織・技術に関する講義

六本木のおしゃれなレストランで美味しい肉料理を堪能した後、開発本部執行役員の松本からGunosyの開発組織・技術に関する講義が行われました。 開発組織がいかに開発に挑み、どのような技術がサービス改善につながっているかを実体験の内容を交えた講義であったため、日々サービスを開発・改善・運用していくために大切な「マインドセット」、そして常に最新技術を取り入れていくための具体的な仕組みについて深く学ぶことができました。

ハッカソン

講義終了後、ついにメインイベントであるハッカソンが始まりました!
テーマは「実際のグノシーの行動ログデータによるクリック予測モデルの構築
「ユーザー情報」「記事情報」「記事インプ・クリック情報」などのデータから、あるユーザーがある記事をクリックするかしないかを予測していきます。 また評価方法も社員による評価ではなく、Kaggleのような実データをもとにした予測精度によって算出されます。 徹底したデータドリブンな文化であるGunosyならではの内容ですね!

インターン生1人1人にAWSのインスタンス、そしてベンチマークスクリプトも用意されており、リアルタイムでスコアが反映されていきます。 つまり今自分が何位なのかが明確に分かり、常に高いモチベーションで作業を進めていくことができる環境でした。

インターン生はグループに分かれ、各個人黙々と作業を進めていきます。 f:id:ogiogi93:20161014134813j:plain f:id:ogiogi93:20161014134925j:plain 多くのGunosy社員もメンターとして参加し、インターン生に混じって課題に挑戦していました。 社員もてこずる程、非常に難易度の高い課題... f:id:ogiogi93:20161014134718j:plain f:id:ogiogi93:20161014134954j:plain

そして、2日間におよぶハッカソンが終了し、結果発表に向けて社員が集計コマンドを実施 f:id:ogiogi93:20161014135031j:plain 多くの社員に見守られながら、ついに結果発表です! f:id:ogiogi93:20161014135204j:plain f:id:ogiogi93:20161014135226j:plain 結果、スコア上位3名の方々が入賞しました。入賞者が特に際立っていた点は

  • 手堅くデータを可視化、データの特徴を理解していること
  • 場合の数と確率など、シンプルな手法を取り入れていること
  • 制限時間をしっかりと把握、問題が生じた際も臨機応変に対応していること

などが挙げられると思いました。社員のスコアよりも高いインターン参加者も多く、非常に白熱したハッカソンだったと思います!! f:id:ogiogi93:20161014135241j:plain f:id:ogiogi93:20161014135314j:plain

インターンシップでの気づき(荻原)

私自身は制限時間内に処理が終わらない実装を行ってしまい、不甲斐ない結果となってしまいました。 しかしこのインターンシップを通じて多くの学び・気づきを得ることができたと思っています。それは

  • データ・機械学習アルゴリズム理解の重要性
  • 「切り捨てるもの」を明確にすること
  • 時には作業方針をダイナミックに変更する勇気の大切さ

です。

データ・機械学習アルゴリズム理解の重要性

今回のハッカソンは作業時間約12時間ほどと非常に短かったことから、データの可視化作業を怠ってしまい、自身の経験・勘から いきなり予測モデルの構築作業を始めてしまいました。結果、あまり高い予測精度を出すことはできませんでした。

成績上位者の話を聞くと、やはりデータを可視化することでパターンを見つけ、しっかりと予測モデルに落とし込んでいました。 自身の経験・勘による仮説は基本的に「間違っている」という姿勢で、しっかりと実データから仮説の根拠・パターンを考察することの 大切さを再認識しました。

また限られた時間では様々な手法を試すことは困難です。そのため各手法の特徴・仕組み、具体的に「どのようなデータ・状況の 時に有効であるか」をしっかりと理解し、適切に選択していくことが重要であることも再認識しました。

「切り捨てるもの」を明確にすること

今回のハッカソンではユーザーの行動ログデータの他に記事データなど様々なデータが提供されており、私は「提供されているデータは余ることなく使い切りたい」 とありとあらゆる特徴量を生成しようとしてしまいました。その結果、実験をする時間がほぼなくなりました。 「多種多様かつ大量のデータを用いると良いモデルが構築できる」と思いがちですが、多種多様であるほど特徴量生成・データの理解に時間がかかりますし、大量であるほど学習に時間がかかります。与えられた時間内でやりきるためには、「切り捨てるもの」を明確にすることが大切だと学びました。

状況に応じて作業方針をダイナミックに変更する決断力の大切さ

終了残り2時間ほど前になっても精度が平均以下であり、焦りを感じていました。この時、機械学習による予測モデルの修正ではなくルールベースによる修正を実施しようと一瞬思いましたが、「予測に大きく効く特徴量がまだあるのでは !?」と考えてしまい、作業方針を変えませんでした。 今考えてみるとルールベースによる修正を行った方が良かったと後悔しています。状況に応じて作業方針をダイナミックに変更する決断力が不足していました。

インターンシップでの気づき(大原)

大原です。私も今回のインターンシップに参加したので、私が感じたこと・気づいたことを書きたいと思います。

機械学習のモデルに対する理解と経験が必要

今回のインターンにおいて、私も含め多くの人がxx回帰やRandomForestなどの機械学習モデルを使ったと思います。 scikit-learnを使えば、ほとんどソースコードを変えずに別の予測モデルも構築できるので、特徴量だけ作って私もいろいろなモデルに投げていました。Logistic回帰は精度が悪い。SVMやRandomForest等は全データを突っ込むと学習に時間がかかりすぎる。xgboostも試そうとしていたのですが、与えられた環境ではうまく動かず、時間もないため諦めました。これはどれもモデルの特徴への理解・経験が浅すぎることが原因でした。 結果的には最後に、データを解析した結果をもとにしたルールベースの予測に変えましたが、解析に割ける時間も足りず、結果は全然よくありませんでした。 予測モデルについて理解を深めたいという気持ちがものすごく強まりました。

評価手法について理解すること

最初は評価手法について特に考えず、1つ1つの記事をクリックするかしないかの精度を良くすればいいと思っていました。 間違いではないのですが、評価手法を考えると単純な方法でスコアを大幅に上げられます。 記事配信をする際には、何かの数字を上げるために記事を配信すると思うので、それを考えると当然だったのですが、評価手法について何も考えずにいると、ずっとスコアが上がらないまま終わるところでした。

また他にも、泥臭くても良いから成果を出すことの重要さ等、実際のサービスではどういう考えが必要とされるかについて深く考えさせられました。 参加して得られたもの・考えさせられたこと・気づいたことが多く、非常に有意義なインターンでした。ご飯も全部美味しかったです。

終わりに

今回のエンジニア職向けインターンシップは約20 名の学生が参加し、非常に充実した日々を過ごすことができたと思います。 Gunosyではアルバイト・長期インターン生を随時募集しており、2018年度新卒採用も開始しました。Gunosyに少しでも興味を持たれた方はぜひ応募してみてください!

gunosy.co.jp

www.wantedly.com

www.wantedly.com