KDD2015読み会
Matrix Completion with Queries
2015/08/29 中江 俊博 (NTTデータ数理システム)
対象論文
 Matrix Completion with Queries
 Natali Ruchansky, Mark Crovella, Evimaria Terzi
 http://www.cs.bu.edu/faculty/crovella/paper-
archive/kdd15-active-mc.pdf
2015/8/292
概要
 行列の要素の一部だけが観測されており、観測された
要素のみから、未観測の値を補完(completion)したい。
 元の行列はランク(正確には effective rank)が
ある値 𝑟 > 0 であることを仮定。
 更に、未観測の値を追加で観測することで、
行列補完の精度を高めることができないか?
2015/8/293
問題設定
 記号
 真の行列 𝑇 のうち、観測できている要素(マスク) : Ω
 観測された行列 : 𝑇Ω
 新規に観測する要素(クエリ) : 𝑄
 問題 [ACTIVECOMPLETION]
 行列 𝑇(ランク 𝑟 > 0)の一部の要素 Ω のみが既知(𝑇Ω)
 さらに追加で要素 𝑄 を観測(𝑇Ω′ ; Ω′
= Ω ∪ 𝑄)
 𝑇Ω′から行列補完を行った推定値 𝑇Ω′ の相対誤差
𝑅𝐸𝐿𝐸𝑅𝑅𝑂𝑅 𝑇Ω′ =
𝑇− 𝑇Ω′
𝑇
が最小となるクエリ 𝑄 を見つける。
 ※ 𝑋 = 𝑖=1
𝑛1
𝑗=1
𝑛2
𝑋𝑖𝑗
2
2015/8/294
行列補完の方法
 行列 𝑇Ω を 𝑇Ω = 𝑋𝑌 として分解し、掛け算して補完
 𝑋, 𝑌 の値は、既知の値から線形方程式を
繰り返し解くことで計算する。
 𝑟 = 2の場合
2015/8/295
𝑇𝑖𝑗 = 𝑥𝑖1 𝑦1𝑗 + 𝑥𝑖2 𝑦2𝑗
𝑇𝑖′𝑗 = 𝑥𝑖′1 𝑦1𝑗 + 𝑥𝑖′2 𝑦2𝑗
↓
𝑦についての線形方程式
𝐴 𝑥 𝑦 = 𝑡
を解けばいい
↓
この作業の繰り返し
既知
推定
既知
𝑛2
𝑛1
𝑇
𝑟
𝑟
𝑋
𝑌
𝐴 𝑥
𝑦
𝑡
未知
マスクグラフ 𝐺Ω
 次をノード・エッジとして持つような2部グラフ 𝐺Ω
 ノード: 行列𝑇のすべての行・すべての列
 エッジ : マスクΩに含まれるセル(観測できたセル)
 エッジは対応する行ノードと列ノードをつなぐ。
2015/8/296
マスク Ωマスクグラフ 𝐺Ω
アルゴリズム “Sequential”
 “Sequential”
 全ての行・列の探索順序 𝜋 があらかじめ決まっている。
 各ステップで、マスクグラフにおいて計算対象ノードから
エッジで結ばれたすでに計算済みのノードの値を用いて計算。
 𝑟 = 2の場合
2015/8/297
𝑇𝑖𝑗 = 𝑥𝑖1 𝑦1𝑗 + 𝑥𝑖2 𝑦2𝑗
𝑇𝑖′𝑗 = 𝑥𝑖′1 𝑦1𝑗 + 𝑥𝑖′2 𝑦2𝑗
𝑇𝑋
𝑌
マスクグラフ 𝐺Ω
計算対象
ノード
●…計算済み
○…未計算(行) (列)
“Sequential” の問題点と解決策
 問題点
 そもそも探索順序 𝜋 をどう与えればよいかが自明でない。
 順序が適切でない場合、逆行列を解くのに
必要な次元数が得られない(incomplete)
 逆行列が必要なので𝑋のどの𝑟行も、 𝑌のどの𝑟列も
独立でないといけないが、一般には成り立たない。
 逆行列が解けても、相関が強ければ、解は
安定でなくなる(unstable) → 観測ノイズに頑健でなくなる。
 解決策
 ノードを事前に適切にソートして、探索順序を決める(Order)
 探索中に逆行列が解けない場合や、解が安定でない場合、
都度、行列の要素を追加で観測する(Extend)
2015/8/298
提案法 “Order & Extend”
 概略
まず全てのノードを適切な順序 𝜋 に並び替える(Order)
for ノード in 𝜋
if 線形方程式に用いる t が足りない(incomplete) then
足りない 𝑇 を追加観測
while 𝐴 𝑥 𝑦 = t が安定ではない(stable) do
安定にするために次に観測すべき要素 𝑖∗
を
探索し(Stabilize)、要素 𝑇𝑖∗,𝑗を追加観測
𝑦 = 𝐴 𝑥
𝑇
𝐴 𝑥
−1
𝐴 𝑥 𝑡 (最小二乗解 ; 線形回帰)
※ 行を解く場合も、𝑥, 𝑦 を交換して同様の処理を実施
2015/8/299
適切なノード順序の決め方(Order)
 次数の最も小さなものを最後尾に持っていく。
 最後尾に移動したノードのエッジは削除して
次に次数の小さなものを後ろに.. この探索を順次繰り返す。
 この順序で並べ替えた後に、順序の前から後ろに向かって
エッジに向きがついた有向グラフを考える。
 𝜋 を先頭から探索していき、そのノードについて
 indegree ≤ 𝑟 の場合(親が少ない → 親を増やす戦略)
 そのノードの子供のうち、一番後ろにいるノードの直後に並べる。
 indegree > 𝑟 の場合(親が多い → 親を減らす戦略)
 そのノードの親のうち、先頭から𝑟番目のノードの直後に並べる。
※ ただし先頭のノード 𝑟 個の探索はスキップ(のはず。その記載はなし)
2015/8/2910
提案法 “Order & Extend”
 概略
まず全てのノードを適切な順序 𝜋 に並び替える(Order)
for ノード in 𝜋
if 線形方程式に用いる t が足りない(incomplete) then
足りない 𝑇 を追加観測
while 𝐴 𝑥 𝑦 = t が安定ではない(stable) do
安定にするために次に観測すべき要素 𝑖∗
を
探索し(Stabilize)、要素 𝑇𝑖∗,𝑗を追加観測
𝑦 = 𝐴 𝑥
𝑇
𝐴 𝑥
−1
𝐴 𝑥 𝑡 (最小二乗解 ; 線形回帰)
※ 行を解く場合も、𝑥, 𝑦 を交換して同様の処理を実施
2015/8/2911
安定性と評価指標
 安定性
 𝐴 𝑥 𝑦 = 𝑡 の解 𝑦 = 𝐴 𝑥
−1t について 𝐴 𝑥, 𝑡 それぞれに
ノイズが付加されても、解 𝑦 が大きく変動しないなら安定。
 安定性の評価指標
 local condition number
𝑙 𝐴 𝑥, 𝑡 = 𝐴 𝑥
−1
𝑡
𝑦
 この値がしきい値 𝜃(= 1) を超えた場合に不安定とみなす。
 今は最小二乗解を見つけるので、代わりに次を計算する
𝑙 𝐴 𝑥, 𝑡 = 𝐴 𝑥
𝑇 𝐴 𝑥
−1 𝐴 𝑥
𝑡
𝑦
 安定性の評価の問題点
 逆行列の計算コストが高いのが難点。
2015/8/2912
観測する位置を決める(Stabilize)
 𝐴 𝑥 𝑦 = 𝑡 が不安定の場合、追加で観測したら、
local condition number が最小になるような 𝑖∗
を探す。
 この計算のために毎回未観測の要素 𝑇𝑖∗ 𝑗を新規に
観測するのは大変なので、とりあえず乱数を埋める(!)
2015/8/2913
𝑥𝑖∗1 𝑥𝑖∗2 𝑇𝑖∗ 𝑗
未観測の要素
とりあえず乱数を埋める
(同じ行・列から値を拝借)
𝐴 𝑥
α
𝑡
𝜏
𝑦
既知 既知
既知
要素追加後の local condition number
 愚直に計算する場合
 𝑙 𝐴 𝑥, 𝑡 = 𝐴 𝑥
𝑇 𝐴 𝑥
−1
𝐴 𝑥
𝑡
𝑦
 これを毎回計算するのはコスト高い。
 便利な更新式(Sherman-Morison Formula)
 追加要素以外の逆行列 𝐶 = 𝐴 𝑥
𝑇
𝐴 𝑥
−1
だけ先に計算しておく。
 追加要素を含めた逆行列 𝐷 = 𝐴 𝑥
𝑇 𝐴 𝑥
−1
= 𝐶 −
𝐶𝛼 𝑇 𝛼𝐶
1+𝛼𝐶𝛼 𝑇
 𝑦 = 𝐷 𝐴 𝑥 𝑡
 Local condition number : 𝐷 𝐴 𝑥
𝑡
𝑦
→ 逆行列の計算を回避。
2015/8/2914
𝐴 𝑥 𝑡
=
=
Stabilize (論文より)
2015/8/2915
↑ 逆行列を伴わない
local condition number の計算
(一旦乱数で𝑇𝑖∗ 𝑗を計算)
Order & Extend (論文より)
2015/8/2916
← ここでQueryを要求
← ここでQueryを要求
検証
 検証
 各種データセットに対して、一様乱数でマスクを生成。
 比較対象アルゴリズムとして次の2つを行列補完アルゴリズム:
 OptSpace : SVD-Based
 LmaFit : Alternate Least-Square Method
 他の2つのアルゴリズムについては、クエリをランダムに生成。
2015/8/2917
検証結果(1)
 横軸:クエリ回数(budget), 縦軸: 相対誤差
2015/8/2918
検証結果(2)
 大規模データに対する行列補完
 画像データに対する行列補完の挙動
2015/8/2919
(報告者の)考察
 行列補完アルゴリズムの中に、追加観測が
入り込んでいる。観測が終わるまで先に進まない。
 観測をバッチ的にやるのは、そもそも無理。
(報告者は、これができることを期待していた…)
 レスポンスが返ってくるまで時間のかかるケースなども苦しい。
 DBなどにアクセスするのにコスト(費用)はかかるが
レスポンスが早いケースなどに向きそう。
 一旦乱数を入れて、観測すべきインデックスだけ
先に洗い出してから、バッチ的に観測するなどの
作戦が有効かもしれない。
2015/8/2920

KDD2015読み会 Matrix Completion with Queries

  • 1.
    KDD2015読み会 Matrix Completion withQueries 2015/08/29 中江 俊博 (NTTデータ数理システム)
  • 2.
    対象論文  Matrix Completionwith Queries  Natali Ruchansky, Mark Crovella, Evimaria Terzi  http://www.cs.bu.edu/faculty/crovella/paper- archive/kdd15-active-mc.pdf 2015/8/292
  • 3.
    概要  行列の要素の一部だけが観測されており、観測された 要素のみから、未観測の値を補完(completion)したい。  元の行列はランク(正確にはeffective rank)が ある値 𝑟 > 0 であることを仮定。  更に、未観測の値を追加で観測することで、 行列補完の精度を高めることができないか? 2015/8/293
  • 4.
    問題設定  記号  真の行列𝑇 のうち、観測できている要素(マスク) : Ω  観測された行列 : 𝑇Ω  新規に観測する要素(クエリ) : 𝑄  問題 [ACTIVECOMPLETION]  行列 𝑇(ランク 𝑟 > 0)の一部の要素 Ω のみが既知(𝑇Ω)  さらに追加で要素 𝑄 を観測(𝑇Ω′ ; Ω′ = Ω ∪ 𝑄)  𝑇Ω′から行列補完を行った推定値 𝑇Ω′ の相対誤差 𝑅𝐸𝐿𝐸𝑅𝑅𝑂𝑅 𝑇Ω′ = 𝑇− 𝑇Ω′ 𝑇 が最小となるクエリ 𝑄 を見つける。  ※ 𝑋 = 𝑖=1 𝑛1 𝑗=1 𝑛2 𝑋𝑖𝑗 2 2015/8/294
  • 5.
    行列補完の方法  行列 𝑇Ωを 𝑇Ω = 𝑋𝑌 として分解し、掛け算して補完  𝑋, 𝑌 の値は、既知の値から線形方程式を 繰り返し解くことで計算する。  𝑟 = 2の場合 2015/8/295 𝑇𝑖𝑗 = 𝑥𝑖1 𝑦1𝑗 + 𝑥𝑖2 𝑦2𝑗 𝑇𝑖′𝑗 = 𝑥𝑖′1 𝑦1𝑗 + 𝑥𝑖′2 𝑦2𝑗 ↓ 𝑦についての線形方程式 𝐴 𝑥 𝑦 = 𝑡 を解けばいい ↓ この作業の繰り返し 既知 推定 既知 𝑛2 𝑛1 𝑇 𝑟 𝑟 𝑋 𝑌 𝐴 𝑥 𝑦 𝑡 未知
  • 6.
    マスクグラフ 𝐺Ω  次をノード・エッジとして持つような2部グラフ𝐺Ω  ノード: 行列𝑇のすべての行・すべての列  エッジ : マスクΩに含まれるセル(観測できたセル)  エッジは対応する行ノードと列ノードをつなぐ。 2015/8/296 マスク Ωマスクグラフ 𝐺Ω
  • 7.
    アルゴリズム “Sequential”  “Sequential” 全ての行・列の探索順序 𝜋 があらかじめ決まっている。  各ステップで、マスクグラフにおいて計算対象ノードから エッジで結ばれたすでに計算済みのノードの値を用いて計算。  𝑟 = 2の場合 2015/8/297 𝑇𝑖𝑗 = 𝑥𝑖1 𝑦1𝑗 + 𝑥𝑖2 𝑦2𝑗 𝑇𝑖′𝑗 = 𝑥𝑖′1 𝑦1𝑗 + 𝑥𝑖′2 𝑦2𝑗 𝑇𝑋 𝑌 マスクグラフ 𝐺Ω 計算対象 ノード ●…計算済み ○…未計算(行) (列)
  • 8.
    “Sequential” の問題点と解決策  問題点 そもそも探索順序 𝜋 をどう与えればよいかが自明でない。  順序が適切でない場合、逆行列を解くのに 必要な次元数が得られない(incomplete)  逆行列が必要なので𝑋のどの𝑟行も、 𝑌のどの𝑟列も 独立でないといけないが、一般には成り立たない。  逆行列が解けても、相関が強ければ、解は 安定でなくなる(unstable) → 観測ノイズに頑健でなくなる。  解決策  ノードを事前に適切にソートして、探索順序を決める(Order)  探索中に逆行列が解けない場合や、解が安定でない場合、 都度、行列の要素を追加で観測する(Extend) 2015/8/298
  • 9.
    提案法 “Order &Extend”  概略 まず全てのノードを適切な順序 𝜋 に並び替える(Order) for ノード in 𝜋 if 線形方程式に用いる t が足りない(incomplete) then 足りない 𝑇 を追加観測 while 𝐴 𝑥 𝑦 = t が安定ではない(stable) do 安定にするために次に観測すべき要素 𝑖∗ を 探索し(Stabilize)、要素 𝑇𝑖∗,𝑗を追加観測 𝑦 = 𝐴 𝑥 𝑇 𝐴 𝑥 −1 𝐴 𝑥 𝑡 (最小二乗解 ; 線形回帰) ※ 行を解く場合も、𝑥, 𝑦 を交換して同様の処理を実施 2015/8/299
  • 10.
    適切なノード順序の決め方(Order)  次数の最も小さなものを最後尾に持っていく。  最後尾に移動したノードのエッジは削除して 次に次数の小さなものを後ろに..この探索を順次繰り返す。  この順序で並べ替えた後に、順序の前から後ろに向かって エッジに向きがついた有向グラフを考える。  𝜋 を先頭から探索していき、そのノードについて  indegree ≤ 𝑟 の場合(親が少ない → 親を増やす戦略)  そのノードの子供のうち、一番後ろにいるノードの直後に並べる。  indegree > 𝑟 の場合(親が多い → 親を減らす戦略)  そのノードの親のうち、先頭から𝑟番目のノードの直後に並べる。 ※ ただし先頭のノード 𝑟 個の探索はスキップ(のはず。その記載はなし) 2015/8/2910
  • 11.
    提案法 “Order &Extend”  概略 まず全てのノードを適切な順序 𝜋 に並び替える(Order) for ノード in 𝜋 if 線形方程式に用いる t が足りない(incomplete) then 足りない 𝑇 を追加観測 while 𝐴 𝑥 𝑦 = t が安定ではない(stable) do 安定にするために次に観測すべき要素 𝑖∗ を 探索し(Stabilize)、要素 𝑇𝑖∗,𝑗を追加観測 𝑦 = 𝐴 𝑥 𝑇 𝐴 𝑥 −1 𝐴 𝑥 𝑡 (最小二乗解 ; 線形回帰) ※ 行を解く場合も、𝑥, 𝑦 を交換して同様の処理を実施 2015/8/2911
  • 12.
    安定性と評価指標  安定性  𝐴𝑥 𝑦 = 𝑡 の解 𝑦 = 𝐴 𝑥 −1t について 𝐴 𝑥, 𝑡 それぞれに ノイズが付加されても、解 𝑦 が大きく変動しないなら安定。  安定性の評価指標  local condition number 𝑙 𝐴 𝑥, 𝑡 = 𝐴 𝑥 −1 𝑡 𝑦  この値がしきい値 𝜃(= 1) を超えた場合に不安定とみなす。  今は最小二乗解を見つけるので、代わりに次を計算する 𝑙 𝐴 𝑥, 𝑡 = 𝐴 𝑥 𝑇 𝐴 𝑥 −1 𝐴 𝑥 𝑡 𝑦  安定性の評価の問題点  逆行列の計算コストが高いのが難点。 2015/8/2912
  • 13.
    観測する位置を決める(Stabilize)  𝐴 𝑥𝑦 = 𝑡 が不安定の場合、追加で観測したら、 local condition number が最小になるような 𝑖∗ を探す。  この計算のために毎回未観測の要素 𝑇𝑖∗ 𝑗を新規に 観測するのは大変なので、とりあえず乱数を埋める(!) 2015/8/2913 𝑥𝑖∗1 𝑥𝑖∗2 𝑇𝑖∗ 𝑗 未観測の要素 とりあえず乱数を埋める (同じ行・列から値を拝借) 𝐴 𝑥 α 𝑡 𝜏 𝑦 既知 既知 既知
  • 14.
    要素追加後の local conditionnumber  愚直に計算する場合  𝑙 𝐴 𝑥, 𝑡 = 𝐴 𝑥 𝑇 𝐴 𝑥 −1 𝐴 𝑥 𝑡 𝑦  これを毎回計算するのはコスト高い。  便利な更新式(Sherman-Morison Formula)  追加要素以外の逆行列 𝐶 = 𝐴 𝑥 𝑇 𝐴 𝑥 −1 だけ先に計算しておく。  追加要素を含めた逆行列 𝐷 = 𝐴 𝑥 𝑇 𝐴 𝑥 −1 = 𝐶 − 𝐶𝛼 𝑇 𝛼𝐶 1+𝛼𝐶𝛼 𝑇  𝑦 = 𝐷 𝐴 𝑥 𝑡  Local condition number : 𝐷 𝐴 𝑥 𝑡 𝑦 → 逆行列の計算を回避。 2015/8/2914 𝐴 𝑥 𝑡 = =
  • 15.
    Stabilize (論文より) 2015/8/2915 ↑ 逆行列を伴わない localcondition number の計算 (一旦乱数で𝑇𝑖∗ 𝑗を計算)
  • 16.
    Order & Extend(論文より) 2015/8/2916 ← ここでQueryを要求 ← ここでQueryを要求
  • 17.
    検証  検証  各種データセットに対して、一様乱数でマスクを生成。 比較対象アルゴリズムとして次の2つを行列補完アルゴリズム:  OptSpace : SVD-Based  LmaFit : Alternate Least-Square Method  他の2つのアルゴリズムについては、クエリをランダムに生成。 2015/8/2917
  • 18.
  • 19.
  • 20.
    (報告者の)考察  行列補完アルゴリズムの中に、追加観測が 入り込んでいる。観測が終わるまで先に進まない。  観測をバッチ的にやるのは、そもそも無理。 (報告者は、これができることを期待していた…) レスポンスが返ってくるまで時間のかかるケースなども苦しい。  DBなどにアクセスするのにコスト(費用)はかかるが レスポンスが早いケースなどに向きそう。  一旦乱数を入れて、観測すべきインデックスだけ 先に洗い出してから、バッチ的に観測するなどの 作戦が有効かもしれない。 2015/8/2920