ごんぞうの論文要約はじめました。
よかったらのぞいていってください。
今回は、「Learning Job Representation Using Directed Graph Embedding」を読みました。
「International Workshop on Deep Learning Practice for High-Dimensional Sparse Data (DLP-KDD’)」に投稿された論文で、Indeedの方が執筆されています。
解釈間違い等ある可能性があります。間違いを見つけた場合は指摘していただけると助かります。
背景と概要
- 近年では埋め込み技術は進化している
- 職種と企業のペアからなる職種の潜在表現を提案している
- (Job title, Company) というペア
- 類似性関係だけではなく、職種の順序関係も捉えることができる
- 履歴書データに含まれる転職履歴から職位の有向グラフを構築する
- 非対称関係保存グラフ埋め込みアルゴリズムを使用して、職位の埋め込み表現を獲得
- (job position embedding using an asymmetric relation preserving graph embedding algorithm)
- 実世界のデータセットを用いたキャリア移動予測タスク
- 最先端の埋め込み手法と比較する
イントロ
- オンライン求人プラットフォームでは推薦システムは重要な役割を果たしている
- 求職者に最適な雇用者から最適な仕事を提供すること
- 効率的な求人市場を確保する
- 推薦システムにおいて、ユーザーとアイテム間の相互作用を説明するために、潜在的な表現が用いられることがある
- 埋め込み表現は、教師なしで事前学習された後、教師ありモデルに特徴量として使用される
- 対応するアイテムが互いに類似している場合に、潜在空間内で埋め込みベクトルを互いに近づけることが目標となる
- 履歴書から過去の雇用者情報や各企業での役職を抽出可能
- 埋め込みを使用した従来のアプローチ
- Word2Vec [12]モデルに従い、Skip-Gram with Negative Sampling (SGNS)
- 各履歴書をコンテキスト、各職位を単語として扱う
- 履歴書データベースを用いて職位の埋め込み表現を学習
- 欠点
- 同じ履歴書内の職種間の順序を無視する
- 例)最近ではハードウェア企業からソフトウェア企業に転職するエンジニアが増えていることが挙げられる
- 求職者にとって、初期の経験の職位は現在の職位とはかなり異なっている可能性が高い
- 履歴書内の全ての職位を同じように扱ってしまうことで、本来離れているはずの埋め込みが近くなってしまう
- 例)コンピュータ業界では、かつて繊維会社が非常に儲かり、優秀な人材を集めやすい時代があり、現在ではインターネット会社が新たなブームの一つとなっている??
- 同じ履歴書内の職種間の順序を無視する
- 従来アプローチの改善
- 履歴書を有向グラフ上のサンプル軌道として扱うことを提案
- ノード:(Job title, Company)のペア
- エッジ:エッジは全求職者を集約した 転職強度
- 非対称近接保存(APP)を用いて埋め込み表現を獲得する
- 順序関係を保存しており、有向ランダムウォークを用いてグラフからノードをサンプリングし、学習データを作成している
- データのスパース性の問題を軽減
- 仮想履歴書を生成して、サンプリング数を水増ししている
- 履歴書を有向グラフ上のサンプル軌道として扱うことを提案
- Word2Vec [12]モデルに従い、Skip-Gram with Negative Sampling (SGNS)
関連研究
- グラフ埋め込みは大きく分けて3つ
- 因数分解ベース
- ランダムウォークベース ← 今回はこれ
- 深層学習ベース
- グラフ埋め込み手法の共通の仮定
- 類似した近隣のセットを共有するノードが、潜在的な空間で互いに近いベクトルに埋め込まれる
提案手法(ASYMMETRIC JOB POSITION EMBEDDING : 非対称ジョブポジション・エンベッディング)
1. Job position transition graph
- ユーザーの履歴書から有向グラフ \(G = (V, E)\) を構築
- ノード:\(s \in V\) が職位(Job title, Company)を表す
- エッジ:\(e \in E\) が遷移(転職)を表す
- 方向性のある大きなグラフが出来上がる!
-
- この重みを正規化して、各ノード \(s_i\) における遷移確率をもとめている
- \(U_i\) は1つの遷移ステップで \(s_i\) から到達可能なノードセット
- 要するに \(s_i\) から1ステップ先の \(s_j\) への遷移確率ってことかな…
- \(e_{ij}\) には、遷移の頻度を表す重み \(w_{ij}\) が関連付けられている
$$p_{ij} = \frac{w_{ij}}{\sum_{j \in U_i} w_{ij}}$$
- 求職者が一方から他方に遷移する可能性が非常に高い場合、2つのポジションは互いに似ているとする
- このあと、どこでこの遷移確率を使っているかわからない…??
2. Advantage score
遷移しやすさ
- 2つの埋め込みを計算する
- 入力埋め込み(遷移元)
- 出力埋め込み(遷移先)
- $u$ は遷移元のノードのエンベディング、\(v\) は遷移先のノードのエンベディング
- ノード \(s_i\) の \(s_j\) に対するアドバンテージスコアを以下のように計算する
- \(u_i \cdot v_j – u_j \cdot v_i\)
- 正のアドバンテージスコアはより多くの求職者が求人情報 \(i\) から 求人情報 \(j\) に移動する傾向があることを意味する
3. Algorithm
トレーニングデータの生成
- エッジの重みに従って、ランダムにサンプリングされたノード \(s \in V\) から出発して、停止確率 γ のランダムウォークを行う
- 各正の学習サンプル \((s_i, s_j)\) に対して、どの経路においても \(s_i\) から到達できないK個のノードを負のサンプルとして無作為に抽出する
- データの水増し
- \(s_i\) から出発して、エッジの逆方向に沿って、切り捨てられた後ろ向きのランダムウォークを行う
- 逆の遷移順序を観測する後続のパス上のノードは負のサンプルとして追加する ← ??
コスト関数
- \(j\) の出力埋め込みが \(i\) の入力埋め込みに近づくようなコスト関数
- \(k\) の出力埋め込みは、サンプル経路で \(s_k\) から \(s_i\) に到達できる場合、\(i\) の入力埋め込みから遠ざかることになる
$$\log \sigma(u_i \cdot v_j) + \sum_{s_k \in U_{neg.i}} \log \sigma(-u_i \cdot v_k)$$
- \(\sigma(x) = 1 / 1 + \exp(-x)\)、シグモイド
- 確率的勾配降下法(SGD)を用いて最適化
入力:ユーザの履歴書データから構築されたグラフ \(\mathcal{G} = (V, E)\)、ランダムウォークの停止係数 γ、 学習率 λ
出力:各ノード \(s_i \in V\) に対する埋め込み \(e_u, e_v\)
\(u_i, v_i, \forall s_i \in V\) をランダムなベクトルとして初期化している
実験
データセット
- 697万件の履歴書
- 106万件の異なる職種と会社のペア
- 1150万件の職種の変遷
- ※ 頻度の低い職種名と会社名のペアを取り除くために、前処理されている
- 職種は様々な条件の仕事をカバーしている
- グラフには973万個の有向辺があり、これは履歴書で観察された異なる仕事の変遷のペアの数に相当する
- とてもスパース
ベースラインアルゴリズム
- スキップグラム
- 職種間の共起関係のみをモデル化し、遷移の順序や方向は無視している
- APP
- 有向グラフ上のパスをサンプリングするために、再起動を伴うランダムウォークを用いている (職種を表現するために2つの埋め込み空間を使用し、ノード・ペア間の非対称な関係を保持することができる)
タスク
Link prediction
- 問題
- バイナリ分類問題とみなすことができる
- ノードのペアセットが与えられたとき、グラフの中からそれらの間にリンクがあるかどうかを予測する
- データ
- ジョブ・トランジション・グラフから10%のエッジをランダムに選んだ
- 同じ量の負のサンプルは、グラフに含まれないノードペアをランダムにサンプリングして生成
- 負のサンプルには、正のサンプルの逆リンクも追加する
- 正のサンプルのリンクの方向を明示するために
- 目的
- 有向グラフから学習した埋め込み表現がどれだけ近接情報を保持できるかを調べること
- 手法
- Skipgramでは、入力された埋め込みから計算されたノードペア間の類似性スコアを用いてリンクを予測する
- APP と Proposed ではノードペアの入力エンベディングと出力エンベディングの類似性を用いてリンクを予測する
- 評価
- ROC-AUC で評価
- 考察
- Skipgram ではリンクの方向をうまく捉えられていない
- APP では度数の低い職能が多く存在することで APP の学習データではうまく表現できない ← ??
Node prediction: next career move recommendation
- 問題
- 次の職を予測
- 簡略化したシナリオ
- 次の可能性のある仕事をスコアリングするために、学習したグラフの埋め込みだけを使用する
- ある埋め込みがどの程度転職傾向をモデル化できるかの指標となりえる
- 目的
- 推薦目的のために求職者の現在の職位に基づいてトップ k の可能な次の職位を計算すること
- データ
- 転職グラフのノードの1%をランダムに選ぶ
- 方法
- ノード $s$ ごとに、$s$ が遷移できるノードのセットを アドバンテージスコア の差でランク付けする
- アドバンテージスコアが高い順に並べているのかな…?
- 上位10ノードのみを残す
- エンベディングから、最も似ているジョブのトップ10を見つけ、グラフから計算されたトップ10リストとのオーバーラップを計算
- ノード $s$ ごとに、$s$ が遷移できるノードのセットを アドバンテージスコア の差でランク付けする
- 考察
- どれも低い精度であるとのこと
- しかし、チャンスレベルを考えると精度は良いのでは??
- 過去の遷移データのみに基づいた予測は困難
- APPとProposedがSkipgramより精度がいいのは、有向グラフの局所的な構造をよりよく捉えられているため
- どれも低い精度であるとのこと
参考文献

Learning job representation using directed graph embedding | Proceedings of the 1st International Workshop on Deep Learning Practice for High-Dimensional Sparse Data
コメント