在上一回中介紹了基於內容做推薦的概念。基本上,我們可以透過量化的方式來描述內容特徵,接著找出使用者所偏好的內容特徵,之後就可以將和使用者偏好相似的內容,推薦給該使用者了。

接著,我們要介紹一種名為「協同過濾式(Collaborative Filtering)推薦」。這種推薦方法中的「協同」二字,指的便是利用群體協同合作下所得到的資訊,來進行推薦。

協同過濾式推薦系統的運作方式
在「協同過濾式」的推薦系統下,系統是如何和使用者們相互合作,以便取得進行推薦所需的相關資訊呢?

通常,這樣的系統會間接或直接地收集使用者對系統中項目的偏好。間接收集就像是使用者點閱某一則新聞,或是觀看某一則影片。這種行為是使用者之所以使用系統的目的之一,但是又能夠表示出使用者對該項目(例如新聞或影片)本身的偏好,所以使用者毋需另行提供資訊,系統便能夠知道他對該項目具有一定程度喜好。相反的,系統也可以提供像評分機制,允許使用者對項目進行評分,如此一來,便可以直接的收集到使用者的偏好。

使用者在系統中可能會做很多動作,都或多或少表達出他對項目的不同偏好程度。

只是單純地點擊瀏覽,可能代表著使用者有偏好,但不見得很高。如果你的系統中有書籤、收藏或設為最愛的功能,而使用者又把某項目設到書籤中時,就代表他對此項目有較高的偏好。

就像在電子商務網站中,決定購買的行為,所表達出來的便是十分強烈的偏好。無論如何,系統可以透過使用者參與、使用系統的行為,來收集到使用者對各項目程度不等的偏好資訊。

在收集到足夠多的使用者偏好資訊之後,我們便可以透過這些偏好資訊,從中找出潛在的相似性,進而利用這些相似性來做推薦。

舉例來說,我們可以計算出偏好項目相似的使用者,然後基於「物以類聚」的概念來做做推薦,就像是使用者A偏好的項目和使用者B、C相近,那麼使用者B和C所喜歡的項目,使用者A就很有可能也會喜歡。

若以線上商店做為例子,從過去的消費記錄可以分析出來,曾經購買過某些商品的消費者,大多都會購買另一個特定的商品。那麼當目前系統所欲推薦的消費者曾經購買過這些商品時,那麼就很有可能也會購買這個特定商品,此時,系統便可以將此商品推薦予該消費者。

我們可以說,協同過濾式推薦是從社群的活動中收集資料,進而得以做推薦。這種方法的優點是它不需要像基於內容的推薦方法,一樣去建立內容特徵的模型。

在基於內容的推薦方法下,設計者必須充份了解所要處理內容的特質,以及資料的特性,才能夠有足夠的知識建立內容的特徵,以及表示的方式,最終也才有能力做推薦。但是,協同過濾式推薦則不去理會項目的內容究竟是什麼,它只管使用者對項目是否有所偏好,以及偏好的程度究竟有多高。所以,對於那些不容易建立起內容特徵模型的項目來說,反而比較好處理。

此外,使用者對項目的偏好其實不完全建立在內容的相似度上,有些時候,即使內容不甚相似的項目,它們卻很有可能被同時喜愛,這或許是因為一些更隱性的個人品味因素所導致的。但是這一類型的項目,就不容易利用基於內容的推薦方法來找到。但是,協同過濾式的推薦方法直接略過內容,單純只利用「同樣羽毛顏色的鳥飛在一起」的基本概念來推論,就有機會找出品味相近的使用者,再利用其他使用者所做的決定(例如購買決策)來做為推薦的參考。

如何在計算方式上實現?

以上就是協同過濾式推薦的基本概念,那麼落實到計算上,又該如何進行呢?透過各種系統機制設計,例如收集點擊、收藏、分享等使用者操作項目的資訊,系統就可以建立起如下列的矩陣:

 

 

上述的矩陣即為所謂的「使用者-項目矩陣(User-Item Matrix)」。矩陣的一個維度是每一個使用者,而另一個維度則是每一個項目,在矩陣中的值,即為某一使用者對另一個項目的偏好程度。在這個矩陣中,User b並未對Item 2、User c也並未對Item 3表示過任何的偏好,但是透過User a, b, c對項目偏好的相近程度,系統可以推論出User b對Item 2及User c對Item 3的偏好程度。當系統有能力評估出此值時,便能夠依據該值是否超過某一個門檻,來決定是否將Item 2推薦給User b,以及將Item 3推薦給User c。

協同過濾式的推薦方法常見可分為兩類,一類稱為「以使用者為基礎(User-Based)」,而另一類則稱為「以項目為基礎(Item-Based)」。

「以使用者為基礎」的方法,基本上便是從使用者-項目矩陣中的資料,套用不同的相似度計算方法(例如Person Correlation Coefficient或是Cosine-based Similarity)計算出一組和某使用者足夠相近的使用者。

決定這一組相鄰使用者的數量,可以用相近程度的門檻值,也可以是一個固定的數量。計算出來之後,這一組使用者便是所謂「相同羽毛顏色的鳥」,找到這組使用者,便可以依據這群使用者中對某一待推薦項目的偏好程度,來推論此使用者對此一待推薦項目的偏好程度,進而判斷是否應將此項目推薦給此使用者。

而「以項目為基礎」的方法,則是利用相同的矩陣資料,只是它找的並不是相近的使用者,而是找出相近的項目集合。它的基本假設就是如果使用者喜歡某一些項目,那麼對於和這些項目相像的項目,該使用者也喜歡的機會就會很高。所以,在「以項目為基礎」的方法中,反而是以項目被那些使用者所喜歡的情況,來決定項目間的相似程度。當有一個待推薦項目時,便可以找出喜歡好和它相似之項目集合的使用者,進一步進行推薦。

這兩類的計算方法都屬於協同過濾式推薦,不過各有其優缺點。

一般認為,「以使用者為基礎」的方法計算精確度高,但是計算複雜度卻高,使用者之間的相似度變化也較不穩度。相反的,「以項目為基礎」的方法計算精確度較低,但計算速度快,而且項目之間的相似度變化也相對穩定。也有研究指出,雖然「以項目為基礎」的計算方法精確度較低,但整體來說,並不會遜色太多,反倒是計算速度快在現實的應用中,面對大量的資料量,顯得更為合適。

協同過濾式的推薦方法,現今也是一個十分重要的推薦技術,基本上是透過群體的力量來發掘隱藏在使用者和系統互動過程中的使用者偏好。有些時候,這些偏好是很隱性的,即使是使用者自身或許也未能主動陳述,但透過計算方法的分析,卻能夠找出使用者可能感興趣的項目。

在許多實際上運作的大型系統中,都可以看到運用協同過濾式推薦方法的痕跡。現實的系統很多都是混用多種推薦技術,但無疑地,協同過濾式推薦幾乎都是不可或缺的一環。

 

專欄作者

熱門新聞

Advertisement