実務と論文で学ぶ
ジョブレコメンデーション
最前線2022
2022/09/24
Machine Learning 15minutes! Broadcast #70
SKUE
1
自己紹介
● 名前
○ SKUE ( Mr_Sakaue )
● バックグラウンド
○ 大学・大学院で経済学・統計学
● 仕事
○ 事業会社の分析部門のマネジャー兼データサイエンティスト
■ データサイエンティスト募集中です!
● スキル
○ Python, R, SQL
● 趣味
○ トランペット, ブログ作成, 料理
2
https://kamonohashiperry.com/
話すこと/話さないこと
● 話すこと
○ 論文などで伺い知れること
● 話さないこと
○ SKUEがジョブマッチングの実務で行っている生々しいこと
3
発表のゴール
● ジョブマッチングの研究動向を知り、この業界に関心を持つ人を増やす
● ジョブマッチング業界ですでに取り組んでいる人と仲良くなる
4
コンテンツ
● 研究動機
● 実務でのフロー紹介
● 先行研究
● おわりに
5
研究動機
6
研究動機
● SKUEはジョブマッチング系の会社に勤めているが、
学生時代に経済学のイメージする効率的な労働市場と実際の就活市場の
実際に大きなギャップを感じていた。
● スキルなど実力を定量化できればもっと効率的に適切な職場を見つけることが
できるのではないかと思うに至った。
7
1枚で理解する
プラットフォームにおけるジョブマッチング
8
求職者 求人 求職者 求人
スカウト系プラットフォームのジョブマッチング
応募系プラットフォームのジョブマッチング
どちらも、応募/スカウト→面接→内定→入社のフローで進む。
求職者と求人のデータとどのフローまで行ったかのデータが蓄積されていくことになる。
実務におけるフロー
9
実務におけるフロー
● 分析設計
● 前処理
● EDA
● モデリング
● 可視化
● フィードバックループ
10
分析設計
● 解くべきタスクの設定
○ ある特定の時点の情報を使って、ユーザーと求人の組み合わせのデータに対して、
それらがマッチングするかどうかを予測する
■ Reciprocal Recommendation Problem
● タスクを満たすデータの構想
○ ある特定の時点の情報(これらの情報は更新されやすいのでスナップショットを残すべき)
■ ユーザー側
● デモグラ(地域、etc…)
● スキル(資格、言語経験年数、etc…)
● 職務経歴(企業、業務内容、etc…)
● 希望条件(勤務地、年収、希望時期、etc…)
■ 求人側
● 要求スキル(希望条件と同様)
● 提示条件(希望条件と同様)
● 業務内容
11
分析設計
● 評価方法
○ nDCG
■ 参考程度に計算している
○ recall@k
■ 上位K位にマッチングした組み合わせがどれくらい入っているか
● ここを大事に見ている
○ 最適化には使わないが、特定の求人がレコメンドされすぎないかをモニタリング
■ LinkedInでは求人ごとの期待応募数をもとに過剰に応募が集まらないように求人のレコ
メンド順位を調整しているらしい。
("Job Recommender Systems: A Review(2021)")
12
前処理
● 基本方針
○ 非構造化データが多いので、構造化データにするための変換などに注力
○ スパースなデータになりがちなので、
重要な要素以外は切り捨てるなどする
● 工夫
○ 蓄積されているデータ(厳選されたもの)と推論時のデータ(色々混ざっているもの)の分布が異なる
ので、
それを回避するための学習データ作成とモデリング
○ 職務経歴書のテキストを構造化データに変換、スキル抽出
○ 求人の非構造化データを入力変数として構造化データを出力してくれる分類器を用意
○ 職務経歴情報から年収を予測するモデルも別途作成
し、潜在的なレベル感を表現
○ ユーザーの経験業務と求人の業務内容の
類似度などの計算
○ 経験業務内容や業務内容から非階層クラスタリング
13
前処理:フローチャート
14
元データ
(ユーザー)
元データ
(求人)
・スキル抽出
・クラスタリング
・スキル抽出
・レベル判定
・クラスタリング
・one-hotベクトル
・数値データ
・one-hotベクトル
・数値データ
組み合わせた
特徴量、
類似度
↑スキル抽出などのためだけの機械学習モデルが別途必要
EDA
● センシティブなデータなので事例は載せないものとする
○ EDAから見えてくる、何も工夫しなければ性能がアップしない傾向は以下のもの
■ 実はマストではなかった要求スキルがあった系 (情報の誤り)
■ 条件合致してないが交渉で合意に至っている系 (ドラマチック)
■ 使用技術がボカされていてマッチさせようがない系 (読めない空気)
■ 求人票が少し古くて一部アップデートされていない系 (情報の誤り)
■ 複数スキルのうちどれか一つで OKなどの記載のある求人 (AI泣かせ)
15
モデリング
● アルゴリズム
○ 勾配ブースティング系の何か
● 教師データ
○ ユーザーが求人に応募して、最終的にマッチングしたかどうかの0-1
■ いわゆる不均衡データ
● 特徴量
○ ダミー変数
○ 類似度
○ クラスタリング結果
● 交差検証
○ ユーザーIDでグループ化した10-folds CVを実行
○ 学習、検証、テストの3つにわけています
● パラメータチューニング
○ グリッドサーチ
16
可視化
● 実際のユーザーが選んだ、かつ、
マッチングしたものが、
レコメンドシステムでは何位くらいに
いるのかを可視化することで、例え
ば順位が大きく外れている場合にど
の特徴量が悪さをしているかを把握
することもできる。
17
フィードバックループ
● ユーザー(求職者)のニーズは多様化・変化していて、定期的にフィードバックの
場を設けなければ良いレコメンドはできない。
○ フィードバックをもらうだけでなく、レコメンド関連のログの蓄積もすることで改善の PDCAサイク
ルを回しやすくなる。
○ 変化するニーズの例
■ リモートワークがマストの人が増えてくる
○ 多様化するニーズの例
■ あえてDXが進んでいない企業を狙う(腕試し転職)
■ 年収を下げてでも新しい職種を狙う(ルビコン川転職)
18
先行研究
19
先行研究
● "Job Recommender Systems: A Review(2021)"
○ Job Recommender System(JRS)研究のサーベイ論文 (2011〜2021)[計133本]
■ 近年は求人などの大量のテキストを用いたジョブレコメンデーションが多い。深層学習も
使われている。BERTもCNNも使われている。
■ ハイブリッドモデルが多い。
■ アルゴリズムの公平性 (年齢/性別での差別)に関心が持たれている。
● 特徴量として差別的なものがなくても学習してしまう可能性。
■ 求職者とリクルーターのインタラクティブなデータ (click/skip)の利活用が重要となってい
る。
● 研究者はRecsysなどのコンペのデータに依存している。
○ 企業がデータセットの提供をするのが限定的
○ JRSの発展のためには KaggleやRecsysのコンペが重要
20
先行研究
CBR(Content-Based Recommender System), CF(Collaborative Filtering)
KB(Knowledge-based Recommender System), MM-SE(Model-based methods on shallow embeddings) 21
先行研究
● "Domain Adaptation for Resume
Classification Using Convolutional
Neural Networks(2017)"
○ 27の職種のラベルが付与された求人票のデータ
(テキスト:短文)をもとにCNNで分類器を作成
○ ラベルがない職務経歴データに関しては求人票
で学習したモデルで推論
○ fastTextでの分類よりも性能が向上した
○ 求人票の数 > 越えれない壁 > 職務経歴データ
の数
22
←職種ごとの混合行列
先行研究
● CNNで学習する際の特徴量は学習済みの
Word2Vecによる単語の分散表現で、同じ長
さのものを使っている。
● 最大値プーリングでの重要な特徴抽出、ド
ロップアウトの正則化など画像分類タスクと
同様になされ、soft-max関数でマルチクラス
の確率を出力している。
● 苦手な職種でのファインチューニングが
future work
23
特徴量マップ 畳み込みフィルター バイアス項
連結(その分次元が大きくなる)
単語の分散表現
ウィンドウサイズ
双曲線正接関数
先行研究
● "Implicit Skills Extraction Using
Document Embedding and Its
Use in Job
Recommendation(2020)"
○ 職務経歴書や求人からNLPでスキル表現を
抽出
○ 暗黙的なスキル表現も抽出
○ 候補者と求人のマッチングのスコア(Affinity
Score)を定義
○ 暗黙的スキル情報を使うとマッチングの性能
がアップすることがわかった
24
先行研究
● テキストに対して
3つの観点でスキル抽出
○ NERを適用
■ Named Entity Recognition(固有表現抽出)
● 文書内のスキルの位置を見つける、カテ
ゴライズを行う
○ PoSを適用
■ Part of Speech(品詞の付与)
● スキル表現かどうかは専門家によるアノ
テーションを実施
○ 色々集めた辞書にあるか計算
■ Wikipedia
■ Onet/Hopeというサイト
■ 自動での拡張型スキル辞書
● 暗黙スキルの考慮
○ 分散表現の平均値で表現
■ Web Development
■ Hard Working
25
先行研究
● スキルとの関連度スコアの定義
○ 職務経歴書や求人からのスキル抽出のために
スコアを用いる
● 表現の除外
○ 関連度スコアに閾値を設けて下回ったらその表現を除外する
などを行う。
● 関連度スコア
○ NERで抽出した表現の信頼度
(S1)
○ 文法が、事前に定義したルールにどれだけ合っているか
(S2)
○ そのスキルがNERで得たスキルっぽいもの、
ポテンシャルスキル、辞書スキルの
3つの辞書にどれだけ合
致したかの割合
(S3)
○ その単語とスキル辞書との分散表現における最大の
cos類似度の値(S4)
○ パラメータは経験則的に決める
○ 0~1の間をとる
26
先行研究
● アフィニティスコア
○ 候補者と求人のマッチの適切さの指標
○ エッジウェイトの平均としている
● エッジウェイト(Y)
○ スキル間のcos類似度(E1)
○ 文書を通じたスキルの出現頻度の割合(E2)
○ 明示的なスキルがあるかどうか(E3)
■ 暗黙だと減点
○ ウェイト(ω)はそのマッチングが成功したかど
うかで重み付ける。
○ 0~1の間をとる
27
先行研究
● "Machine Learned Resume-Job
Matching Solution(2016)"
○ 深層学習(CNN)を用いて、リッチな特徴量を
用意した上で、職務経歴書と求人のマッチン
グ最適化を行っている
○ 職務経歴書の数は4.7万枚
○ KerasやScikit-learnで書かれており軽量
○ 浅いモデルとしてXGBoostを、深いモデルとし
てCNNの両方を、最終的に多数決によるアン
サンブルにすることで性能が向上
28
先行研究
● アンサンブル手法としてはバギングを行って
いる
● リッチな特徴量
○ Manual Feature
■ 年齢とか性別とか
○ Cluster Feasture
■ クラスタリングしたもの
■ トピック(LDA)
○ Semantic Feature
■ 意味的な類似度
● モデルはGPUでもCPUでも動く
● ソースコードはGitHubで公開されてる
29
GitHub:https://github.com/lyoshiwo/resume_job_matching
先行研究
● "SKILL: A System for Skill
Identification and
Normalization(2015)"
○ 職務経歴書や求人に記されているスキルの抽出
に関するNER(Named Entity Recognition:固有
表現抽出)の研究
○ 老舗の求人サイトであるCareerBuilderの
社員による研究
○ Wikipediaベースのカテゴリ分類、Google検索に
よる集合知を利用してスキル表現の抽出をして
いる
○ Word2Vecを用いて、あるスキルと関連している
スキルをもとにタグ付をする
アプローチが紹介されている
30
先行研究
● データ
○ 大量の職務経歴書と求人票
● アプローチ
○ スキル分類
■ wikipediaベースのAPI
■ 国の定めた定義など
○ スキル判定
■ 単一語
● そのまま利用
■ 複数語
● Google検索結果から判断
(集合知)
○ スキルタグ付け
■ Word2Vecをユニグラムで学習し、関連
度を計算しスキルのタグ付け
31
先行研究
● "Effectiveness of job title based embeddings
on résumé to job ad recommendation(2021)"
○ 求人票の表現に対して、分散表現を用いた
求人レコメンドの研究
○ 求人票全体を使うよりも、タイトル部分を
使ったほうがレコメンドの性能が高くなった
■ 分散表現はWord2VecやDoc2Vec
の学習済みや学習したものを色々
試している
■ Cold-Start問題に対しても分散表現
は有効な手段であるとしている
32
おわりに:感想
● 先行研究ではスキル抽出に機械学習などを使っていたり、
CNNで求人票の分類を行っ
ていたりする。スキルマッチングの定義としてアフィニティスコアなるものも扱われてい
た。データサイエンティストとしては、スコアリングのセンスが問われる。
○ DNN系のアプローチは一度試してみたい。
● コンペのデータが限定的だったり、研究機関では職務経歴書のデータをあまり集めてい
ないようなので、求人系の事業会社である自社の方が研究を進めやすそうに思う。
● 仕事内容の近さやただマッチングするだけでなく、将来の活躍を見越した分析設計など
はなさそうに感じた。
33
おわりに:残された課題
● 転職のその先のデータ
○ 転職して、最終的に楽しく働けているかどうかのデータを集めてそれをマッチングに活かすなど
をしていかなければ、経験スキルと条件マッチングだけでは不十分に思われる。
● 職務経歴書は電子化すべき
○ 各人のオリジナルPDFやWordなどをパースしなければ分析できないのが現状
■ 政府とかがフォーマットを作ってくれたらいいのですが。
● 求人情報の管理
○ 古くて条件の変更が本当は必要な求人、新しいけど情報があまり書かれていない求人、条件
があいまいな求人などがあるとレコメンドシステムの性能が落ちる。
34
参考情報
● Corné de Ruijt, Sandjai Bhulai(2021), "Job Recommender Systems: A
Review"
● Luiza Sayfullina, Eric Malmi, Yiping Liao, Alex Jung(2017), "Domain
Adaptation for Resume Classification Using Convolutional Neural
Networks"
● Saket Maheshwary, Hemant Misra(2018), "Matching Resumes to Jobs via
Deep Siamese Network"
● Akshay Gugnani, Hemant Misra(2020), "Implicit Skills Extraction Using
Document Embedding and Its Use in Job Recommendation"
35
参考情報
● Yiou Lin, Hang Lei, Prince Clement Addo, Xiaoyu Li(2016), "Machine
Learned Resume-Job Matching Solution"
● Meng Zhao, Faizan Javed, Ferosh Jacob, Matt McNair(2015), "SKILL: A
System for Skill Identification and Normalization"
● Mesut Kaya and Toine Bogers(2021), “Effectiveness of job title based
embeddings on résumé to job ad recommendation"
● Yuya Matsumura(2022), "事業会社における推薦システム開発事例 /
recsys-in-wantedly-2022"
36

実務と論文で学ぶジョブレコメンデーション最前線2022