Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ももくり3年レコメンドエンジン5年

Tech Leverages
July 01, 2024
4.6k

 ももくり3年レコメンドエンジン5年

Tech Leverages

July 01, 2024
Tweet

More Decks by Tech Leverages

Transcript

  1. 蓄積されたデータを用いて、ユーザーの目的にマッチする 組み合わせを計算し、ユーザー体験を向上させるもの ©2023 Leverages inc. • 要件 ◦ ヒアリングした情報を入力し、人材が商談設定につながるような 案件がレコメンドされるツール

    • 目標 ◦ 案件検索にかかる時間を短縮し、なおかつ熟練の CAのスキルでなく とも商談設定をしやすい案件を見つけれるようになり、 案件提案のスピード・商談設定率が向上することを目指す レコメンドアルゴリズムとは
  2. レコメンドアルゴリズムの発展 ©2024 Leverages inc. 黎明期 挫折期 やり直し期 新体制 離陸 •

    事業部長への提案 
 • アルゴリズム開発開始 
 • コロナショックでパイロットテストが見送り 
 • CRMの案件配信メールで活用 
 • アルゴリズムの刷新 
 • 2段階レコメンドモデルの開発 
 • バックテストによる過去データの模倣 
 • CAとタッグを組んでアルゴリズムを開発 
 • CAの重視している観点をアルゴリズムに反映 
 • Flaskでの推論サーバ 
 2019~ 2020~ 2021~ 2022~ 2023~ • アルゴリズムの洗練 
 • 推論エンドポイント、学習パイプラインの開発 
 • SageMakerでのAPIデプロイ(テク戦と連携) 
 2024~ 熟成期 • 利用ユーザーをさらに拡大 
 • レコメンドAPIを繋ぎ、 
 SFA内にレコメンド結果を表示 
 • INやCRカテの網羅 

  3. データ戦略室の発足時から将来を見据えて着工 事業部長への提案〜アルゴリズム開発 ©2024 Leverages inc. • 立ちはだかる3つの壁 ◦ 1:エモの壁 ▪

    営業の仕事を奪うなという意見をいただいた • しかし、一部の営業マネジャーから作って欲しいと いう意見もいただいた ◦ 2:データの壁 ▪ データ基盤が存在せず、データが上書きされる状態 ▪ ほとんどのデータが非構造化データ ◦ 3:システムの壁 ▪ 機械学習でレコメンドアルゴリズムを開発しても提供するイ ンターフェースがなかった 黎明期(2019年)
  4. Covid-19がレコメンド プロジェクトを襲う ©2024 Leverages inc. 挫折期(2020年) • 1年かけて作ったアルゴリズムを WEBカテゴリで 実践する予定だったが、

    Covid-19により案件が激減 、 パイロットチームを作れず • 比較的案件数の多い CRカテゴリで試験運用するも、 WEBに比して機械学習が十分進んでいなかった ため、 CAからのダメ出しの嵐により頓挫 • 見かねた山本ヒロキが CRMでの案件配信メールでの 活用を打診し、ピボット。年間数億円の粗利 を 今でも生み出しているアルゴリズムとなっている。
  5. 全く新しい観点で アルゴリズムを開発 ©2024 Leverages inc. やり直し期(2021年) • 蓄積されたデータが汚くてもどうにかするアルゴリズム の開発 •

    金融商品の運用のように、 バックテストを数ヶ月行い、 商談設定率の予測精度が十分な水準になるまで機械学習を 行った。 • スキルシート自体を特徴量にする アイデアなども実践 • 学習データの偏り問題に向き合った新しいアプローチを実践
  6. ©2024 Leverages inc. レコメンドアルゴリズムで使うデータ(必須スキル)のためだ けの機械学習アルゴリズム開発 人力アノテーション 前処理 機械学習 3万件の必須スキルの各行ごとにSFAの スキルのペアを作成

    必須スキルをMeCabで 形態素解析し機械学習の特徴量にする アノテーションしたデータを教師ラベルにマ ルチラベルかつマルチクラスでの RandomForestによる機械学習を実行 Scikit-Learnの
 MultiOutputClassifier 
 を利用

  7. ©2024 Leverages inc. 提案した案件推薦
 商談設定
 した案件推薦
 学習に使った案件推薦データ
 実際の推論時には、 
 提案しても大丈夫な案件推

    薦が天から降ってくるわけ ではない
 結果として、あまり
 性能が出ていなかった 
 これまでのモデルが学習していたもの
  8. ©2024 Leverages inc. 提案すべきでない案件推薦 
 提案した案件推薦
 学習に使った案件推薦データ
 擬似的に
 組み合わせを生成
 商談設定


    した案件推薦
 新モデルが学習するもの 提案すべきでない
 組み合わせは
 そもそもデータとして存 在しない

  9. ©2024 Leverages inc. 元モデル
 新モデル
 ・案件推薦 ・案件情報 ・エンジニア情報 データ 取得

    バッチ 前処理 バッチ 機械 学習 バッチ ・データ整形  ・カテゴリ→数値化  ・テキスト→数値化 商談設定有無を教師データ とした機械学習 ・案件推薦 ・案件情報 ・エンジニア情報 ・データ整形  ・カテゴリ→数値化  ・テキスト→数値化 商談設定有無を教師データとした機械学習 BigQuery TreasureData スキルシート情報 の構造化 有償API 案件スキル情報の 構造化アルゴリズム オリジナル アルゴリズム 募集中案件の中で、どの案件を選ぶかを学習 する機械学習 案件のCAからの選ばれやすさ、商談設定のしやすさを重みづけてスコア化
  10. アルゴリズムに足りていなかった 現場の意見を反映し、使えるものに ©2024 Leverages inc. 新体制(2022年) • 事業部長より、優秀な CAを複数名アサインしてもらい、 毎週レコメンドツールを使ってもらい、

    500件を超えるフィードバック をしてもらった • レコメンドのためだけに ヒアリングフォーマットを改修 してもらった • CAは重視しているがアルゴリズムには反映されていないもの を一緒に考えていき、 数々のフィルター機能が追加 された • 利用することによる商談設定率をモニタリングし、 レコメンドツールを使う方が展開率が良くなるカテゴリ が出るなどした
  11. ©2024 Leverages inc. 機械学習による案件情報と人材情報の
 フリーテキストでのクラスタリング&マッチ C#のマッチのケース
 web, php, c++, objective-c,

    ruby, python, perl, android, java, javascript, html, css, sqlserver, oracle, vb.net, linux, aws vb, visualc, microsoftvisualc, vba, java(gitやって ない系) php, python, java, javascript, html, css, sqlserver, oracle, vb.net, linux, java WEBの
 申し子系
 VB系で
 gitやらない子系
 WEBやるけど、
 ほどほど系
 asp.net, 構 築, db, インフ ラ, セキュリ ティ, 保守, データ, oracle asp.net, javascript, html, css, アプ リ, mvc, jquery システムや設計 が含まれるの多 い、テストや要件 定義も多い, 上 流 WEBの
 お堅い系
 WEBの
 緩い系
 お堅い
 非Web系
 案件側 人材側
  12. ©2024 Leverages inc. 機械学習による案件情報と人材情報の
 クラスタリング&マッチ 案件名& 必須/尚可スキル エンジニアスキル 前処理 クラスタリング

    クラスタリング 前処理 案件 クラスタ1 案件 クラスタ2 案件 クラスタ3 人材 クラスタ1 人材 クラスタ2 人材 クラスタ3 案件 クラスタ3 案件 クラスタ2 案件 クラスタ1 人材 クラスタ3 人材 クラスタ1 人材 クラスタ2 マッチ!
 マッチ!
 マッチ!
 過去データで
 展開率のいい
 組み合わせでマッチ 

  13. CAとの協業により生み出された数々の機能① ©2024 Leverages inc. ①必須スキルの照合ができる 
 ②時期先人材向けのレコメンドができる 
 ③リモート可否を絞り込める 


    ④商談設定するかどうかを機械学習 
 • SFAの画面をみてスキルを満たしているかどうかを 目視でチェックする苦労が緩和 
 • 一部、経験年数も照合できる 
 • 時期先の情報を考慮して、未来に募集開始す る案件から案件をレコメンドしてくれる 
 • SFAにはない、リモートでの絞り込みが可能 
 • 案件人材双方で合致しているものも絞り込み可 能
 • 地方不可についてもデータで絞り込める 
 
 • 過去3年分の案件推薦データを用いて商談設定 するかどうかを機械学習している。 
 ◦ 何に最適化するかを一緒に考え進めた 

  14. CAとの協業により生み出された数々の機能②
 ©2024 Leverages inc. ④過去のNG理由も確認できる 
 ⑤年齢上限について絞り込める 
 ⑥希望単価よりも高いか低いかも絞り込める 


    ⑦商流でも絞り込める 
 • 過去に挑戦した同じ案件に再度挑戦するべきかの 判断に使える
 • SFAにはない項目 
 • SFAだと下限の金額を入力する必要があるが、1 つのカラムの絞り込みだけでOK 
 
 • 「END→レバテック」、「二次請け→レバテック」 
 などの商流で絞れる 

  15. 可用性を高め、 LTSF実装に繋げていく1年 ©2024 Leverages inc. 熟成期(2023年) • 十分にCAが使える水準に達したため、 SFAへの案件レコメンドアル ゴリズムの実装を提案

    • SFAへの実装はシステムリソースの観点で難があったため、 SageMakerでの案件レコメンド APIの開発を優先することに • テクノロジー戦略室と協業し、要件を落とさずに、 データ前処理→学習→推論の全てをSageMakerで実現 • 育休を経て、FlaskサーバからSageMakerによる推論 エンドポイントへの載せ替えに成功 ◦ 次は案件レコメンド APIをSFAに反映させるフェーズ
  16. ©2024 Leverages inc. 元の機構
 新機構
 GCE上に Ubuntu環境を構築し Pythonの実行環境を 用意、 cronによる定期実行で

    データ取得、前処理、 機械学習諸々の バッチ処理を実行 (メモリは32GB) データ 取得 バッチ 前処理 バッチ 機械 学習 バッチ Flaskサーバ(暗号化済み) をGASで実行し、 RDSにアクセス 推論 画面 スプレッドシート AWSのSageMakerの ProcessingJobでDockerを指定し た上で、データ取得、 前処理、機械学習を実行 タスクの依存関係で バッチ処理を実行できるようになっ た 処理落ちしなくなった SageMakerのEndpointで推論 エンドポイントを作成、 GASからAPI Gatewayによりエンドポイントを実行し、 RDSにアクセス スプレッドシートは変わらないが、 SFAで案件一括検索機能を追加
  17. レコメンドアルゴリズムの発展(再掲) ©2024 Leverages inc. 黎明期 挫折期 やり直し期 新体制 離陸 •

    事業部長への提案 
 • アルゴリズム開発開始 
 • コロナショックでパイロットテストが見送り 
 • CRMの案件配信メールで活用 
 • アルゴリズムの刷新 
 • 2段階レコメンドモデルの開発 
 • バックテストによる過去データの模倣 
 • CAとタッグを組んでアルゴリズムを開発 
 • CAの重視している観点をアルゴリズムに反映 
 • Flaskでの推論サーバ 
 2019~ 2020~ 2021~ 2022~ 2023~ • アルゴリズムの洗練 
 • 推論エンドポイント、学習パイプラインの開発 
 • SageMakerでのAPIデプロイ(テク戦と連携) 
 2024~ 熟成期 • 利用ユーザーをさらに拡大 
 • レコメンドAPIを繋ぎ、 
 SFA内にレコメンド結果を表示 
 • INやCRカテの網羅 

  18. SFAの内部でレコメンドAPIを 使ってもらう ©2024 Leverages inc. 離陸期(2024年) • CAのみんながSFAで案件レコメンドを使う状態 に ◦

    CAのみんなが使いたいと思えるようにシンプルな インターフェースで提供したい ◦ 案件レコメンド用の画面を開発 してもらい、 開発したレコメンド APIを利用してもらう ▪ 「ログが残る、カラムの増改築が容易」はマスト要件 • INとCRのアルゴリズムの開発開始 • WEBカテゴリでのレコメンド性能モニタリングは継続し行う