2015年1月14日 星期三

[機器學習](九)基於協同過濾之推薦系統(Collaboorative Filtering)

假設我們現在不知道${ x }_{ 1 }$與${ x }_{ 2 }$這兩個特徵的指數,而是依靠使用者的「參數向量$\Theta$」,也就是使用者所給予的喜好程度,來判斷特徵向量中的值。


現在我們要求電影1的特徵向量${ x }^{ (1) }$,假設已經事先知道${ \Theta  }^{ (1) }$到${ \Theta  }^{ (4) }$,且也已經約略知道各使用者對每部電影的評分:

使用者1對電影1的評分:${ ({ \Theta  }^{ (1) }) }^{ T }{ x }^{ (1) }\approx5$
使用者2對電影1的評分:${ ({ \Theta  }^{ (2) }) }^{ T }{ x }^{ (1) }\approx5$
使用者3對電影1的評分:${ ({ \Theta  }^{ (3) }) }^{ T }{ x }^{ (1) }\approx0$
使用者4對電影1的評分:${ ({ \Theta  }^{ (4) }) }^{ T }{ x }^{ (1) }\approx0$

則可以得知${ x }^{ (1) }=\begin{bmatrix} 1 \\ 1.0 \\ 0.0 \end{bmatrix}$


問題:


因此,現在的最佳化演算法與之前的相反過來,之前是假設先有電影的特徵向量,我們要去學習使用者的參數向量,現在是假設先有使用者的參數向量,我們要去學習電影的特徵向量

這就像是雞生蛋還是蛋生雞的問題,我們有使用者的參數向量可以學習電影的特徵向量,我們有電影的特徵向量,也可以學習使用者的參數向量。


因此,所要做的就是先隨機猜一個$\Theta$值,學習到不同電影的特徵後,基於這些特徵,又可以去學習一個更好的$\Theta$值,再利用這個$\Theta$值去學習特徵,如此重複計算,不斷迭代優化下去,最後會收斂到一組合理的電影的特徵以及一組合理的對使用者參數的估計。

因此協同過濾換句話說就是每位使用者都藉由評分來幫助演算法更好地學習出特徵,透過自己對幾部電影評分後,就能幫助系統更好地學習。

但是,其實有一個演算法讓我們不用一直重複計算$\Theta$和X,其可以直接同時將$\Theta$和X算出來,也就是將兩者結合在一起。


之前是先最小化$\Theta$,再最小化X,再最小化$\Theta$,再最小化X,如此重複下去。
在新的式子中,會將這兩者同時化簡。

然而原本固有的假設${ x }_{ 0 }=1$必須去掉,所以這些我們將學習的特徵向量X將會是n維實數,而非之前的n+1維實數,同理參數向量$\Theta$也會是n維實數,因為${ \theta  }_{ 0 }$也不存在了。

因為我們現在正在自動學習所要使用的所有特徵,所以不需要將這個等於1的特徵值${ x }_{ 0 }$固定住,如果演算法真的要將它固定成1,它會自己去做,不用我們手動。


總結,如果使用者j還沒對電影i評過分,就是用${({ \Theta  }^{ (j) }) }^{ T }{ x }^{ (i) }$來算出預測的評分。

題目:

沒有留言:

張貼留言