前回の投稿( SVDでMovieLensのレコメンドを実装する - け日記 )に引き続き、今回はNMFで映画のレコメンドを実装します。 NMF 非負値行列因子分解(Non-negative Matrix Factorization: NMF)は、ある行列XをW・Hに近似的に分解する方法の一つです。その名の通り、各行列の要素は全て0以上となります。 SVDなどの行列分解では、負の値が現れることがあります。 しかし、実世界で使われる値(画素、頻度、評価値など)の多くは非負値で、分解した結果に解釈を与えるなど非負の性質を保ちたいケースもあります(負の画素値などは存在しませんし)。 そうした場合にNMFが使われるようです。 NMFでは、M×Nの行列Xを、N×kの行列Wとk×Mの行列Hに分解します。kはM,Nよりも小さな値が使われます。 未知のWとHを求めるために、Xとの距離を定義します。 ここでは
![NMFでMovieLensのレコメンドを実装する - け日記](https://cdn-ak-scissors.b.st-hatena.com/image/square/705ba85fbb4424b20fc5c2613d0ccd0f7f0937d4/height=288;version=1;width=512/https%3A%2F%2Fcdn-ak.f.st-hatena.com%2Fimages%2Ffotolife%2Fo%2Fohke%2F20171223%2F20171223190013.png)