Data Pipeline Casual Talk に参加しました

2018年2月13日に、エムスリーさんのオフィスで開催された、Data Pipeline Casual Talkに参加してきました。
実はもともと抽選に漏れていて、補欠だったのですが、開催2時間前くらいに急に補欠から繰り上がり参加になったので慌てて会場に行きました。
一瞬、急すぎるからキャンセルしようかとも思ったのですが、結果的に参加できて非常に幸運でした。

発表一覧

以下感想です。例によって僕の主観が多々入ります。

AI・機械学習チームにおけるデータパイプライン構築

機械学習チームを立ち上げられた時に困ったという各課題については、
自分もまさに経験してきたもので本当に参考になりました。
ログ出力が適切でなかったり、classやtaskの設計が悪かったり、
モデルの再現性の問題やテストの効率の問題など。

Luigi というのを拡張して対応されているということで、
技術力の高さを感じました。
tensorflowやgensimのモデルを同じインタフェースでloadできる仕組みは便利そうですね。
物によって保存や読み込みの方法が違うのでいつも地味に不便な思いをしています。

自分のところではまだそもそも機械学習基盤と呼べるようなものを作れていないので、
luigiも検討対象に加えたいです。

丘サーファーへ「水」を届けるために-これまでとこれから-

発表を聞いていて、金融SEをやっていた時のことを思い出しました。
丘サーファーという表現も面白い。

今の僕の職場では個人情報マスク済みのデータに比較的自由にアクセスでき、
データへのアクセスという面では問題なく業務を進められていますので、やはり恵まれた環境なのでしょう。

ただ、Cloud Composer を活用されているのは参考にしたいです。
生Airflowを使っていて、保守に手が回っていないので。

データ基盤の3分類と進化的データモデリング

論理設計(データモデル)と物理設計(システム構成)を分けて考えられているのが参考になりました。
データパイプラインを設計する時に両端を先に考えて挟み込むように真ん中へ進むのも納得です。
確かに普段の業務でもうまく進んでいるときはこの順番で考えています。

担当者のロカールPCにあるExcelシートが実はデータ基盤の役割を果たしているかもしれない、と聞いて、
即座に具体的なエクセルファイルが思い当たり苦笑いしてしまいました。
各アンチパターンにも思い当たる節が多々あり、今後改善していきたいです。
データ基盤の要素を技術要素と対応させて分けるのもアンチパターンだというのも覚えておこう。

データ分析基盤を「育てる」ための技術

分析作業の主なフローのスライドでまさに自分たち直面している問題が取り上げられていて笑いました。
いろんなところからの依頼が増えてくるとSQLを各作業がどんどん増えて
それで疲弊してしまうのですよね。
良い基盤を作れば解決するというものではなく、
データ基盤を育てていくという考えが大事。

リブセンスのデータ分析基盤とAirflow

Airflowを使ったデータ基盤を構築されています。
僕らの環境とよく似ているので、これも身に覚えがある苦労話に苦笑いする場面が多くありました。
バージョンアップの問題などもまさに。
社員が誰でもSQLをかけるというのは素直にすごいと思います。
特に営業の方たちにまでその文化を広げるのはきっと大変だったのではないかと。
ユーザー数の差があるのはもちろんですが、
それを考慮しても活用具合でずいぶん遅れをとっている気がするので負けないようにしたい。

まとめ

データパイプラインやデータ基盤はその重要性を日々感じているのですが、
専任の担当者もいなくてなかなか手が回らず、いろんな課題意識がある分野でした。
機械学習やデータウェアハウス単体の話に比べて他社の事例もすくなく、
自分たちだけこんなに苦労してるんじゃないかと不安になることもあったので今回のカジュアルトークに参加してよかったです。
だいたいどこも同じような課題に直面されていて、それぞれ工夫して対応されていることがわかりました。
自分が漠然とこんな風にしたいと思っていたことが明文化されていたスライドも多くハッとする場面も多々ありました。
あと、Airflow使ってる会社ってこんなに多かったんですね。
逆に、トレジャーデータは一度も登場しなかった。
今回だけでなく、今後も開催されるそうなので楽しみにしています。

Data Driven Developer Meetup #4 に参加しました

2019/1/22 に 開催された、 Data Driven Developer Meetup #4 に参加しました。
セッションの内容や資料は上のリンク先の connpass のページにもありますが、一応ここにも書いておきます。

スポンサーセッション

  • 『機械学習を使ったサポート問い合わせ予測』 by freee 株式会社 Asaki Iwata 様 (@AsakiIwata)

メインセッション (20 min x 2)

LT (5 min x 2)

以下、発表中のまとめです。
個人の感想が多々入っていますし、ところどころ勘違いなどあるかもしれませんがご容赦ください。

『機械学習を使ったサポート問い合わせ予測』

感想として、単に機械学習で予想してみようというのではなく事前に目的のすり合わせや傾向の確認など、
ビジネス的に役立てるための準備をきちんとされているのを感じました。
例えば下記の点。
– そもそも問い合わせ数を予測することの目的はアルバイトを何人雇っておくべきかなどの人員計画にあること。
– 予測の許容誤差はビジネスサイドと事前に確認。
– 個人顧客と法人顧客で傾向が違い、今回は法人顧客を対象とした。
– 予測が高すぎた時と低すぎた時はそれぞれデメリットが異なる。(過剰な人件費の発生/サポートの品質低下による解約)

少し意外だったのは評価方法として絶対誤差を使われていたのと、
Gradient Boosting や XGBoost を使われていたこと。
自分だったら二乗誤差で評価し、モデルはLSTMなどのRNN系を前提に考えるかなと思いましたが、
それらも検証した上で、XGBoostなどを選ばれているようでした。
最終的に、評価指標が一番良かったモデルではなく、
評価は2番目だが、予測が上振れ傾向にあって顧客満足度を保てそうなモデルが採用されたということでした。
ビジネスサイドとよく連携して、機械学習を活用されているような印象を受けました。

『機械学習を⽤いた⽇経電⼦版Proのユーザ分析』

法人向けに、日経電子版Proというサービスがあるそうです。
そのサービスについて、無料トライアルの顧客が本契約してくれそうかどうかを機械学習でモデリングされたそうです。

日経新聞社にはデータ道場というデータドリブンを加速する教育制度があるそうです。
僕のチームではまだまだ個人個人の自己啓発や、メンバー間のナレッジ共有に頼りっきりなので、
このような制度を回せているは非常に羨ましいですね。

今回のモデルが予測する本契約率は売り上げ直結の重要指標で、
契約してくれる可能性が低い顧客に対して対策を打ったりするのに活用されるそうです。
内省されたというリアルタイムデータ処理基盤Atlraは結構羨ましい。

探索的データ分析として
最初に取得したデータの特徴や、欠損値の有無などを確認することの重要性を話されていました。
これは僕も常々重要だと思っていて、BIツールやモデルにデータを突っ込む前に必ずやるべきプロセスだと思っています。
(発表ではなく僕らの話ですが、Tableau等にデータを突っ込むと、大抵の場合は綺麗に可視化できてしまうので、
事前にしっかり確認しておかないと致命的な見落としが発生するものです。
なかなか、最初のデータの確認を定着させるのが難しいのですが、教育体制の差でしょうか。)
ビジネスでは(kaggleと違って)解決するべき問題を立てることが重要というのもその通り。
Leakageに注意することも大切ですね。自分も何度かやらかしています。
手法は再びGradient Boosting。
僕はこれまであまり使ってない方法なのですが、もっと試したくなりました。

『医療用語に注目した文書の類似度計算』

元々今回のイベントは、これを聞くために参加を決めました。
「文書の類似度」って難しいんですよね。
単語ならword2vecやfasttextなどが使えるのですが、
文章はtdidf化してcos類似度したりしてもどうも今ひとつな結果しか得られないし、
word2vecの(idfで重みづけた)線型結合等を試してもそこまで良くはならない。
Doc2vecにもがっかりしてきましたが、これは発表中でもディスられてました。

目的はサービスを横断してのキーワードからの記事のレコメンドだそうです。
問題の課題点に上がれらている3項目は似たような課題に直面した経験があるのでよくわかります。

まず今回参考になったのは、単純に自然言語処理的な手法だけでなく、
ユーザーのクリックなどをもとにしてアイテム間の類似度を協調フィルタリングで求めて使っていることです。
研究者が見るテキスト現場の医師が見るテキストが全然違うので、
テキストを一切考慮しない要素を加えているのだとか。
(お医者さんにとってオプシーボが肺がんの薬であることをは当然なので、
 オプシーボは肺がんの薬だとかいう説明が出てくることはなく、
 word2vecではこれらの単語が結びつかないなど。)

次にキーワードのマッチによる類似度。

テキストの分散表現はSCDV
これ、前々から存在は知っているのですがまだ実装して動かすってことをやってないです。
今回の発表聞いていて自分も早急にSCDVを試さなきゃと思いました。

これらの特徴量をつかって、XGBoostでモデルを作られたとのこと。

また、予測時には学習時と違ってクリックの情報は使わないそうです。
新しいアイテムをいち早く取り上げるためだそうで、これもなるほどと思いました。

このほか、fasttextの話もありました。日本語だとこれも結構上手く行くらしいので、
今後もっと試すようにしたいです。(いつもword2vecの方を使っているので。)

『Bokehではじめるデータビジュアライゼーション』

このLTからお酒も入り、気軽な感じで進みました。

Bokehというのは、インタラクティブビジュアライゼーションライブラリだそうです。
見てて、結構面白そうなライブラリだと思いました。

今の所、さっと作れるグラフなら matplotilibで可視化していますし、
ちょっと複雑なことをしたいときやインタラクティブなことをやりたいときは Tableauを使っているので
なかなか使う機会がなかったライブラリです。
でも、機械学習をWebアプリ風に設定変えて学習から可視化まででっきるのは便利そうです。
次、Tablauの代わりにこれを試してみようと思います。

『SlackへのKPI通知Botを作ったら いろいろ捗った話』

(GASは使いませんが)KPIのSlack通知はちょうど今うちの職場でもやろうとしていることです。
目的もほとんど同じなのですが、上手くいっているという話を聞けてとても励みになりました。
僕がどういうことを始めたいのか、どうやったらメンバーに伝わるか考えていたのですが、
とりあえずこの資料を共有しよう。

まとめ

元々の目的だったテーマ以外にも非常に勉強になったり励みになったりする発表が続き非常に有意義な時間でした。
主催者や登壇者のみなさん、会場を提供してくださいましたfreee株式会社さん、本当にありがとうございました。