當前位置:首頁 » 操作系統 » 推薦演算法的改進

推薦演算法的改進

發布時間: 2023-01-29 00:00:06

『壹』 如何改進SVM演算法,最好是自己的改進方法,別引用那些前人改進的演算法

樓主對於這種問題的答案完全可以上SCI了,知道答案的人都在寫論文中,所以我可以給幾個改進方向給你提示一下:
1 SVM是分類器對於它的准確性還有過擬合性都有很成熟的改進,所以採用數學方法來改進感覺很難了,但是它的應用很廣泛 SVMRank貌似就是netflix電影推薦系統的核心演算法,你可以了解下
2 與其他演算法的聯合,boosting是一種集成演算法,你可以考慮SVM作為一種弱學習器在其框架中提升學習的准確率
SVM的本身演算法真有好的改進完全可以在最高等級雜志上發論文,我上面說的兩個方面雖然很簡單但如果你有實驗數據證明,在國內發表核心期刊完全沒問題,本人也在論文糾結中。。

『貳』 如何算改進了一個演算法,怎麼改才叫改進了呢

我認為,所謂「改進」就是使發現原演算法的不足之處,並優化之,結果是使該演算法效率大大提高高,或者適用度更廣泛,如果「改進」後的演算法不比之前的更優,就不能算改進。反之,只要能夠大大提高改演算法的效率,或者使該演算法適用度更廣,就算是改進。至於改進一個細節,如果是一個重要的細節,當然也算是改進。
不過,演算法都是高手發明的,他們在公布之前一定將這種演算法優化過了,如果要再改進,那一定要非常細心或者比他更高才行。

『叄』 對演算法的改進,改進多少才行才算合理

我也是這個建議。
1.在空間可以承受的情況下考慮改進時間效率。大的演算法的話可以對其中的部分演算法進行替換。
2.如果時間效率己達理論下限,可以進行空間效率的改進,包括實現的數據結構等等。
3.如果要求實現演算法的話,針對代碼的改進餘量不小。僅僅從語言本身考慮就有很大的優化空間。例如關鍵演算法用ASM宏實現,數據結構的組新組織(涉及CPU取數時的對齊問題),演算法的函數組織等等。

對一個成熟演算法的任何一方面進行改進都是了不起的工作。

『肆』 第十章 數據推薦演算法——推薦演算法與效果評價

不同應用場景中推薦演算法的評估方式不一定相同,主要集中在五個方面:

1、准確率、召回率及覆蓋率評價

2、流行度與多樣性評價

3、推薦結果序列評價

4、新穎性與創新評價

5、用戶滿意度

對於推薦演算法,很多企業也在不斷地通過用戶畫像的方式刻畫用戶特徵,從而不斷改進推薦系統。通過用戶畫像的方式可以有效地解決如下三個方面的問題:

1、通過各個渠道繪制用戶畫像,可以較好地解決冷啟動問題。

2、通過用戶畫像可以豐富完整的用戶特徵信息,為更廣泛的推薦提供信息基礎。

3、構建更加豐富完整的用戶特徵信息,為更廣泛的推薦提供信息基礎。

推薦演算法與關聯規則分析在某種程度上相似,都利用了大眾用戶的行為記錄,關聯性規則分析也可以用於輔助推薦,它們之間的差異:

1、推薦演算法尤其是協同過濾推薦是基於一種間接性的推薦;而關聯規則分析則是對直接性的分析。

2、推薦演算法的推薦過程比較復雜,不僅與物品本身屬性有關,還與個人的喜好興趣有很大關系;而關聯規則分析過程與個人的喜好或者興趣無關,更多地傾向於基於大眾用戶的行為分析物品之間的潛在關系。

『伍』 3-27 抖音推薦頁、同城頁、關注頁演算法

上次跟二表哥聊完,感覺還有很多東西沒有聊透徹。

比如抖音的推薦系統是如何工作的,他背後的演算法是什麼,為什麼要採用這些演算法。

帶著歇著疑問,我又抓到了二表哥,問出了這些問題。

二表哥笑著說,因為抖音是一個擁有大量用戶和創作者的平台,每分鍾有上千個視頻,被上傳到抖音上,用戶不可能觀看完每一個抖音視頻,所以抖音需要一個復雜的推薦演算法,讓用戶能從海量的內容當中,挑選到他最喜歡的視頻,簡單來說這個演算法,會從抖音所有的視頻當中挑選出用戶可能最喜歡的那一個。

我說,那抖音演算法是如何知道每個人的喜好呢?

二表哥說,其實答案很簡單也很抽象,就是利用數據,抖音會用盡可能多的數據,來發現用戶喜歡什麼樣的視頻,比如視頻本身信息。

我說,你還是別簡單抽象了,說點具體的。

他說,你可以先試試覺得有哪些?

我說,我知道肯定包括標題,內容,以及點贊評論,可能還會有視頻發布之後,其他用戶與這個視頻的交互歷史,以及觀看多長時間等。

他說,已經很全了,除此之外,也會參考這個用戶歷史上看過的視頻信息,用戶與看過視頻之間的交互,比如是否有點贊評論或分享等行為。

我說,那麼如何讓推薦演算法推薦我的視頻呢?

他說,答案也比較簡單,讓用戶喜歡你的視頻推薦演算法的目標是讓觀眾看到自己喜歡的視頻,盡可能准確預測用戶的喜好,所以觀眾如果喜歡你的視頻,我們就會盡量把你的視頻推薦給喜歡你的觀眾,

另外推薦演算法不是一成不變的,抖音也在持續改進和優化我們的推薦演算法,

一方面利用更豐富的信息來理解視頻和觀眾,

另一方面也會與時俱進,讓演算法能夠更准確的反映用戶的真實喜好。

我說,你根據不同的場景來詳細介紹一下推薦系統是如何工作的吧。

他說,抖音主要由三個頁面,一個是關注頁面,一個是推薦頁,一個是同城頁,我可以分享分享這個三個場景下的視頻推薦的大概邏輯。

他接著說,一般大家看的推薦頁居多,可以先說說抖音的推薦頁是如何工作的。

一般推薦頁作為抖音的首頁,是大部分用戶進入痘印後見到的第1個頁面,他的目的是從抖音所有上傳的視頻中選擇用戶可能喜歡的內容。

這其中,既包括新鮮發布的內容,也包括和這個人口味相近,其他人喜歡的內容,以及他關注的內容等。

我說,是不是我的賬號就算是被用戶關注了,也不一定在這個推薦頁出現?這個頁面的視頻是不是全部都是由推薦演算法決定?

他說,是的,這個頁面的視頻,完全由推薦演算法決定,跟是否關注沒有關系。

推薦演算法會考慮多方面的信息,來判斷用戶是否喜歡一個視頻。這其中包含視頻本身的點贊率、評論率、觀看時長因素,也包含和這該用戶相似的其他用戶對這個視頻的喜愛程度,以及用戶的觀看歷史、搜索歷史和視頻的創作者是否有比較高的粉絲粘性等。

我說,說了這么多,如何在推薦頁獲得更多的觀看呢?

他說,直接說吧,我有四個建議,我剛好還有個夕會要開,我先簡單發給你一個小文檔吧,你先看看。

過了一會兒,我打開了二表哥的對話框,看到了這幾個建議:

第一,養成良好的發布習慣,持續穩定的發布作品,持續穩定的發布作品,有助於推薦演算法更全面了解你的潛在觀眾維系和粉絲的關系。

第二,創作高質量的作品,讓觀眾持續喜歡你的內容,比如吸引更多的點贊評論分享,以及獲得更多的觀看時長。

第三,形成自己獨特的創作風格,讓自己的作品更有粉絲粘性。

第四,通過閱讀評論等方式來了解用戶反饋,持續改進自己的內容

我一邊看一邊回憶剛剛二表哥講過的東西,順便記錄下來。

等到二表哥開完夕會,七表妹也跟著他一起過來了。

七表妹說,最近我發現用戶在抖音裡面搜索視頻的量也挺大的,而且我認為搜索是用戶主動尋找信息的,他對搜索到視頻有很好的認識和粘性,二表哥你了解抖音的搜索演算法嗎

二表哥說,抖音有大量的視頻,用戶對自己的需求雖然清晰,但是表達的方法是非常模糊的,這個跟傳統的搜索引擎一樣。

所以抖音的搜索演算法一方面要了解視頻的內容是什麼,另一方面還要想辦法去理解用戶的需求。

七表妹說,意思抖音就是二者之間的橋梁,來完成用戶和視頻的匹配。那他是怎麼來完成這個橋梁的作用的呢?

二表哥說,主要是通過數據,有三類。

第一、視頻本身的數據,包括視頻上一切可見的文字,視頻本身的清晰度,視頻的內容等。

第二、用戶輸入的查詢詞,搜索會利用最先進的,自然語言處理技術,來處理用戶輸入的查詢詞,理解用戶的需求,

第三、用戶和視頻的互動數據,包括在推薦、搜索等各個渠道的互動數據,

七表妹說,那麼如何讓視頻在推薦演算法上,獲得比較好的排名呢?

二表哥說,兩點:第一創造好的視頻,第二給視頻加上精準的文字描述,便於搜索演算法理解視頻,另外,搜索演算法不是一成不變的,我們的目標是不停地改進用戶的搜索體驗。

圍繞這個目標,抖音同樣也會做兩件事,一方面加強搜索技術的研發和應用,另一方面也會加強各種作弊行為的識別和打壓。

我說,演算法說的夠多了,剛剛咱們聊到一半,只說了推薦頁的演算法規則,還有兩個頁面同城頁和關注頁的大概演算法是什麼呢?

二表哥說,關注頁是一個可以集中看到用戶關注的創作者發布視頻的頁面,是用戶通過關注行為定製的一個內容流,

我說,那很容易想到的一個點就是,想要在關注頁獲取更多的觀看,就是獲取更多的粉絲,這樣我們的作品就可以有更多的機會在關注頁展示了。那怎麼能夠獲取更多的粉絲呢?

他說,這個問題就很大了,簡單2個建議吧,

第一,真誠的告訴你的觀眾,關注你能給他們帶來什麼,以及你的更新時間等等。

第二,持續為你的粉絲創作他們喜歡的內容,提高粉絲粘性,粉絲粘性越高的作者,越容易獲得新的關注,今天的課程就到這里。

我說,還有什麼要注意的點嗎?我感覺我有個一百多萬粉絲的賬號,好多視頻的播放量只有幾萬,甚至更低,感覺也不對呀。

他說,這個現象好多人也發現了,一個用戶可以關注很多創作者,所以不一定所有關注人的內容都可以被觀看完。

我說,你的意思是關注頁也是根據每個人的喜好排序的,是個性化的。

他說,對的,如果想要在關注頁獲的更多的觀看,也是要有優質的內容才行的。

我說,那獲取粉絲也沒太大用處了,還是要打造爆款內容才是正道了。

他說,不僅僅是關注頁和推薦頁,包括同城頁是一樣由推薦演算法來決定的,只不過和推薦頁不同的是,同城的觀眾群體是對同城信息更感興趣的用戶。

我說,同城人更關注本地新聞,美食,玩樂方面的信息內容。

他說,對,同城的內容更多的是因為頁面、標題來被推薦,所以同城頁的視頻選擇一個有意義的封面和標題更重要。

七表妹說,好了好了,下班了還說工作,煩死了。剛好我今天刷同城刷到了一個網紅店,我剛訂了位置,我們一起去嘗嘗吧。

『陸』 針對kmeans演算法的缺點可以做哪些方面的改進

一些可以改進的方麵包括:

  • 初始化點的選擇:可以使用更加有效的方法來選擇初始聚類中心,以避免初始聚類中心的選擇對結果的影響。

  • 相異度度量方法:kmeans演算法使用歐幾里得距離作為相異度度量方法,但可以使用更加適合某些應用場景的其他相異度度量方法,如餘弦相似度、皮爾遜相關系數等。

  • 處理異常值:kmeans演算法可能對異常值敏感,可以使用一些方法來降低對異常值的影響。

  • 聚類數量的確定:kmeans演算法需要提前確定聚類數量,可以使用一些方法來確定合適的聚類數量,如肘部法則、輪廓系數等。

  • 並行化:kmeans演算法是一種計算密集型演算法,可以使用並行化技術加速計算。

『柒』 07_推薦系統演算法詳解

     基於人口統計學的推薦與用戶畫像、基於內容的推薦、基於協同過濾的推薦。

1、基於人口統計學的推薦機制( Demographic-based Recommendation)是一種最易於實現的推薦方法,它只是簡單的根據系統用戶的基本信息發現用戶的相關程度,然後將相似用戶喜愛的其他物品推薦給當前用戶。

2、對於沒有明確含義的用戶信息(比如登錄時間、地域等上下文信息),可以通過聚類等手段,給用戶打上分類標簽。

3、對於特定標簽的用戶,又可以根據預設的規則(知識)或者模型,推薦出對應的物品。

4、用戶信息標簽化的過程一般又稱為 用戶畫像 ( User Profiling)。

(1)用戶畫像( User Profile)就是企業通過收集與分析消費者社會屬性、生活習慣、消費行為等主要信息的數據之後,完美地抽象出一個用戶的商業全貌作是企業應用大數據技術的基本方式。

(2)用戶畫像為企業提供了足夠的信息基礎,能夠幫助企業快速找到精準用戶群體以及用戶需求等更為廣泛的反饋信息。

(3)作為大數據的根基,它完美地抽象出一個用戶的信息全貌,為進一步精準、快速地分析用戶行為習慣、消費習慣等重要信息,提供了足夠的數據基礎。

1、 Content- based Recommendations(CB)根據推薦物品或內容的元數據,發現物品的相關性,再基於用戶過去的喜好記錄,為用戶推薦相似的物品。

2、通過抽取物品內在或者外在的特徵值,實現相似度計算。比如一個電影,有導演、演員、用戶標簽UGC、用戶評論、時長、風格等等,都可以算是特徵。

3、將用戶(user)個人信息的特徵(基於喜好記錄或是預設興趣標簽),和物品(item)的特徵相匹配,就能得到用戶對物品感興趣的程度。在一些電影、音樂、圖書的社交網站有很成功的應用,有些網站還請專業的人員對物品進行基因編碼/打標簽(PGC)。

4、 相似度計算:

5、對於物品的特徵提取——打標簽(tag)

        - 專家標簽(PGC)

        - 用戶自定義標簽(UGC)

        - 降維分析數據,提取隱語義標簽(LFM)

     對於文本信息的特徵提取——關鍵詞

        - 分詞、語義處理和情感分析(NLP)

        - 潛在語義分析(LSA)

6、 基於內容推薦系統的高層次結構

7、 特徵工程

(1)特徵( feature):數據中抽取出來的對結果預測有用的信息。

         特徵的個數就是數據的觀測維度。

         特徵工程是使用專業背景知識和技巧處理數據,使得特徵能在機器學習演算法上發揮更好的作用的過程。

         特徵工程一般包括特徵清洗(采樣、清洗異常樣本),特徵處理和特徵選擇。

         特徵按照不同的數據類型分類,有不同的特徵處理方法:數值型、類別型、時間型、統計型。

(2)數值型特徵處理

        用連續數值表示當前維度特徵,通常會對數值型特徵進行數學上的處理,主要的做法是歸一化和離散化。

        * 幅度調整歸一化:

            特徵與特徵之間應該是平等的,區別應該體現在 特徵內部 。

            例如房屋價格和住房面積的幅度是不同的,房屋價格可能在3000000~15000000(萬)之間,而住房面積在40-300(平方米)之間,那麼明明是平等的兩個特徵,輸入到相同的模型中後由於本身的幅值不同導致產生的效果不同,這是不合理的

                        

        * 數值型特徵處理——離散化

        離散化的兩種方式:等步長——簡單但不一定有效;等頻——min -> 25% -> 75% -> max

        兩種方法對比:

            等頻的離散化方法很精準,但需要每次都對數據分布進行一遍從新計算,因為昨天用戶在淘寶上買東西的價格分布和今天不一定相同,因此昨天做等頻的切分點可能並不適用,而線上最需要避免的就是不固定,需要現場計算,所以昨天訓練出的模型今天不一定能使用。

            等頻不固定,但很精準,等步長是固定的,非常簡單,因此兩者在工業上都有應用。

(3) 類別型特徵處理

        類別型數據本身沒有大小關系,需要將它們編碼為數字,但它們之間不能有預先設定的大小關系,因此既要做到公平,又要區分開它們,那麼直接開辟多個空間。

        One-Hot編碼/啞變數:One-Hot編碼/啞變數所做的就是將類別型數據平行地展開,也就是說,經過One-Hot編碼啞變數後,這個特徵的空間會膨脹。

(4) 時間型特徵處理

        時間型特徵既可以做連續值,又可以看做離散值。

        連續值:持續時間(網頁瀏覽時長);間隔時間(上一次購買/點擊離現在的時間間隔)。

        離散值:一天中哪個時間段;一周中的星期幾;一年中哪個月/星期;工作日/周末。

(5) 統計型特徵處理

        加減平均:商品價格高於平均價格多少,用戶在某個品類下消費超過多少。

        分位線:商品屬於售出商品價格的分位線處。

        次序性:商品處於熱門商品第幾位。

        比例類:電商中商品的好/中/差評比例。

8、 推薦系統常見反饋數據 :

9、 基於UGC的推薦

     用戶用標簽來描述對物品的看法,所以用戶生成標簽(UGC)是聯系用戶和物品的紐帶,也是反應用戶興趣的重要數據源。

    一個用戶標簽行為的數據集一般由一個三元組(用戶,物品,標簽)的集合表示,其中一條記錄(u,i,b)表示用戶u給物品打上了標簽b。

    一個最簡單的演算法:

        - 統計每個用戶最常用的標簽

        - 對於每個標簽,統計被打過這個標簽次數最多的物品

        - 對於一個用戶,首先找到他常用的標簽,然後找到具有這些標簽的最熱門的物品,推薦給他

        - 所以用戶u對物品i的興趣公式為 ,其中 使用戶u打過標簽b的次數, 是物品i被打過標簽b的次數。

    簡單演算法中直接將用戶打出標簽的次數和物品得到的標簽次數相乘,可以簡單地表現出用戶對物品某個特徵的興趣。

    這種方法傾向於給熱門標簽(誰都會給的標簽,如「大片」、「搞笑」等)、熱門物品(打標簽人數最多)比較大的權重,如果一個熱門物品同時對應著熱門標簽,那它就會「霸榜」,推薦的個性化、新穎度就會降低。

    類似的問題,出現在新聞內容的關鍵字提取中。比如以下新聞中,哪個關鍵字應該獲得更高的權重?

10、 TF-IDF:詞頻逆文檔頻率 ( Term Frequency- -Inverse Document Frequency,TF-DF)是一種用於資訊檢索與文本挖掘的常用加權技術。

        TFDF是一種統計方法,用以評估一個字詞對於一個文件集或一個語料庫中的其中份文件的重要程度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。

                    TFIDF=TF IDF

         TF-IDF的主要思想是 :如果某個詞或短語在一篇文章中出現的頻率TF高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來分類。

        TF-DF加權的各種形式常被搜索引擎應用,作為文件與用戶查詢之間相關程度的度量或評級。

         詞頻( Term Frequency,TF) :指的是某一個給定的詞語在該文件中出現的頻率。這個數字是對詞數的歸一化,以防止偏向更長的文件。(同一個詞語在長文件里可能會比短文件有更高的詞數,而不管該詞語重要與否。) ,其中 表示詞語 i 在文檔 j 中出現的頻率, 表示 i 在 j 中出現的次數, 表示文檔 j 的總詞數。

         逆向文件頻率( Inverse Document Frequency,IDF) :是一個詞語普遍重要性的度量,某一特定詞語的IDF,可以由總文檔數目除以包含該詞語之文檔的數目,再將得到的商取對數得到 ,其中 表示詞語 i 在文檔集中的逆文檔頻率,N表示文檔集中的文檔總數, 表示文檔集中包含了詞語 i 的文檔數。

(11) TF-IDF對基於UGC推薦的改進 : ,為了避免熱門標簽和熱門物品獲得更多的權重,我們需要對「熱門進行懲罰。

          借鑒TF-IDF的思想,以一個物品的所有標簽作為「文檔」,標簽作為「詞語」,從而計算標簽的「詞頻」(在物品所有標簽中的頻率)和「逆文檔頻率」(在其它物品標簽中普遍出現的頻率)。

           由於「物品i的所有標簽」 應該對標簽權重沒有影響,而 「所有標簽總數」 N 對於所有標簽是一定的,所以這兩項可以略去。在簡單演算法的基礎上,直接加入對熱門標簽和熱門物品的懲罰項: ,其中, 記錄了標簽 b 被多少個不同的用戶使用過, 記錄了物品 i 被多少個不同的用戶打過標簽。

(一)協同過濾(Collaborative Filtering, CF)

1、基於協同過濾(CF)的推薦:基於內容( Content based,CB)主要利用的是用戶評價過的物品的內容特徵,而CF方法還可以利用其他用戶評分過的物品內容。

    CF可以解決CB的一些局限:

         - 物品內容不完全或者難以獲得時,依然可以通過其他用戶的反饋給出推薦。

        - CF基於用戶之間對物品的評價質量,避免了CB僅依賴內容可能造成的對物品質量判斷的干。

        - CF推薦不受內容限制,只要其他類似用戶給出了對不同物品的興趣,CF就可以給用戶推薦出內容差異很大的物品(但有某種內在聯系)

    分為兩類:基於近鄰和基於模型。

2、基於近鄰的推薦系統:根據的是相同「口碑」准則。是否應該給Cary推薦《泰坦尼克號》?

(二)基於近鄰的協同過濾

1、 基於用戶(User-CF): 基於用戶的協同過濾推薦的基本原理是,根據所有用戶對物品的偏好,發現與當前用戶口味和偏好相似的「鄰居」用戶群,並推薦近鄰所偏好的物品。

     在一般的應用中是採用計算「K-近鄰」的演算法;基於這K個鄰居的歷史偏好信息,為當前用戶進行推薦。

    User-CF和基於人口統計學的推薦機制:

        - 兩者都是計算用戶的相似度,並基於相似的「鄰居」用戶群計算推薦。

        - 它們所不同的是如何計算用戶的相似度:基於人口統計學的機制只考慮用戶本身的特徵,而基於用戶的協同過濾機制可是在用戶的歷史偏好的數據上計算用戶的相似度,它的基本假設是,喜歡類似物品的用戶可能有相同或者相似的口味和偏好。

2、基於物品(Item-CF):基於項目的協同過濾推薦的基本原理與基於用戶的類似,只是使用所有用戶對物品的偏好,發現物品和物品之間的相似度,然後根據用戶的歷史偏好信息,將類似的物品推薦給用戶。

    Item-CF和基於內容(CB)的推薦

       - 其實都是基於物品相似度預測推薦,只是相似度計算的方法不一樣,前者是從用戶歷史的偏好推斷,而後者是基於物品本身的屬性特徵信息。

   同樣是協同過濾,在基於用戶和基於項目兩個策略中應該如何選擇呢?

        - 電商、電影、音樂網站,用戶數量遠大於物品數量。

        - 新聞網站,物品(新聞文本)數量可能大於用戶數量。

3、 User-CF和Item-CF的比較

     同樣是協同過濾,在User-CF和ltem-CF兩個策略中應該如何選擇呢?

     Item-CF應用場景

       -  基於物品的協同過濾( Item-CF ) 推薦機制是 Amazon在基於用戶的機制上改良的一種策略因為在大部分的Web站點中,物品的個數是遠遠小於用戶的數量的,而且物品的個數和相似度相對比較穩定,同時基於物品的機制比基於用戶的實時性更好一些,所以 Item-CF 成為了目前推薦策略的主流。

     User-CF應用場景

        - 設想一下在一些新聞推薦系統中,也許物品一一也就是新聞的個數可能大於用戶的個數,而且新聞的更新程度也有很快,所以它的相似度依然不穩定,這時用 User-cf可能效果更好。

    所以,推薦策略的選擇其實和具體的應用場景有很大的關系。

4、 基於協同過濾的推薦優缺點

 (1)基於協同過濾的推薦機制的優點:

        它不需要對物品或者用戶進行嚴格的建模,而且不要求對物品特徵的描述是機器可理解的,所以這種方法也是領域無關的。

       這種方法計算出來的推薦是開放的,可以共用他人的經驗,很好的支持用戶發現潛在的興趣偏好。

(2)存在的問題

        方法的核心是基於歷史數據,所以對新物品和新用戶都有「冷啟動」的問題。

        推薦的效果依賴於用戶歷史好數據的多少和准確性。

        在大部分的實現中,用戶歷史偏好是用稀疏矩陣進行存儲的,而稀疏矩陣上的計算有些明顯的問題,包括可能少部分人的錯誤偏好會對推薦的准確度有很大的影響等等。

        對於一些特殊品味的用戶不能給予很好的推薦。

(三)基於模型的協同過濾

1、基本思想

(1)用戶具有一定的特徵,決定著他的偏好選擇

(2)物品具有一定的特徵,影響著用戶需是否選擇它。

(3)用戶之所以選擇某一個商品,是因為用戶特徵與物品特徵相互匹配。

    基於這種思想,模型的建立相當於從行為數據中提取特徵,給用戶和物品同時打上「標簽」;這和基於人口統計學的用戶標簽、基於內容方法的物品標簽本質是一樣的,都是特徵的提取和匹配。

    有顯性特徵時(比如用戶標簽、物品分類標簽)我們可以直接匹配做出推薦;沒有時,可以根據已有的偏好數據,去發據出隱藏的特徵,這需要用到隱語義模型(LFM)。

2、基於模型的協同過濾推薦,就是基於樣本的用戶偏好信息,訓練一個推薦模型,然後根據實時的用戶喜好的信息進行預測新物品的得分,計算推薦

    基於近鄰的推薦和基於模型的推薦

        - 基於近鄰的推薦是在預測時直接使用已有的用戶偏好數據,通過近鄰數據來預測對新物品的偏好(類似分類)

        - 而基於模型的方法,是要使用這些偏好數據來訓練模型,找到內在規律,再用模型來做預測(類似回歸)

    訓練模型時,可以基於標簽內容來提取物品特徵,也可以讓模型去發據物品的潛在特徵;這樣的模型被稱為 隱語義模型 ( Latent Factor Model,LFM)。

(1)隱語義模型(LFM):用隱語義模型來進行協同過濾的目標:

            - 揭示隱藏的特徵,這些特徵能夠解釋為什麼給出對應的預測評分

            - 這類特徵可能是無法直接用語言解釋描述的,事實上我們並不需要知道,類似「玄學」

        通過矩陣分解進行降維分析

            - 協同過濾演算法非常依賴歷史數據,而一般的推薦系統中,偏好數據又往往是稀疏的;這就需要對原始數據做降維處理。

            - 分解之後的矩陣,就代表了用戶和物品的隱藏特徵

        隱語義模型的實例:基於概率的隱語義分析(pLSA)、隱式迪利克雷分布模型(LDA)、矩陣因子分解模型(基於奇異值分解的模型,SVD)

(2)LFM降維方法——矩陣因子分解

(3)LFM的進一步理解

    我們可以認為,用戶之所以給電影打出這樣的分數,是有內在原因的,我們可以挖掘出影響用戶打分的隱藏因素,進而根據未評分電影與這些隱藏因素的關聯度,決定此未評分電影的預測評分。

    應該有一些隱藏的因素,影響用戶的打分,比如電影:演員、題材、年代…甚至不定是人直接可以理解的隱藏因子。

    找到隱藏因子,可以對user和Iiem進行關聯(找到是由於什麼使得user喜歡/不喜歡此Item,什麼會決定user喜歡/不喜歡此item),就可以推測用戶是否會喜歡某一部未看過的電影。

(4)矩陣因子分解

(5)模型的求解——損失函數

(6)模型的求解演算法——ALS

    現在,矩陣因子分解的問題已經轉化成了一個標準的優化問題,需要求解P、Q,使目標損失函數取最小值。

    最小化過程的求解,一般採用隨機梯度下降演算法或者交替最小二乘法來實現交替最小二乘法( Alternating Least Squares,ALS)

    ALS的思想是,由於兩個矩陣P和Q都未知,且通過矩陣乘法耦合在一起,為了使它們解耦,可以先固定Q,把P當作變數,通過損失函數最小化求出P,這就是一個經典的最小二乘問題;再反過來固定求得的P,把Q當作變數,求解出Q:如此交替執行,直到誤差滿足閱值條件,或者到達迭代上限。

(7)梯度下降演算法

『捌』 推薦演算法小結

輸入 :與用戶相關的包含眾多特徵(feature)的數據:

用戶的注冊信息(職業、年齡、性別等 顯信息),行為信息(使用功能、有效使用時長等 隱信息)。

輸出 :推薦給用戶的功能列表(根據得分高低排序)

函數 : 傳統演算法 、 機器學習演算法 (Machine Learning)、 深度學習演算法 (Deep Learning)

基於流行度的演算法非常簡單粗暴,類似於各大新聞、微博熱榜等,根據VV、UV、日均PV或分享率等數據來按某種熱度(加權)排序來推薦給用戶。

訪問次數 (VV):記錄1天內所有訪客訪問了該網站多少次,相同的訪客有可能多次訪問該網站,且訪問的次數累加。

獨立訪客 (UV):記錄1天內所有訪客訪問了該網站多少次,雖然相同訪客能多次訪問網站,但只計算為1個獨立訪客。

PV訪問量 (Page View):即頁面訪問量,每打開一次頁面或者刷新一次頁面,PV值+1。

優點:該演算法簡單,適用於剛注冊的新用戶

缺點:無法針對用戶提供個性化的推薦

改進:基於該演算法可做一些優化,例如加入用戶分群的流行度進行排序,通過把熱榜上的體育內容優先推薦給體育迷,把政要熱文推給熱愛談論政治的用戶。

基於用戶的協同過濾推薦演算法 (UserCF):針對目標用戶(A),先通過興趣、愛好或行為習慣找到與他相似的「其他用戶」(BCD...),然後把BCD...喜歡的並且A沒有瀏覽過的物品或功能推給A。

基於物品的協同過濾推薦演算法 (ItemCF):例如由於我之前看過張藝謀導演的《英雄》這部電影,會給我推薦《紅高粱》、《歸來》等同導演電影。

1)分析各個用戶對物品的評價,通過瀏覽記錄、購買記錄等得到用戶的隱性評分;

2)根據用戶對物品的隱性評分計算得到所有用戶之間的相似度;

3)選出與目標用戶最相似的K個用戶;

4)將這K個用戶隱性評分最高並且目標用戶又沒有瀏覽過的物品推薦給目標用戶。

優點:

基於用戶的協同過濾推薦演算法是給目標用戶推薦那些和他有共同興趣的用戶喜歡的物品,所以該演算法推薦較為社會化,即推薦的物品是與用戶興趣一致的那個群體中的熱門物品;

適於物品比用戶多、物品時效性較強的情形,否則計算慢;

能實現跨領域、驚喜度高的結果。

缺點:

在很多時候,很多用戶兩兩之間的共同評分僅有幾個,也即用戶之間的重合度並不高,同時僅有的共同打了分的物品,往往是一些很常見的物品,如票房大片、生活必需品;

用戶之間的距離可能變得很快,這種離線演算法難以瞬間更新推薦結果;   

推薦結果的個性化較弱、較寬泛。

改進:

兩個用戶對流行物品的有相似興趣,絲毫不能說明他們有相似的興趣,此時要增加懲罰力度;

如果兩個用戶同時喜歡了相同的物品,那麼可以給這兩個用戶更高的相似度;

在描述鄰居用戶的偏好時,給其最近喜歡的物品較高權重;

把類似地域用戶的行為作為推薦的主要依據。

1)分析各個用戶對物品的瀏覽記錄;

2)依據瀏覽記錄分析得出所有物品之間的相似度;

3)對於目標用戶評價高的物品,找出與之相似度最高的K個物品;

4)將這K個物品中目標用戶沒有瀏覽過的物品推薦給目標用戶

優點:

基於物品的協同過濾推薦演算法則是為目標用戶推薦那些和他之前喜歡的物品類似的物品,所以基於物品的協同過濾推薦演算法的推薦較為個性,因為推薦的物品一般都滿足目標用戶的獨特興趣。

物品之間的距離可能是根據成百上千萬的用戶的隱性評分計算得出,往往能在一段時間內保持穩定。因此,這種演算法可以預先計算距離,其在線部分能更快地生產推薦列表。

應用最廣泛,尤其以電商行業為典型。

適於用戶多、物品少的情形,否則計算慢

推薦精度高,更具個性化

傾向於推薦同類商品

缺點:

不同領域的最熱門物品之間經常具有較高的相似度。比如,基於本演算法,我們可能會給喜歡聽許嵩歌曲的同學推薦汪峰的歌曲,也就是推薦不同領域的暢銷作品,這樣的推薦結果可能並不是我們想要的。

在物品冷啟動、數據稀疏時效果不佳

推薦的多樣性不足,形成信息閉環

改進:

如果是熱門物品,很多人都喜歡,就會接近1,就會造成很多物品都和熱門物品相似,此時要增加懲罰力度;

活躍用戶對物品相似度的貢獻小於不活躍的用戶;

同一個用戶在間隔很短的時間內喜歡的兩件商品之間,可以給予更高的相似度;

在描述目標用戶偏好時,給其最近喜歡的商品較高權重;

同一個用戶在同一個地域內喜歡的兩件商品之間,可以給予更高的相似度。

(相似度計算:餘弦相似度、Jaccard系數、皮爾森相關系數等)

常見經典 ML 分類演算法:

邏輯回歸 (Logistics Regression)

支持向量機 (SVM)

隨機森林 (Random Forest)

提升類演算法 (Boosting):Adaboost、GBDT、XGboost

一般處理流程:數據處理 -> 特徵工程 -> 模型選擇 -> 交叉驗證 -> 模型選擇與模型融合

特徵清洗 :剔除不可信樣本,預設值極多的欄位不予考慮

特徵預處理 :單個特徵(歸一化,離散化,缺失值補全,數據變換),多個特徵(PCA/LDA降維,特徵選擇)

使用工具 :pandas(python開源庫)

模型選擇與模型融合 :根據交叉驗證得分選擇前幾名模型,然後進行模型融合(Bagging、Boosting、Stacking)

DL 優勢 :ML 中特徵工程是十分重要並且要根據行業經驗確定,DL 可以自己從數據中學習特徵。DL 能自動對輸入的低階特徵進行組合、變換,得到高階特徵。對於公司產品應用領域來說,用戶的注冊信息(職業、年齡、性別等 顯信息),行為信息(使用功能、有效使用時長等 隱信息)。這些就可以作為低階特徵輸入。

RNN系列 (處理文本數據)

CNN系列 (處理圖像數據)

DNN (處理一般性分類)

『玖』 推薦系統中——矩陣分解

在推薦系統中,我們經常會拿到一種數據是user—item的表格,然後對應的是每位user對每個item的評分,如下圖:

對於這個問題我們通常會選擇矩陣分解的方法來解決。

我們常見的推薦系統矩陣分解有BPR、SVD(funkSVD)、ALS、NMF、WRMF。

接下來就來看看推薦系統中常用的幾種矩陣分解的區別,主要通過公式、特點和適合哪種數據這幾個方面來講。

對於 矩陣 進行SVD分解,把矩陣 分解為:

其中 是矩陣 中較大的部分奇異值的個數,一般會遠遠的小於用戶數和物品數。如果我們要預測第 個用戶對第 個物品的評分 ,則只需要計算 即可。通過這種方法,我們可以將評分表裡面所有沒有評分的位置得到一個預測評分。通過找到最高的若干個評分對應的物品推薦給用戶。

可以看出這種方法簡單直接。但是有一個很大的問題我們忽略了,就是SVD分解要求矩陣是稠密的,也就是說矩陣的所有位置不能有空白。所以傳統的SVD實際上在推薦系統中還是比較難用的。

前面說到,傳統的SVD要求的矩陣是稠密的。那麼我們現在要解決的問題就是避開矩陣稀疏的問題。

FunkSVD是將矩陣 分解為兩個矩陣 ,這里採用了線性回歸的思想。我們的目標是讓用戶的評分和用矩陣乘積得到的評分殘差盡可能的小,也就是說,可以用均方差作為損失函數,來尋找最終的 。

對於某一個用戶評分 ,用FunkSVD分解,則對應的表示為 ,採用均方差做為損失函數,則我們期望均方差盡可能小:

在實際應用中,我們為了防止過擬合,會加入一個L2的正則化項,因此正式的FunkSVD的優化目標函數 :

其中 為正則化稀疏,需要調參。對於這個優化問題,我們一般通過梯度下降法來進行優化得到結果。

將上式分別對 求導,然後利用梯度下降法迭代, 的迭代公式如下:

還有許多基於FunkSVD的方法進行改進的,例如BiasSVD、SVD++等,這里就不細說了。

在很多推薦場景中,我們都是 基於現有的用戶和商品之間的一些數據,得到用戶對所有商品的評分,選擇高分的商品推薦給用戶 ,funkSVD演算法的做法最基本的做法,使用起來十分有效,而且模型的可擴展性也非常優秀,其基本思想也能廣泛運用於各種場景中。並且對於相似度計算方法的選擇,有多種相似度計算方法,每種都有對應優缺點,可針對不同場景使用最適合的相似度計算方法。由於funkSVD時間復雜度高,訓練速度較慢,可以使用梯度下降等機器學習相關方法來進行近似計算,以減少時間消耗。

參考: https://www.cnblogs.com/pinard/p/6351319.html

https://zhuanlan.hu.com/p/34497989

https://blog.csdn.net/syani/article/details/52297093

在有些推薦場景中,我們是為了在千萬級別的商品中推薦個位數的商品給用戶,此時,我們更關心的是用戶來說,哪些極少數商品在用戶心中有更高的優先順序,也就是排序更靠前。也就是說,我們需要一個排序演算法,這個演算法可以把每個用戶對應的所有商品按喜好排序。BPR就是這樣的一個我們需要的 排序演算法 。

在BPR演算法中,我們將任意用戶 對應的物品進行標記,如果用戶 在同時有物品 和 的時候點擊了 ,那麼我們就得到了一個三元組 ,它表示對用戶 來說, 的排序要比 靠前

BPR是基於矩陣分解的一種排序演算法,但是和funkSVD之類的演算法比,它不是做全局的評分優化,而是 針對每一個用戶自己的商品喜好分貝做排序優化 。因此在迭代優化的思路上完全不同。同時對於訓練集的要求也是不一樣的, funkSVD只需要用戶物品對應評分數據二元組做訓練集,而BPR則需要用戶對商品的喜好排序三元組做訓練集 。

參考: https://www.cnblogs.com/pinard/p/9128682.html

ALS是交替最小二乘的簡稱。在機器學習中,ALS特指使用交替最小二乘求解的一個協同推薦演算法。如:將用戶(user)對商品(item)的評分矩陣分解成2個矩陣:user對item 潛在因素的偏好矩陣(latent factor vector),item潛在因素的偏好矩陣。

假設有m個user和n個item,所以評分矩陣為R。ALS(alternating least squares)希望找到2個比較低緯度的矩陣(X和Y)來逼近這個評分矩陣R。

ALS的核心就是這樣一個假設:打分矩陣是近似低秩的。換句話說,就是一個 的打分矩陣可以由分解的兩個小矩陣 和 的乘積來近似。這就是ALS的矩陣分解方法。

為了讓X和Y相乘能逼近R,因此我們需要最小化損失函數(loss function),因此需要最小化損失函數,在此定義為平方誤差和(Mean square error, MSE)。

一般損失函數都會需要加入正則化項(Regularization item)來避免過擬合的問題,通常是用L2,所以目標函數會被修改為:

上面介紹了「最小二乘(最小平方誤差)」,但是還沒有講清楚「交替」是怎麼回事。因為X和Y都是未知的參數矩陣,因此我們需要用「交替固定參數」來對另一個參數求解。

先固定Y, 將loss function對X求偏導,使其導數等於0:

再固定X, 將loss function對Y求偏導,使其導數等於0:

然後進行迭代。

在實際應用中,由於待分解的矩陣常常是非常稀疏的,與SVD相比, ALS能有效的解決過擬合問題 。基於ALS的矩陣分解的協同過濾演算法的可擴展性也優於SVD。與隨機梯度下降的求解方式相比,一般情況下隨機梯度下降比ALS速度快;但有兩種情況ALS更優於隨機梯度下降:(1)當系統能夠並行化時,ALS的擴展性優於隨機梯度下降法。(2)ALS-WR能夠有效的處理用戶對商品的隱式反饋的數據。

但是ALS演算法是無法准確評估新加入的用戶或商品。這個問題也被稱為冷啟動問題。

參考: https://flashgene.com/archives/46364.html

https://flashgene.com/archives/52522.html

https://lumingdong.cn/recommendation-algorithm-based-on-matrix-decomposition.html#ALS

非負矩陣分解(Non-negative Matrix Factorization,NMF)演算法,即NMF是在矩陣中所有元素均為非負數約束條件之下的矩陣分解方法。NMF中要求原始的矩陣V的所有元素的均是非負的,並且矩陣V可以分解出的兩個小矩陣也是非負的,

給定一個打分矩陣R,NMF的目標是求解兩個非負秩矩陣  最小化目標函數如下:

計算 的梯度如下:

其中:

採用梯度下降的參數優化方式, 可得W以及H的更新迭代方式見下式:

在矩陣分解基礎上,加入了隱向量的非負限制。然後使用非負矩陣分解的優化演算法求解。

要用NMF做矩陣分解有一個很大的前提—— 用戶item之間的評分矩陣要求是非負並且分解出的小矩陣也要滿足非負約束 。NMF分解是對原矩陣的近似還原分解,其存在的問題和ALS相像,對於未知的評分預測相當不準確。

參考: https://flashgene.com/archives/52522.html

http://tripleday.cn/2017/01/12/sparse-nmf/

在有些場景下,雖然 沒有得到用戶具體的評分,但是能夠得到一些類似於「置信度」的信息(也稱為隱式反饋信息) ,例如用戶的游戲時長、觀看時長等數據。雖然時長信息不能直接體現用戶的喜好,但是能夠說明用戶喜歡的概率更大。在此場景下,用戶-物品記錄可以表示為一個置信度 和一個0-1指示量 (用戶-物品是否有交互),如果用戶-物品沒有交互,那麼置信度就為0。

「帶權」就是根據置信度計算每條記錄對應損失的權重,優化的目標函數如下:

權重通過置信度計算得到,可以使用 。由於未發生的交互也存在於損失函數中,因此慣用的隨機梯度下降存在性能問題,為此採用ALS來優化模型,因此訓練過程如下:

(1)更新每個用戶的向量:

(2)更新每個物品的向量:

前面除了BPR以外,我們講的演算法都是針對顯式反饋的評分矩陣的,因此當數據集只有隱式反饋時,應用上述矩陣分解直接建模會存在問題。而WRMF就可以解決隱式反饋的問題。

參考: https://sine-x.com/gorse-2/

https://flashgene.com/archives/52522.html

基於現有的用戶和商品之間的一些數據,得到用戶對所有商品的評分,選擇高分的商品推薦給用戶,可以根據以往的評分矩陣做全局的評分優化。有多種從SVD的改進演算法可選擇,如:表示biasSVD、SVD++、TimesSVD等

funkSVD可以解決矩陣稀疏的問題,但是其時間復雜度高,訓練速度較慢,可以使用梯度下降等機器學習相關方法來進行近似計算,以減少時間消耗。

ALS演算法和SVD的使用場景相似,也是基於用戶——商品評分數據得到全局用戶對商品的評分。

ALS能有效的解決過擬合問題,但是ALS演算法是無法准確評估新加入的用戶或商品。這個問題也被稱為冷啟動問題。

要用NMF做矩陣分解有一個很大的前提—— 用戶item之間的評分矩陣要求是非負並且分解出的小矩陣也要滿足非負約束 。NMF分解是對原矩陣的近似還原分解,NMF用法和SVD、ALS相似。

NMF存在的問題和ALS相像,對於未知的評分預測相當不準確。

BPR是基於矩陣分解的一種排序演算法,但是,它不是做全局的評分優化,而是 針對每一個用戶自己的商品喜好分貝做排序優化 。因此在迭代優化的思路上完全不同。 BPR需要用戶對商品的喜好排序三元組做訓練集 。

當 沒有得到用戶具體的評分,但是能夠得到一些類似於隱式反饋信息時,就可使用WRMF進行矩陣分解。

熱點內容
源碼和千鋒 發布:2025-09-17 10:58:53 瀏覽:24
memcache資料庫 發布:2025-09-17 10:23:01 瀏覽:67
安卓機如何鎖軟體 發布:2025-09-17 10:18:34 瀏覽:945
二手3系買哪個配置好 發布:2025-09-17 10:07:16 瀏覽:740
sqlserver2000xp 發布:2025-09-17 09:36:19 瀏覽:829
c9什麼時候升級安卓70 發布:2025-09-17 09:35:36 瀏覽:211
速演算法中 發布:2025-09-17 09:30:50 瀏覽:380
怎麼進網站伺服器 發布:2025-09-17 09:18:15 瀏覽:464
小火箭伺服器訂閱是什麼 發布:2025-09-17 09:01:40 瀏覽:738
c語言入門基礎 發布:2025-09-17 08:54:30 瀏覽:670