機械学習や分析を1から会社でインターンとしてやってみて

一昨年の12月からキネカという会社で1年半弱ほど働いていて、この3月で卒業をすることになったので、それまでの軌跡の振り返りをして行きます。
エモエモに良かったこととかだけ書いても誰のためでもない自己満足の記事になりそうなので、「会社の人」「機械学習分析業務に携わる全ての人」「その他業務に携わる人」の役に立てるように、自分がどう考えて動いたか、などを記していこうかなと思います。


 1、自分が入ったきっかけ


自分がジョインしたのは3年終わりに一年休学して、その12月でした。最初、職を探している時はは「今まで受託ばっかでしか機械学習をやってなくて、それを自社サービスでもやってみたい+インフラ触ってみたい」という大したことない理由で「インターンやし半年くらいでやめるのかな」などと漠然と思ってました。その中で実際に自社サービスでデータを触れる、インフラもできるという理由から参画しました。

2、入社からの意思決定とやってきたこと

まず12月に入社からは、とにかく機械学習+インフラをやる人ということで、その中でも機械学習の部分をやるということで、3ヶ月ほど一覧表示画面のレコメンドロジックを機械学習を用いてフルスクラッチで書いたり、不正ユーザーを検知するためのスコアリングを行ってきました。そしてそれをリリースしましたが、今振り返るとひどいものでした笑

・レコメンドロジックはコードがむちゃくちゃに汚くて自分でも何やってるか分からないくらい

・レコメンドロジックは実際にサービスに乗せたが、その時利益をあまり大きく出すことができなかった

・不正ユーザー検知のスコアリングは費用対効果が合わない

などでした。
この時、実際に自分自身は「コードを書き切ることがまず一番大事」と他のチームの人とコミュニケーションを取ることもあまりありませんでした。ここから、「結局いくらコードを書いても役に立ったり売り上げにならなければ意味がない」ということを強く感じ、初めて事業を伸ばすという目的があっての手段としての機械学習というものを意識し始めることができるようになりました。

また、この時くらいまで熱量は正直あまり高くありませんでしたが、ずっと会社のテックリードの人が自分のことを他の社員と同じように接してくれたり、あとは周りの人がとても楽しい人ばかりだったことなどから、「この会社に貢献していきたい」と少しずつ思えるようになってきました。

この頃から少しずつチームの貢献、事業側の視点というものも少しずつですが持てるようになってきたかなと考えています。
具体的には全ての人が参加可能なイシュー出し会議(Expoと呼ばれています)で積極的に発言をしていくことをし始め、一人その会議で積極的に発言していた人に同じくしてセカンドペンギンでしたがエンジニアチームがこの会でこれまで発言があまり無かったところをガンガンみんなが意見を出していくところまで行けたのは良かったなと思っています。
また、この当時はbiz側でSQLを書ける人が足りていないという問題があったため、SQLを教える活動も行ってきました。


この中で、データを利用して機械学習を行うということの前に、「そもそもの問題定義やどうして機械学習を入れるのか」「機械に学習させるための前段階としての数値の傾向がどのようになっているからなのか」などについては全く理解することができていませんでした。この中で、1on1(会社の人と一対一で話すもの)で、6月くらいから実際にCEOの方とpythonを使ってマインドマップで会社のサービスの問題全体観を見つつ、その分析していく、ということをやっていくことになりました。
実際にこんな感じで問題を洗い出して、掘り下げたものに対して数値を見て行ったり、分析を行ったりしました。(ここの真ん中に書いてあるのは主要KPIを分解したものです)


ゲストアポ突破率が低い




このようにたくさんのものに対して課題を洗い出して、その施策まで出していくということを行いました。
実際にCEOの人と多く関わらせてもらってこの時に感じたことは多くありますが、どう感じたなどは後でまた書きます。

また、この頃Redashというツールでの可視化に限界がきていて、会社で新しいBIツールを導入しようという時に、(これは自分の参画しているデータラーニングギルドというコミュニティでのアドバイスをいただきました)DataPotalというツールを導入するなど行いました(ただ僕自身は提案しただけで、実際に使うことはなかったのでここに含めるのは少しおこがましいですが笑)。


この時感じたこととしては、見たい細かいところをpythonでは書けるけどSQLなどでは書きにくいという状況は、組織全体を見たときにあまり良くないということを感じました。理由としては、

・SQLではないとビジネス側など、他の人が理解できない
・その分析結果の定期実行環境を作るのが難しい(もちろんcron jobなどを使えばpythonでもできますが、SQLは会社で使っているRedashというBIツールを用いれば結果をいつでも見れるという状態にできます。)

これらの理由から、他の人が見にくいところをDWH化しました。
実際に行ったこととしては、bigqueryに入っているデータをさらに変形しやすいような形に落とし込むということを行いました。
この時の反省としては、DWHというものに拘ってしまったということが一つ大きくあります。もちろん使えるものも多くできた他実際にその時必要だったところ以外も作ってしまったほか、後から考えると「これってダッシュボード化すれば十分だったよね」というところもあり、手段と目的が少しずれてしまっていたなということを感じています。


ここまでを一旦整理します。
1、機械学習は分析で下地ができてから
2、分析やった
といよいよ下地が整ったのでここから10月頃からは今まで分析してきたものを用いてレコメンドアルゴリズムを変更する、ということを行いはじめました。
もともと一番最初は機械学習 with pythonで書いていましたが、ここではRailsのバックエンドを用いて書きました。
ここで「機械学習などを用いるならどうしてpythonじゃなくてRubyなんだ」と思うかもですが、今このフェーズでは機械学習は必要ないと判断したからです。具体的な理由としては、

1、そもそもの現状のルールベース(スコアリングしたもの)のアルゴリズムがあまり良くなく、機械学習の前のフェーズの段階である
2、pythonを無理に用いると、他の人が書いていない言語+機械学習の保守管理は大変なので技術的負債になりやすい

バックエンドはこの時まで全然やったことがない未知の領域でしたが、ここをキャッチアップしながらアルゴリズムの結果をクエリを書くのと両輪でやっていきました。

そのため、プロダクトマネージャーの人と二人三脚でセグメント毎にルールベースのアルゴリズムを磨いていくということを行いました。また、この頃から実際に「分析」というところ毎週の全体会で発表させてもらうことも行っていました。しかし、ここでは後述しますが特にやっていく中で自分の力不足を感じることがとても大きかったです。

また、今年に入ったあたりからは会社から卒業することを決めていたため、僕しかやりにくい部分のアセットを貯めていくということを意識して行うようになりました。
具体的にはPythonを用いないとやりにくいユーザーの細かいセグメント情報をDBに入れ込んでいく(それぞれのユーザーの好み、アクション、アクティブ日時など)ことを行ったり、pythonサーバーのペアプロを他の人と行ったり、自分がメインで見ていたtalkというところのダッシュボードの整備を行いました。また、SQL講座を他の人が新しくまた開く中で、自分も日々のクエリの質問に回答するなどして会社の定量的な部分の底上げの手伝いを行いました。

エンジニアリング面だと、その他にも以前Elasticsearchを初期段階で導入したエンジニアの人がマーケ組織の立ち上げに行ってしまったため、そこを引き継いでElasticsearchの拡充を行うということを行いました。しかし、これは自分の力量不足もあってやり切れなかったのは悔しく思っています。


こう振り返ると多くのことを今までにやってきたなということを感じています。


・pythonサーバーを0から立ち上げて実際に保守運用しながら色々な情報のデータを入れ込んでいく(これはもちろんMLops的なところをインフラエンジニアにやってもらったり、テックリードの方にアドバイスもらいながらやったりと、もちろん完全に一人でできたわけではありません)


・pythonサーバーを0から立ち上げて実際に保守運用しながら色々な情報のデータを入れ込んでいく(これはもちろんMLops的なところをインフラエンジニアにやってもらったり、テックリードの方にアドバイスもらいながらやったりと、もちろん完全に一人でできたわけではありません)

・実際に様々なsqlで取得しにくい情報を入れ込んでいく

・機械学習( AutoML含む)

・インフラ周り
・リファラルなどによる採用活動(ちょこっとだけ)

・手が届かないデータを取るために簡単なデータ基盤の整備

・実際に会社の課題を洗い出して一つ一つに対して仮説を持ちながらデータを用いて分析していく

・SQLを組織に広げるためにSQL講座を開く

・データをモニタリングできるようにダッシュボードを作成する(トークという部分)

・バックエンドエンジニアとしてアルゴリズムを磨いたり、その他細かいところを直すなど

・分析組織の立ち上げ(これはやり切れなかった感はあります)

・ すでに軽く導入されていたElasticsearch(新しいデータ基盤)の拡充(ここも最後までやり切れなかった)

こう振り返ると、あまり事業を伸ばすことの意識が大きかったため意識してきませんでしたが、様々なことをやってきたなと感じています。
これらをECサイトとマッチングアプリの中間的なサービスで経験できたというのは、今振り返るととても大きなことだったんじゃないかなと思っています。

3、会社の良かったこと、悪かったこと

先に悪かったことから書いていきます笑


①むちゃくちゃみんなの活動時間が遅い


深夜に多くのユーザーが使うサービスなので、それに伴って会社の人の活動時間もとても遅いです。一番初めの時は11時に出社しましたが、その時間に行っても誰もいなくて衝撃を受けたのを覚えてます笑
13時くらいになって初めて人が来て、15時くらいからぞろぞろみんなが集まってくる感じです。いやおかしいでしょ。
そのせいで僕の生活リズムも気がついたら11時起きとかになってました。常に会社では「雨が降っても自責」という標語があるように、他人のせいにするなって常に言われてるんですがここだけは言わせてください(切実)

②時間にルーズ


最近はかなり改善されてますが、会議はやろうと言った時間に始まらないことが多かったです。ひどい時には14時からのミーティングで寝坊で時間通りに誰も集まらないなんてこともありました。また、8時から開催だった全体会は8時から始まることは少なかったです。だいたい数十分遅れて始まります。最近はだんだん改善されてますが、そこも含めて僕的にはよかったなと思っています笑


良かったこと

ここで「雰囲気がいい」「裁量が大きい」などありきたりのことはいくらでも書けるのですが、それ書いてもなんか嫌なので、少し掘り下げたことを書こうと思います笑

①インターン、という肩書きや年齢本当に関係ない


インターンという肩書きでしたが、正直他の人とあまり変わらなくやっていきました。
実際に自分も分析の立ち上げをさせてもらったり、他のインターン生でも8人くらいのチームのリーダーをやっている人もいたりします。しかも、正社員の人ですが同い年でプロダクトマネージャー担っていたり、コミュニティーマネージャーを束ねている人などもいます。そんな中で、自分も機械学習や分析という、社内にロールモデルとなる人が一切いない環境で「次は〇〇をやるのがいいかなと思っていますがどうでしょうか?」というように、常に自分が動かないと何もやることはないし、逆に動けば無限大にいろんなことを巻き取っていけるという環境を作ってもらいました。その中でいい意味で懐深く、ちょくちょく補助輪もつけてもらいながら放置してもらったり、チームの人と連携しながらやっていけたかな思っています。

②コミュニケーション能力


みんな馬鹿みたいにコミュニケーション能力が高いなと考えてます笑
業種的なところもあるかもしれませんが、オフィスにいるだけで楽しいし、いわゆる「ザ、陽キャの集まり」って感じでした。自分はもともとコミュニケーションとかにコンプレックスがある中で、ありえないくらいポジティブで多様性を受け入れるなみんなの考え方が伝染しましたし、エンジニアチームに関しては、
正社員だけどでもずっとオフィスでおしゃべりで喋ってるテックリードの人、論理性だけど誰かがくしゃみをするとすぐにブレスユーと言う人、ずっとゲラゲラ笑っているポジティブの塊みたいなエンジニアの人、とにかく好奇心旺盛で内面ちょくちょくキチガイな人、逆にベテランで丁寧なでありながらも情熱を持った人、自分で新しい道を先導して開くエロめの人、などなどこんなに楽しく開発しているエンジニアチームはないんじゃないかなと思ってます笑


③全員が事業に向かっている


チーム全員が会社を大きくするというところに向かっていて、純粋に統一感を持った会社はなかなかなくてすごいというのを感じています。
例えばエンジニアだと、「この技術でこれを実装したい」というようなエンジニアは誰もいなく、常に「こういうように事業を伸ばしていくからその手段としてこの技術をこう使っていく」というように動いています。実装しなくていいことは実装しないで済ませる、という考え方です。この考え方は、常にどこに行っても一番大事な考え方だと思うので、これはずっと胸に置いた上で実装だったり分析を行っていきたいと思います。


4、反省点や課題


正直数え切れないほどありますが、その中から三つほどピックアップしていきたいなと思います。


組織への浸透


まず一つ目は、「組織への分析の浸透」ということをやり切れなかったことです。特にこれは一番大きいなと考えています。
具体的には、例えば今の状態だとそれぞれのチームの施策の検証などは全てリーダー陣がやっています。
例えばプロダクトのチームだと、デザイナーとエンジニアとビジネス側の人がいて、設計から後の分析までを全てbizの人がやっています。しかし、それだと時間が足りなくなりがちなので、チームに一人分析の人が入るという状況が望ましいです。しかし、今の状況だと自走を最初からできない人を取るのはなかなか教育コスト的に厳しい状況になっています。そのため、去年の10月とかに、一人分析用の人材を取ることを提案して、自分がメンターなどの形で自走まで持っていけていたりしていたら違ったのかなと考えています。また、他にも早めにSQLの講座をもう一度このような状況を想定しながら開くのを前倒しで行い、社内で施策検証分析をできる人をしたら違ったのかなとも思っています。
他にも、数値を見る意識は1年でとても会社全体で大きくなりましたが、これらは僕も多少は影響あったと思いますが、CEOの方や、ダッシュボードを作成した業務委託の人、マーケのリーダーなどによる影響が大きかったなと痛感しています。実際に数値を見る言葉を言語化したり(NUUや PUUみたいな感じ)、ダッシュボードという目に見える形でやっていくなどの取り組みが大きく、自分がこれを提案できなかったのは自分の思考体力不足が出たなと強く感じています。

ネーミング


これを見た人は「は?」と思うかもしれませんが、新しい概念を作るときに名前をかっこよくつけるということはとても重要です。例えば、この会社では各部署の会議のことを「レベリー(ワンピースの言葉)」と称したり、全体のイシュー出し会議を「Expo」と呼んだりしています。このように、どのような名付けを行うかによって、組織への浸透は大きく異なってくるということを会社では強く言われていました。しかし、自分が結果的にいい名前をつけたりということはできず、工夫が足りなかったなども自分の反省点かなと思っています。

思考体力

とにもかくにもこれが不足していたなということは痛感します。具体的な内容としては後述します。


学んだこと


自分がある程度できるんだということと、自分が無力だということ 


自分はこの会社に入る前、長い期間ではありませんが業務委託的な感じで機械学習モデルを作ったり、インターンを行ったりしてきました。しかし、一番最初は実力不足で試用期間でクビが飛んだこともありましたし、ただコードを書いたというだけで、自分の力で実際にお客さんが望んでいるものを本当に作れたという実感は全くありませんでした。その中でこの会社に入って、「本当に自分が貢献できるのだろうか」という不安もありました。
しかし、この会社に入って多少なりとも貢献ができ、その不安は解消されました。しかし、逆に自分の力不足を感じた場面も多くありました。
正直、自分が実際に去年の6月くらいにCEOの方と分析をしてそれを持っていくということを行なっているときに、「自分は課題をマインドマップで掘り下げてその課題を洗い出せて、施策の提言までできている」というように一時的に自分はかなりできるのではないか、と思い上がってしまった時期もありました。しかし、そのあとに実際に自分がその施策を実行する立場になると、それは妄言だと感じるようになりました。「これをすればいいじゃん」と提言している側にいる時は、自分は改善策などを提案したり、悪いところをきちんと指摘できていましたが、実際にKPIを組んでそのために施策を自分が実装していく、という立場になった時、どうしても自分のやったことを正当化したくなってしまって、それまでただ言ってたように施策の振り返りができなかったり、それを元に正確なアクションを取れなかったりということが大きかったです。いわゆる先ほども出てきた思考体力というものの具体例ですね。また、常にひたすら経営のビジョンを落とし込みながら未来を描き、KPIを追いかけてそれを分解して改善を繰り返している人たちを見て、自分自身の無力さを強く感じました。

事業を落とし込む、技術は後からキャッチアップすればなんとかなる


自分はこの会社に入るとき、「インフラと機械学習がやりたい!」というところで会社に入って行きました。しかし、実際に入ってやってみると、SQL、Ruby on rails 、少しだけクライアントも触ったり、新しいBIツールをみたりするなど、いろいろなことをやって行きました。その中で、「高いレベルは無理だがある程度技術は必要になったらキャッチアップできる」という自信が生まれてくるようになりました。そして、当たり前ですが事業を落とし込んで、自分のやるべきことを決めていくというのが大事だということを痛感しました。

とにかく数打って改善すること


何を取り組む時にも「神の一手」などを求めたくなりがちですが、結局は自分が目標を置いてそれに対して取り組んで、数値を見て振り返って改善をしていくということをひたすらやるしかないんだなということを強く感じました。

5、終わりに


「新卒で一番最初に入った会社が自分の仕事への価値観を作る」的なことを世の中ではよく言われますが、自分にとってはこの会社がそれに当たって、自分自身を強く作ってきたなと感じました。次の会社でもGiveや事業への貢献ということを忘れずにやっていこうと思います。

ちなみに事業会社で分析系をやりたい人とかいればぜひ連絡くれれば繋ぎます笑

ホームページ(採用系は何も書いてないですが、エンジニア、デザイナー、ビジネス側など含めた全方位で募集中です)


ちなみに途中で話した僕が参加してるデータ分析のコミュニティはこれ



この記事が気に入ったらサポートをしてみませんか?