データサイエンス トピックス

AIは得意?

投稿日:

独学で鍛える数理思考」(著者:古嶋十潤 発行所:技術評論社)から、情報検索に関する数理その4です。欠損部を予測する3番目の方法「行列因子分解」の説明です。昨日の「予測できますか?」よりも客観的な予測になると思います。

資料はこちら → 情報検索その4

p.1 行列因子分解は、評価値行列分解した潜在因子行列を解析的に求めて予測値を算出する方法で、イメージ図を以下に記します。左辺は、ユーザーとアイテムの行列で、右辺ユーザー因子行列アイテム因子行列に分解した行列を示しています。この二つの行列を「潜在因子行列」と呼び、dは、潜在因子(価格、カテゴリ、隠れた特性など)です。Rが4行×4列の行列であれば、4×1と1×4、4×3と3×4あるいは、4×2と2×4の組合せでも構いません。右辺は左辺の近似ということで「=」でなく「」になっています。

p.2 以降は式の導出なので、ざっと眺めてください。やりたいことは、実際の評価行列Rから予測の潜在因子行列Rハットを差引いた残差行列がゼロ行列になるように、潜在因子行列を逐次計算します。

p.3 RとRハットの差が誤差(残差)で、この残差行列Eを最小化します。Eの成分を足し合わせたもの損失関数Lとおきます。Lの場合、負の値があると平均化されてしまいますので、総和を二乗したものをLと置き換えます。{ }の中身を「」とおいて展開します。この式を4つの未知数pu,1、pu,2、q1,i、q2,iで偏微分する。

p.4 4つの未知数で偏微分した式を見ると、赤字共通部分eu,iがあります。「勾配降下法」の2つのグラフをご覧ください。偏微分で得られた式は、曲線の勾配を表しています。最初の勾配が、pu,k(0)です。勾配が最小(0)になるまで逐次計算を繰り返します。勾配が負の場合も同様です。ところが、勾配が正から減少していく途中で負になってしまうと発散して収束しなくなりますので、右のグラフの上のように「学習率η」の項を入れることにより、発散を防ぎます。ηの値は、0.10〜0.001の間で調整します。

p.5 実際に数値を入れて計算してみます。潜在因子行列PQ適当な初期値を入れ、残差行列を計算する際に、欠損項は計算せずに「➖」にしておきます。損失関数 Lは、残渣行列の各成分の平方和で、125.10となります。p1,1(0)を用いてp1,1(1)、q1,1(0)を用いてq1,1(1)を算出します。PとQの他の成分も同様に算出します。そして2回目のPQの行列を計算します。

p.6 上記の計算を10,000回繰り返すと、残差行列が0になります。損失関数L=0となります。この時のPQの行列の成分が予測値となります。欠損していた成分も算出されています。繰り返しの試行回数が増加すると、右下のグラフのように、残差行列Eの各要素の2乗和はゼロに収束します。

p.7 昨日の「協調フィルタリング」による予測値と今回の行列因子分解の予測値を示します。どちらが実態に沿っているかは検討の余地があります。AIにとっては、行列因子分解の方が得意でしょうね。

勾配降下法」は、「最短ルートは?」「何度も何度も」「学習の進行状況がわかる」でも取り上げました。

-データサイエンス, トピックス

Copyright© 進化するガラクタ , 2024 All Rights Reserved Powered by STINGER.