問題タブ [matrix-factorization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
keras - Keras で行列分解を実装するときの奇妙な動作
Keras を使用したレコメンデーション用の行列分解の単純なモデルを実装しています。モデルを実行すると、いくつかの奇妙な動作が見つかりました。
- ユーザーとアイテムの潜在的要因は、ゼロ ベクトルに向かう傾向があります。
- ゼロ以外の値 (値が 1) だけを当てはめようとしても、これらの潜在因子は 0 になります。さらに奇妙なことに、真の値 (常に 1) と予測値 (常に 1) の差であっても、トレーニングと検証の損失が減少します。ユーザーの潜在因子とアイテムの潜在因子の間の内積である)を増やす必要があります(これらの潜在因子がゼロになるため)。損失指標として「mse」を使用します。
何が起こったのかわかりません。誰かが以前にこの問題に遭遇したことがある場合は、解決策を共有していただければ幸いです。(コードがかなり面倒なので投稿できなくてすみません)。ありがとうございました。
machine-learning - 行列分解で過剰適合を検出する方法は正しいですか?
ユーザーのクリック行動記録に基づくレコメンダー システム アルゴリズムとして行列分解を使用しています。2 つの行列因数分解法を試します。
最初のものは基本的な SVD であり、その予測はユーザー ファクター ベクトルuとアイテム ファクターiの積です: r = u * i
2 番目に使用したのは、バイアス コンポーネントを使用した SVD です。
r = u * i + b_u + b_i
ここで、b_uとb_iは、ユーザーとアイテムの好みの偏りを表します。
私が使用しているモデルの 1 つはパフォーマンスが非常に低く、もう 1 つは妥当です。なぜ後者のパフォーマンスが悪いのか、私にはよくわかりません。
オーバーフィッティングを検出する方法をグーグル検索したところ、学習曲線が良い方法であることがわかりました。ただし、x 軸はトレーニング セットのサイズで、y 軸は精度です。これは私をかなり混乱させます。トレーニング セットのサイズを変更するにはどうすればよいですか? データ セットからいくつかのレコードを選択しますか?
別の問題は、反復損失曲線をプロットしようとしたことです (損失は です)。そして、曲線は正常なようです:
しかし、私が使用する指標は適合率と再現率であるため、この方法が正しいかどうかはわかりません。反復精度曲線をプロットしましょうか??? または、これはすでに私のモデルが正しいことを示していますか?
私が正しい方向に進んでいるかどうか、誰か教えてください。どうもありがとう。:)