半教師付きの設定で,ページランクみたいにグラフのノードに重み付けをつけるアルゴリズム,半教師付きページランク (Semi-Supervised PageRank)を考えてみました.

ページランクは,グラフのノードに重みをつけるアルゴリズムです. 一つやりたいことがあって,最初ページランクを使っていたのですが,教師的な情報を組み込むのが難しかったので,自分で考えることにしました. というのも,ページランクでは,すべてのグラフノードの重みを1に初期化します. 単純にここに教師的な情報を組み込む,例えば数個のノードの重みを高くするなど,をやってみたのですが,最終的に出てくる解にあまり反映されなかったのです. なぜなのか,をいろいろ考えましたが,ページランクはノードの重みを繰り返し伝搬するので,初期値が大事というより,エッジが大事なんだと今は思っています(もう少しちゃんと考える必要あり).

定式化していきましょう. グラフを考えます. 扱いやすいように,エッジは隣接行列 (Adjacency matrix) で表現することにします. をいろいろ変えることで,いろんなグラフが表現できますが,ここでは一般の行列にしときます. 重み付けにおける教師データとは何か?という話になると思うのですが,ここでは,高い(低い)重みがついて欲しいノードの集合が与えられることにします.

さて,各ノードにおける重みをと表すことにして,これを求めることがゴールになります. とりあえず,の要素に該当する重みを大きくしたいので,を以下で定義します.

こうすると,のスコアの合計値を,と表すことができます. 今,を最大化すれば良さそうですが,今回はラプラス正則化 (Laplacian Regularization) と呼ばれるものを加えます. これは,ノード間にエッジが存在する場合,それらのスコアを近づける,というアイデアです. ノードの間にエッジが存在する,すなわちならを最小化します. これは,と書けますね.これをすべてのノードに対してやります. 以上を踏まえて,以下の問題を解きます.

ただし,第2項にl-2正則化項を加えています. 第3項がラプラス正則化項です. これの解は以下のように解析的に得られます.

ただし,は対角行列,であり,これは通常の正則化パラメータと同じように事前に決めてやるものとします. これで,望ましい結果というのを,だけでなく,でも表現できるようになりました. 次回は,これをウェブページ解析に応用したいと思います.