1,はじめに
初めまして,3ヶ月間エクサウィザーズでお世話になりましたインターン生の井上です. 今回は研究と並行しながら臨んだインターンシップについて振り返り,エクサに興味を持っている方に取り組んだことや雰囲気を伝えることができれば幸いです.
自己紹介
早稲田大学の修士2年で機械学習に関するアルゴリズムや分析を行う研究室に所属し,現在は統計的因果推論の研究に携わっています. 学部では文系学部で統計学を学び,趣味の競馬に活用するためのAIの開発やデータ解析のコンペに参加していました. 現在は,機械学習のパッケージの使用経験や分析経験はあるものの,諸々の機械学習アルゴリズムについての知識は完全にわかっているというわけではない状態で不安と楽しみな感情を抱えつつインターンに臨みました.
インターンシップに参加するにあたって設定した課題
・インターンシップを通じて,どんなことに取り組みそこからどんな学びを得るのかというのを明確にするためにあらかじめ最終的な目標を設定しました. また,そこに到るために具体的にどのような進み方をするのかを検討しました.
【実際に設定した課題の例】
・機械学習に関する知識を広く身につける.そのために参考図書を読破する
・施策の立案に役に立つ手法の実装を行う
・実装した手法を用いて分析を行い,納得感の得られる施策を考える
などこのインターンシップ全体の大目標と共に短期的な中目標も設定した上で課題に取り組んでいきました.
インターンシップの初日に面接でお世話になった遠藤さんにお時間をいただき,ディスカッションを行いながら具体的な目標設定を行いました. 遠藤さんは私がインターンシップを通じた成果を感じられるよう,精力的にアドバイスやご指摘をしてくださり,目標設定にも非常に熱が入りました.
また,その後も目標がどの程度達成することができているのかを確認するために1 on 1で面談する機会を設けてくださり,お仕事がお忙しいにも関わらずよく目をかけてもらい,非常に感謝しています.本当にありがとうございました.
2,取り組んだこと
(1)機械学習周辺に関する勉強
機械学習周辺の知識を身につけるために課題の本を設定してもらい,約1ヶ月半で読破することを目標に取り組みました.
「[第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践」(表紙が緑の分厚い本に取り組みました)
最初から少しずつ読み進めていきましたが,読んではコードを写して実行しまたそれを繰り返す,という単純な作業を繰り返すことに飽きてしまったため,私はuci machine learning repositoryでサンプルデータを拾ってきて実際にデータを分析しながら,わからないところは本を参照しながら学ぶという形を取り勉強しました.また,理解したアルゴリズムはアウトプットして更に理解したいと思い,図を用いて端的にまとめるといった工夫をしながら進めることで楽しく勉強を進めることができました.
おかげで自分がこれまであまり触れたことの内容な手法の理解だけでなく,これまであやふやだった手法についても理解を促進することができたと感じました.
この期間は本の勉強に充てるだけではなく,実際に分析する際の手法の検討(主に論文の探索)も行い,見つけた手法が実際に適用することが可能かどうかを考える時間も設けていました.
(2)社内データを用いての機械学習モデルの構築
私は現在,統計的因果推論の研究をしているため可能であれば研究領域に近いことができると嬉しいなと思いながら機械学習手法の検討をしていました.
結果的に私はCare techのデータに対して因果探索手法を用いることができました.今後インターンシップを考えている学生の方へ”特に”伝えたいことは,
エクサウィザーズでは「対象とする手法が扱うデータに適合し,分析結果を通じて会社に利益をもたらすことが可能な機械学習モデルである」ということが伝えることができれば,インターンシップの立場であってもプロジェクトをデザインも主導することができるということです.
私自身は,自分がやりたいことをさせてくれた環境があるというのは非常に嬉しく感じました.
実際に取り組んだ手法は,
「Multiple-cause discovery combined with structure learning for high-dimensional discrete data and application to stock prediction」
https://link.springer.com/content/pdf/10.1007%2Fs00500-015-1764-8.pdf
という因果探索手法に着目しました.
この手法を用いることによって図のような因果関係を元にした変数間の関係を理解し,考察することを通じて納得間のある施策の立案につなげることができないかと考えこの手法に取り組みました.
【簡単なアルゴリズムの紹介】
Multiple-cause Discovery combined with Structure Learning(以下McDSL)では,大きく3つのステップに分かれたアルゴリズムになっています.
Step1: 変数間に何らかの因果関係があるかどうか探索する
Step2:不要な変数間の関係性を除去する
Step3:変数間の因果の向きを設定する
以上のような流れで変数間の因果関係を探索していきます.
Step1・2では条件付き独立性の検定を行い,変数間の関係性があるかどうかを確かめていきました.また,Step3では,統計的因果探索で用いられる回帰分析と独立性を考慮した方法によって因果の向きを定めていきました.(参照:清水昌平. 統計的因果探索. 講談社)
特に苦労したのは,条件付き独立性の検定を高次元データに対して適用する点でした.条件部に当たる変数が増大すると,非常に計算コストが増大してしまうため通常のカイ2乗検定による検定ではなく,以下の論文中にあるFCITという手法を採用しました.(https://arxiv.org/pdf/1804.02747)
実装を行った感想
実装自体に取り組み始めたのは8月の半ばからでしたが研究室の合宿や予稿の執筆もあり,かなりきつい時間でしたが濃密な時間だったように感じます.特に,うまく結果が出力されるまでに繰り返しアルゴリズムの理解を要し,それをプログラムとして具現化することや正しく結果を出せているかを確かめるためにシミュレーションを行うなどやることが多かったので日々必死に取り組みました.そのおかげで,何とか私がこれまでやってきたことを社内勉強会で共有し,インターンシップの最後を飾ることができたと思います.
実装自体は始めてみると楽しく,図が出力されうまく変数間の関係を表現した図が出力できたときには大きな達成感を感じることができ,良い経験になりました.また,社内の方々と図を元に結果の考察をした際に,図自体に興味を持っていただくことができたのでこうした点でも取り組んだ手法に意味があったのかなと感じています.
参考文献
・Chen, Weiqi, et al. "Multiple-cause discovery combined with structure learning for high-dimensional discrete data and application to stock prediction." Soft Computing 20.11 (2016): 4575-4588.
・Chalupka, Krzysztof, Pietro Perona, and Frederick Eberhardt. "Fast conditional independence test for vector variables with large sample sizes." arXiv preprint arXiv:1804.02747 (2018).
・清水昌平. 統計的因果探索. 講談社, 2017.
インターンシップの参考になれば・・・
・どのくらいの頻度で出社していたか?
→週2〜3日出社し,出社した際には10:00~19:00までフルタイムで勤務することが多かったのですが,都合に応じて自由にシフトを組むことができたので研究との両立をしながらインターンに参加し続けることができました.
・どんな人とお仕事をしたのか?
→私は,最終的にはCare techに関わるデータの分析を行うことになったのでCare techに関わってきたエンジニアの方と具体的な手法についてのディスカッションや実データに存在する変数に関しての議論を交わすことがありました.また,ビジネスサイドの方々とも関わることがあり,分析結果の考察や実際に結果を見せるにはどのようなデータを使うべきかといったことを熱心に話し合うことができました.協力してくださった皆さんのドメイン知識やこれまでの経験を通じたお話をしてくださったので勉強になることが非常に多かったです.私もなるべく自分の考えや分析結果を通じて思ったことを話したことに対して全力で向き合ってくれました.
・勉強会の内容や雰囲気は?
→勉強会ではこれまで取り扱った案件や参加した学会の雰囲気・学びが共有されることが多かったです.私はこの勉強会を通じてエクサの関わっているお仕事について多く知ることができたと思います.個々の勉強会の内容も非常に興味深いものが多く,聞いたことのある手法が実際に現場ではどのように使われるのかといったことを知ることができると思います.もし,エンジニアインターンを希望する学生の皆さんは積極的に参加することをお勧めします!!
3,最後に
3ヶ月間(特に最後の1ヶ月)はアルゴリズムの実装と予稿の執筆に追われ,アイデアが思いついた拍子に夜中に起きる日が続くなど大変なこともありました.しかし,機械学習の基礎の勉強から実装さらには実データの分析を行うことを通じて大幅に短期間でレベルアップができました.自分で取り組む課題を決めて,周囲の人を巻き込みながら仕事を進めていくというフローを実際に体験できたことは今後の大きな糧になると感じています.このような場を用意してくださったエクサウィザーズの皆様には本当に感謝しています.
3ヶ月間本当にありがとうございました.
尚、エクサウィザーズは優秀なエンジニア、社会課題を一緒に解決してくれる魔法使い”ウィザーズ”を募集しています。ご興味を持たれた方はぜひご応募ください。 採用情報 - 株式会社エクサウィザーズ
ExaWizards Engineer Blogでは、定期的にAIなどの技術情報を発信していきます。Twitter (https://twitter.com/BlogExawizards) で更新情報を配信していきますので、ぜひフォローをよろしくお願いします!