■人材紹介業におけるデータ入力・データ活用の課題
レバレジーズのデータ戦略室で室長をしている阪上です。今回はレバレジーズの運営する人材紹介系サービスにおけるデータ活用の課題について扱いたいと思います。
一般的に人材紹介業は、「企業での就業を目指す人材」と「人材を欲している企業」のマッチングを行っています。しかしながら、経済学におけるマッチング理論が扱うような、「各々の人材がつけた、行きたい企業ランキングTop100」、「各々の企業がつけた、欲しい人材ランキングTop100」などの顕示的な選好のデータはありません。
そこで、マッチングをうまく実現するためには選好データではなく、営業管理システムなどに蓄積されたデータを使う必要があります。人材も企業も納得した状態、すなわち、「内定の承諾という状態を生み出した人材と企業のペアのデータ」と、「内定の承諾に至らなかったペアのデータ」を分析することで、データからマッチしやすいペアを見つけることが可能になります。
過去のデータとしては、人材のスキル情報・職務内容などが多いのですが、このスキル情報や職務内容は解析難度が高いデータとなります。なぜなら、非構造化データであることが多いからです。
なぜ、非構造化データになるかというと、現在の日本の転職市場では職務経歴書をPDFやWord・Excelなどで用意して提出する流れがほとんどなためです。
そのため、人材の情報を余すことなくマッチングの質向上につなげるには、非構造化データからの構造化データへの変換が重要となってきます。
■daXtraという職務経歴書の解析APIの導入
詳細な説明はdaXtra(ダクストラ)社のサイトに載っているので割愛しますが、職務経歴書の解析のためのAPIや関連技術を提供してくれている有償のサービスです。
daXtraのAPIの仕組みとしては、Pythonなどで読み込んだ職務経歴書( PDF/Word/Excelなど)をWebAPIで呼び出せば、即座にスキルや職務経歴に関する情報がjson形式のデータで返されるというものです。
私たちは、このAPIを使って日次で職務経歴書のETL処理を以下のように行っています。なお、全てPythonで作りました。
- ETL用のサーバで日次で社内のストレージに新しく登録された職務経歴書情報を取得
- ストレージから得た職務経歴書情報を読み込み、daXtraのAPIを実行
- WebAPIが返したjsonデータをパースして、8つほどのテーブルを生成
- ユーザーIDと日付とスキル名を複合ユニークキーにして、8つのテーブルデータをDWHの8つのテーブルにappendしていく。
これにより、人材のスキルや職務内容に関する構造化データが、日次で蓄積されるようになりました。
■職務経歴情報を用いたサービスの質向上のための分析
人材のスキルや職務内容に関するデータを安定して分析に使えるようになったことから、様々な分析にこのデータを活用できるようになりました。
ここでは、その一例として、経験したスキルや職務内容から月収予測をするという、機械学習による回帰問題を紹介します。
うまくモデルを作れることができれば、ユーザーがどれくらいの月収を得るポテンシャルがあるのかを推定できるので、サービスの利用ユーザーにとって非常に面白い体験を提供できるのではないかと考えています。
教師データは過去に弊社のサービスを利用して転職に成功した方の月収で、訓練用のデータとして、スキルの経験年数や職務内容を利用しました。
daXtraを用いて変換したスキルは構造化データになっているので、そのまま機械学習のための特徴量になりますが、職務内容はテキストなので、MeCabで形態素解析→Bag-of-Wordsに変換→TF-IDFを計算→K-meansで非階層クラスタリングという処理を行い、そこで得られたソフトクラスターを特徴量にしました。モデルはLightGBMの回帰モデルを使いました。
同じ企業だと予測を当てやすくなることを懸念して、グループ化したクロスバリデーションも行っています。
なお、次元数が多く、訓練データでの学習にすごく時間がかかるので、Scipyでのスパース行列用のデータ変換を行うことが重要でした。
こちらの図はテストデータをもとに予測した月収と実際の金額を月収順に並べたものです。緑線が予測値、赤線は許容範囲内のズレを表現するためのもので、青線が実績値となります。
まだ、異常に外れているインスタンスがあるので、そのようなケースを予測していけるよう今後もモデルの改良をしていきたいと考えています。
また、月収の予測以外に、マッチングの質を高めるための分析にも挑戦しています。こういった非構造化データを、サービスの質の向上につなげ、それを価値に変換できるよう努めていこうと思います。