1. 優化演算法是什麼呢
優化演算法是指對演算法的有關性能進行優化,如時間復雜度、空間復雜度、正確性、健壯性。
大數據時代到來,演算法要處理數據的數量級也越來越大以及處理問題的場景千變萬化。為了增強演算法的處理問題的能力,對演算法進行優化是必不可少的。演算法優化一般是對演算法結構和收斂性進行優化。
同一問題可用不同演算法解決,而一個演算法的質量優劣將影響到演算法乃至程序的效率。演算法分析的目的在於選擇合適演算法和改進演算法。一個演算法的評價主要從時間復雜度和空間復雜度來考慮。
遺傳演算法
遺傳演算法也是受自然科學的啟發。這類演算法的運行過程是先隨機生成一組解,稱之為種群。在優化過程中的每一步,演算法會計算整個種群的成本函數,從而得到一個有關題解的排序,在對題解排序之後,一個新的種群----稱之為下一代就被創建出來了。首先,我們將當前種群中位於最頂端的題解加入其所在的新種群中,稱之為精英選拔法。新種群中的餘下部分是由修改最優解後形成的全新解組成。
常用的有兩種修改題解的方法。其中一種稱為變異,其做法是對一個既有解進行微小的、簡單的、隨機的改變;修改題解的另一種方法稱為交叉或配對,這種方法是選取最優解種的兩個解,然後將它們按某種方式進行組合。爾後,這一過程會一直重復進行,直到達到指定的迭代次數,或者連續經過數代後題解都沒有改善時停止。
2. 論淘寶搜索推薦演算法排序機制及2021年搜索的方向。
[寫在前面]淘寶搜索引擎至今反復多次,搜索順序也從最初的統計模型升級到機械學習模型,到2010年為止沒有標簽沒有基礎標簽,隨著計算能力的提高,2010年後開始挖掘用戶的基礎標簽,從3年到2013年開始使用大規模的機械學習和實時特徵
但你有沒有想過為什麼2016-2017年的兩年是各種各樣的黑搜索盛行的一年,為什麼今天幾乎消失了?
最根本的原因是從統計演算法模型到機械學習模型的轉型期。
說白了,這時不收割就沒有收割的機會。因為統計模型即將退出歷史舞台。
因此,各路大神各自擴大了統計模型演算法中的影響因素。統計演算法無論在哪裡,點擊率和坑產都很容易搜索。
那兩年成了中小賣家的狂歡盛宴,很多大神的煙火也是旺盛的。
今天推薦演算法的第三代使用後,加上疫情的影響進行了鮮明的比較,真的很感慨。
淘寶真的沒有流量了嗎?電器商務真的做不到嗎?還是大家的思維沒有改變,停留在2016-2017年的黑搜宴會上不想醒來?
2017年、2018年、2019年是淘寶推薦演算法反復最快的3年,每年的演算法升級都不同,整體上到2019年9月為止統計演算法模型的影響因素還很大,從2019年下半年開始第三代推薦演算法後,全面的真正意義進入了以機械學習模型為中心的推薦演算法時代。
各路大神也無法驗證,加上百年疫情的影響,很多大神的隱蔽布也泄露了。
基本上以統計模型為主,訓練基本上沒有聲音,典型的是坑產游戲。
如果現在還能看到的話,基本上可以判斷他不是在訓練,而是在製作印刷用紙,一定會推薦使用資源,資源是多麼安全。
刷子的生產增加真的沒有效果嗎?不是我以前的文章說:不是不行,而是從坑產的角度思考,而是從改變競爭環境的角度思考,用補充書改變競爭環境,改變場地,有新的天地,任何手段都要為商業本質服務。
正文
概述統計演算法模型時代。
統計模型時代搜索引擎的排名是最原始的排名思考,如果你的類別不錯,關鍵詞比較正確,就能得到很大的流量,當時產品需求少,只要上下架的優化就能使產品上升。
到2016年為止沒有坑產游戲嗎?黑色搜索的效果不好嗎?其實,什麼時候坑產是最核心的機密,誰來教大家,什麼時候教的最多的是類別優化,關鍵詞優化,大部分優化都圍繞關鍵詞,電器商的老人想起了你什麼時候得到關鍵詞的人得到了世界。
有人告訴我做坑產,關鍵詞找到生意也來了。什麼時候知道坑產也沒有人給你刷子,大規模的補充書也出現在黑色搜索盛行的時期。
為什麼關鍵詞者得天下?
搜索關鍵詞是用戶目前意圖最直觀的表達,也是用戶表達意圖最直接的方式。
搜索的用戶購物意圖最強,成交意願也最強,現在搜索也是轉化率最高的流量來源。
統計時代關鍵詞背後直接依賴的是類別商品,只要製作類別和關鍵詞分詞即可,哪個時代最出現的黑馬通常是類別機會、關鍵詞機會、黑科學技術機會。
最基本的是商業本質,什麼時候產品需求少,沒有很多現在的類別,自己找類別,現在想想什麼概念。
記得什麼時候類別錯了,搜索也可以來。如果你的商品點擊反饋好的話,錯誤的類別沒有什麼影響,現在試試吧
搜索類是搜索的基礎。
什麼時候能稱霸,背後有商業邏輯,用戶行為數據好就行了。
但無論如何發展檢索都離不開關鍵詞。例如,上述關鍵詞是用戶表達意圖的最直接的方法,是當前消費者的檢索行為和購買行為發生了根本性的變化。
檢索依然根據消費者的行為數據和關鍵詞來判斷需求,這就是機械學習模型時代。
機器學習模式時代-推薦搜索演算法。
現在的商品體積和消費者購物行為的豐富性,統計演算法不能滿足檢索的本質要求。
所以現在搜索引擎開始發展深度學習模式更精細的建模-推薦搜索演算法,搜索排名更智能。
在此重點討論推薦檢索演算法,
2017、2018、2019是推薦檢索演算法真正意義發展的3年,3年3個系統版本每年更換一次,很多電器商人都不知道頭腦。
推薦檢索演算法和統計演算法模型的最大區別在於,Query的處理能力和演算法有召回機制
簡單表示推薦演算法的程序:
1:對檢索關鍵詞進行分詞、重寫的處理進行類別預判
2:根據用戶信息,即用戶以前的行為數據記錄和預測的性別、年齡、購買力、店鋪喜好、品牌喜好、實時行動作等信息存檔
3:根據檢索用戶信息,根據檢索用戶以前的行為數據檢索引擎和預測的性別、年齡、購買力、店鋪喜好、品牌喜好、實時行動作為等信息存檔3:根據檢索用戶信息的檢索用戶信息
也就是說,在第一關召回階段基本上與統計模型時代的最佳化途徑相同,核心是標題分詞和類別,現在最大的區別是根據用戶信息推薦最佳化,這是標簽和正確人群標簽圖像最佳化的基本意義。
為什麼現在一直在談論標簽,談論人標簽圖像?入池實際上是為了匹配真正的消費者用戶信息,通過直通車測試來判斷人群也是為了通過性別、年齡和購買力來優化匹配真正的消費者。
召回機制:
通過構建子單元索引方式加快商品檢索,不必經歷平台上億級的所有商品。該索引是搜索引擎中的倒置索引,利用倒置索引初始篩選商品的過程是召回階段。
在這個階段,不會進行復雜的計算,主要是根據現在的搜索條件進行商品候選集的快速圈定。
之後再進行粗排和精排,計算的復雜程度越來越高,計算的商品集合逐漸減少,最後完成整個排序過程。
主要召迴路徑分為
1:語言召回
2:向量召回
這些都是商業秘密不方便的說明,有興趣的是學習我們的在線會員課程標簽重疊游戲6是基於語言和向量召回的基礎邏輯實戰落地的課程。
下一階段進入粗行列,粗行列受這些因素的影響:
粗行列作為召回後的第一個門檻,希望用戶體驗以時間低的模型快速排序和篩選商品,第一關系將過濾到不適合本次檢索詞要求的商品
為了實現這個目的,首先要明確影響粗排名得分的因素
1:類別匹配得分和文本匹配得分,
2:商品信息質量(商品發布時間、商品等級、商品等級)
3:商品組合得分
點擊得分
交易得分賣方服務商業得分
在粗排列框架下,系統粗排列演算法根據商品類別的預測得分進行得分
點擊得分交易得分
交易得分賣方服務商業得分粗排列框架下,系統粗排列的大排列
最後是精排,檢索順序的主要目標是高相關性、高個性化的正確性。
每個用戶的喜好不同,系統會根據每個用戶的Query結合用戶信息進行召回。然後通過粗排後,商品數量從萬級下降到千級。
千級商品經排後直接向用戶展示,搜索過程中商品集合的思考和具體變化如下圖
前面的召回、粗排主要解決主題相關性,通過主題相關性的限制,首先縮小商品集合和我們的在線會員課程標簽
精排階段系是真正系統推薦演算法發揮真正威力時,應根據用戶行為反饋迅速進行機械學習建模,判斷用戶真實性、准確性和可持續控制性。
為什麼現在的游戲和黑色技術暫時出現,核心是系統演算法模型機械學習模型,系統分析用戶有問題,不正確,不穩定,維持性差,可以迅速調整。
也就是說,即使發現脆弱性,研究快速有效的方法,系統也會根據你精排階段的用戶行為迅速分析學習建模,發現模型有問題,你的玩法就結束了。
猜機器學習建模的速度有多快?
想玩黑色的東西早點死去吧。
現在使用的檢索順序模型主要是
CTR模型和CVR模型,具體模型過於復雜也不需要深入,但影響這兩種模型的最基本因素是用戶行為數據
真的不能假的,假的也不能假的演算法模型越來越智能化,演算法越來越強,只有回歸商業本質才能真正解決演算法模型背後真正想解決的問題,演算法基於商業邏輯。
2021年搜索向哪個方向發生變化:
2020年電器商人和螞蟻是不平凡的一年。2020年也是螞蟻從神壇上拉下來的元年,現在螞蟻有各種各樣的黑色。
基於中小賣家的走勢無疑是阿里必須正面面對的現實。
如何讓中小賣家迴流或留在平台上,搜索該怎麼做?
檢索一定是基於三方的考慮,買方、賣方和平台本身,現在市場上又開始提倡坑產搜索邏輯,坑產妖風又開始,根據推薦搜索演算法邏輯來談這個問題。
為什麼坑產思維是不死的小強,每次危機都會跳出來。
以統計模型為中心的坑產時代是淘寶從2003年到2015年一直使用的搜索演算法模型長達13年。
同時也是淘寶和中國網分紅的野蠻生長期,統計演算法模式讓太多電商賺錢。除了
之外,十年的奴役思維已經習慣了,在電器商圈,坑產游戲一定有人相信,其他人不一定被認可。所以,我們夾著尾巴發展的原因,時間真的可以證明一切,不用多說,做自己。
習慣性思維加上特殊時期的賺錢蝴蝶效應,使許多電器商人活在歷史的長夢中。正確地說,統計演算法模型的真正廢除是在2019年下半年。
同學說坑產永遠有效,我也這么想。
永遠有效的是起爆模型坑產權重驅動和統計演算法模型中的坑產排名不同。
起爆模型的坑產要素永遠有效,這永遠不會改變。
但是,如何有效地加上這個起爆模型的坑產權重,並不像模仿購物的意圖那麼簡單。
坑產游戲在2021年絕對不行。淘寶不會把現在的演算法系統換成15年前的。
基於三方利益:
購買者體驗
賣方利益
平台的發展
搜索肯定會向高精度和高控制性發展。以標簽為中心的用戶標簽圖像仍然是影響流量精度的基本因素。
必須從標簽的角度考慮和優化種子組的圖像。
通過種子組的圖像向相似人擴展到葉類人,業界喜好人最後向相關人擴展也是擴大流量的過程渠道。
基於推薦搜索演算法邏輯:
精密排列階段演算法更強,精度更高,轉化率更高,持續穩定性更強。
基於中小賣方流通的現狀,優化精排階段並非中小賣方能夠簡單接觸。
推薦演算法從搜索排名階段出現在哪個階段?
個人判斷
一是召回階段
二是粗排階段
上述提到召回階段的演算法簡單復蓋商品為萬級,排序規則也比較簡單,中小賣方在召回階段提高精度尤為重要。
在這個萬級商品庫中,如上下架的權重上升,中小賣方有機會上升到主頁,從子單元的索引召回中尋找機會。
或者根據中小賣方的新產品和中小賣方的店鋪水平進行特別優先搜索推薦,使中小賣方的新產品在低銷售狀態下顯示,可以實現錦囊演算法。
中小賣方有機會搜索主頁,不調用用戶信息直接打開主頁的展示權可能是中小賣方最大的支持。
根據召回階段的用戶行為數據,在粗排階段以比例融入用戶信息,即標簽的影響。
在初始召回階段,類別和分詞權重,看業者主圖場景反應背後的人們反饋,用系統引導,給中小賣方真正參考的流量方向和成交方向。
誰瘋狂地印刷用紙直接關閉黑屋,理解印刷用紙優化競爭場景,從優化人群的角度出發,適當放寬處罰。
通過召回階段,得到的用戶信息會影響粗體結果。在這個階段,用戶信息的權重比例不應該太大,流量卡也不應該太死。
在各檢索順序階段用戶信息,即用戶標簽對檢索的影響權重的問題。
這個方向我的個人觀點是可能的。
3. 如何理解演算法多樣化和演算法優化之間的關系
1.演算法多樣化是「群體多樣化」
演算法多樣化不是要求每個學生都想出或都掌握兩種或多種演算法。「一個學生也許只想到了一種演算法,許多學生也許就有多種演算法,實施演算法多樣法時,教師不必將每一種演算法都挖掘出來,更不能憑教師自己的想像給學生列舉出千奇百怪、不合邏輯的演算法;教師不要生硬地套出學生的多種演算法;也不要求學生都要掌握多種演算法。」也就是說演算法多樣化是指「群體多樣化」,而不是「個體多樣化」。
2.演算法多樣化與演算法優化
有教師認為演算法優化就是跟著課本走,就是「演算法唯一化」。我們說的演算法優化有兩條標准,一是盡可能地選擇通法、通則,具有一般性,而不是適用於特殊數據的特殊演算法。二是盡可能選擇便於大多數同學接受、理解、掌握的演算法。第二條標准再具體些,又可細化為兩個方面:即算理上容易解釋,容易理解;演算法上簡捷,容易操作,容易掌握。有必要指出,這里的「優化」,不同於數學上的「最優化」,它是相對而言的,但又難以或者說不必精確刻畫的,其結果還常常不是唯一的。
演算法的優化可以是演算法多樣化的一個後繼步驟,演算法只有在優化後多樣化才有意義。新課標提倡演算法的多樣化,允許學生選擇自己喜愛的演算法,使得有些教師誤在課堂教學時,片面追求形式各異的演算法。雖說培養了學生的思維能力和創新精神,但明顯地思維難度太大,導致當堂課的教學內容不能完成。並且一些思維能力欠缺的學生腦筋轉不過來,直被說得雲里霧里,教學效果不夠理想。演算法的多樣化應是學生在探索演算法的過程中自然形成的,而不是生硬地套出多種演算法。在引導學生「群體演算法多樣化」後可以問一句:「你覺得哪種方法比較好?為什麼?」這樣,學生就在不知不覺中學會優化的方法了。
4. 閱讀以下程序,嘗試闡述如何對該演算法進行優化。(無需寫出代碼,文字說明即可)如果可以說明詳細
可以將三個for循環合並成一個,取最大的n作為循環邊界值,內部用if判斷來控制三個result的循環次數
5. 如何做好「推薦演算法」有哪些常見的錯誤需要避免
在這里share一下。
1、推薦演算法的構成
一套標準的推薦演算法,需要四個組成部分
第一:數據源,行為基礎數據的篩選;通常,推薦演算法來源於用戶行為的採集,簡單說就是行為數據越豐富,樣本覆蓋率越全面,結果越准確;如果采樣有偏差,那麼結果就會有偏差。
舉例1:游戲推薦演算法,我們之前限於采樣技術水平和處理能力,用的是登陸用戶玩過的游戲歷史,那麼推薦結果就會偏重於需要登陸的游戲。而隨著技術提升用全部用戶玩過的游戲歷史,就更全面了。
舉例2:在搜索引擎中,對關鍵詞做推薦,有兩種方案,一種是基於廣告主的競價記錄;另一種是基於網民的搜索行為;前一種專業性更強,噪音小;後一種覆蓋面廣,噪音大,各有利弊,根據業務訴求選擇。
推薦演算法,通常來源於用戶的行為記錄,比如關鍵詞推薦用用戶搜索歷史,電商推薦用用戶購物歷史,游戲推薦用玩家玩游戲的歷史,然後基於演算法給出相關度,再排序展示 ;但這不絕對,也有並非基於用戶行為記錄的推薦原理,比如基於用戶身份特徵或其他地區、網路環境等特徵,限於篇幅和常見的業務訴求,這里就不展開說明了。
行為基礎數據必要時要做一些去除噪音的工作,比如你通過日誌分析玩家游戲歷史,或用戶購物歷史,至少知道把各搜索引擎和工具的抓取痕跡過濾出去,否則結果是很難看的。
演算法很多種,網上可以搜到很多,就算搜不到,或者搜到了看不懂,自己編也不難的(我就編過,效果自以為還不錯,但是的確不如人家專業的演算法效果好,所以適合練手,不適合出去吹牛)
不同演算法差異還是蠻大的,需要理解一下業務訴求和目標特徵來選擇。這個我真心不是高手,我們同事講的演算法我都沒能理解,就不多說了。微博上的「張棟_機器學習"和"梁斌penny"都是演算法高手,大家可以多關心他們的微博。
第三:參數!
絕對不要認為用到了好的演算法就可以了!演算法往往會基於一些參數來調優,這些參數哪裡來?很不好意思的告訴你,大部分是拍腦袋出來的。但是你拍腦袋出來後,要知道去分析結果,去看哪裡對,哪裡錯,哪裡可以改,好的演算法可以自動調優,機器學習,不斷自動調整參數達到最優,但是通常可能需要你不斷手工去看,去看badcase,想想是什麼參數因素導致的,改一下是否變好?是否引入新的bad case?
第四:校驗!
校驗一種是人工做盲測,A演算法,B演算法的結果混淆,選案例集,看哪個效果好;或A參數、B參數混淆,同理測試。通過盲測選擇認為更合理的演算法、更適宜的參數.
以上是個人認為,做好推薦演算法的步驟
下面說一下常見問題
1、以為有了演算法就ok了,不對參數優化,不做後續的校驗和數據跟蹤,效果不好就說演算法有問題,這種基本屬於工作態度的問題了。
2、對樣本數據的篩選有問題,或缺乏必要的噪音篩查,導致結果噪音多。比如你有個推廣位天天擺著,導致用戶點擊多,然後導致後台行為數據里它和誰的關聯都高,然後不管用戶到哪裡都推薦這個玩意,這就是沒有足夠篩查。
3、熱度影響
我說一下最簡單的推薦演算法
同時選擇了A和B的人數作為A與B的關聯度。
這個實現最簡單,也最容易理解,但是很容易受熱度影響
我曾經注意過某個熱門圖書電商網站,推薦的關聯書籍一水的熱門書籍,就是這個問題。
這些是非常簡單但是又非常容易出現的,關聯誤區。
4、過於求全
現在也遇到一些朋友,一提到推薦演算法或者推薦系統,就說我這個要考慮,那個要考慮,不管是行為記錄,還是用戶特徵,以至於各種節日效應,等等等等,想通過一個推薦系統完全搞定,目標很大,所以動作就極慢,構思洋洋灑灑做了很多,實現起來無從下手,或者難以寸進;我覺得,還是量力而行,從最容易下手的地方開始,先做到比沒有強,然後根據不斷地數據校驗跟蹤,逐漸加入其他考慮因素,步步前進,而不要一上來就定一個宏偉的龐大的目標;此外要考慮實現成本和開發周期,對於大部分技術實力沒有網路,騰訊,淘寶那麼強的公司而言,先把簡單的東西搞好,已經足夠有效了,然後在運營數據的基礎上逐次推進,會越來越好;有些公司是被自己宏大的目標搞的焦頭爛額,最後說,哎,沒牛人搞不定啊。嗯,反正他們的目標,我顯著是搞不定的。就這些,希望有所幫助
6. 矩陣分解在協同過濾推薦演算法中的應用
矩陣分解在協同過濾推薦演算法中的應用
推薦系統是當下越來越熱的一個研究問題,無論在學術界還是在工業界都有很多優秀的人才參與其中。近幾年舉辦的推薦系統比賽更是一次又一次地把推薦系統的研究推向了高潮,比如幾年前的Neflix百萬大獎賽,KDD CUP 2011的音樂推薦比賽,去年的網路電影推薦競賽,還有最近的阿里巴巴大數據競賽。這些比賽對推薦系統的發展都起到了很大的推動作用,使我們有機會接觸到真實的工業界數據。我們利用這些數據可以更好地學習掌握推薦系統,這些數據網上很多,大家可以到網上下載。
推薦系統在工業領域中取得了巨大的成功,尤其是在電子商務中。很多電子商務網站利用推薦系統來提高銷售收入,推薦系統為Amazon網站每年帶來30%的銷售收入。推薦系統在不同網站上應用的方式不同,這個不是本文的重點,如果感興趣可以閱讀《推薦系統實踐》(人民郵電出版社,項亮)第一章內容。下面進入主題。
為了方便介紹,假設推薦系統中有用戶集合有6個用戶,即U={u1,u2,u3,u4,u5,u6},項目(物品)集合有7個項目,即V={v1,v2,v3,v4,v5,v6,v7},用戶對項目的評分結合為R,用戶對項目的評分范圍是[0, 5]。R具體表示如下:
推薦系統的目標就是預測出符號「?」對應位置的分值。推薦系統基於這樣一個假設:用戶對項目的打分越高,表明用戶越喜歡。因此,預測出用戶對未評分項目的評分後,根據分值大小排序,把分值高的項目推薦給用戶。怎麼預測這些評分呢,方法大體上可以分為基於內容的推薦、協同過濾推薦和混合推薦三類,協同過濾演算法進一步劃分又可分為基於基於內存的推薦(memory-based)和基於模型的推薦(model-based),本文介紹的矩陣分解演算法屬於基於模型的推薦。
矩陣分解演算法的數學理論基礎是矩陣的行列變換。在《線性代數》中,我們知道矩陣A進行行變換相當於A左乘一個矩陣,矩陣A進行列變換等價於矩陣A右乘一個矩陣,因此矩陣A可以表示為A=PEQ=PQ(E是標准陣)。
矩陣分解目標就是把用戶-項目評分矩陣R分解成用戶因子矩陣和項目因子矩陣乘的形式,即R=UV,這里R是n×m, n =6, m =7,U是n×k,V是k×m。直觀地表示如下:
高維的用戶-項目評分矩陣分解成為兩個低維的用戶因子矩陣和項目因子矩陣,因此矩陣分解和PCA不同,不是為了降維。用戶i對項目j的評分r_ij =innerproct(u_i, v_j),更一般的情況是r_ij =f(U_i, V_j),這里為了介紹方便就是用u_i和v_j內積的形式。下面介紹評估低維矩陣乘積擬合評分矩陣的方法。
首先假設,用戶對項目的真實評分和預測評分之間的差服從高斯分布,基於這一假設,可推導出目標函數如下:
最後得到矩陣分解的目標函數如下:
從最終得到得目標函數可以直觀地理解,預測的分值就是盡量逼近真實的已知評分值。有了目標函數之後,下面就開始談優化方法了,通常的優化方法分為兩種:交叉最小二乘法(alternative least squares)和隨機梯度下降法(stochastic gradient descent)。
首先介紹交叉最小二乘法,之所以交叉最小二乘法能夠應用到這個目標函數主要是因為L對U和V都是凸函數。首先分別對用戶因子向量和項目因子向量求偏導,令偏導等於0求駐點,具體解法如下:
上面就是用戶因子向量和項目因子向量的更新公式,迭代更新公式即可找到可接受的局部最優解。迭代終止的條件下面會講到。
接下來講解隨機梯度下降法,這個方法應用的最多。大致思想是讓變數沿著目標函數負梯度的方向移動,直到移動到極小值點。直觀的表示如下:
其實負梯度的負方向,當函數是凸函數時是函數值減小的方向走;當函數是凹函數時是往函數值增大的方向移動。而矩陣分解的目標函數L是凸函數,因此,通過梯度下降法我們能夠得到目標函數L的極小值(理想情況是最小值)。
言歸正傳,通過上面的講解,我們可以獲取梯度下降演算法的因子矩陣更新公式,具體如下:
(3)和(4)中的γ指的是步長,也即是學習速率,它是一個超參數,需要調參確定。對於梯度見(1)和(2)。
下面說下迭代終止的條件。迭代終止的條件有很多種,就目前我了解的主要有
1) 設置一個閾值,當L函數值小於閾值時就停止迭代,不常用
2) 設置一個閾值,當前後兩次函數值變化絕對值小於閾值時,停止迭代
3) 設置固定迭代次數
另外還有一個問題,當用戶-項目評分矩陣R非常稀疏時,就會出現過擬合(overfitting)的問題,過擬合問題的解決方法就是正則化(regularization)。正則化其實就是在目標函數中加上用戶因子向量和項目因子向量的二范數,當然也可以加上一范數。至於加上一范數還是二范數要看具體情況,一范數會使很多因子為0,從而減小模型大小,而二范數則不會它只能使因子接近於0,而不能使其為0,關於這個的介紹可參考論文Regression Shrinkage and Selection via the Lasso。引入正則化項後目標函數變為:
(5)中λ_1和λ_2是指正則項的權重,這兩個值可以取一樣,具體取值也需要根據數據集調參得到。優化方法和前面一樣,只是梯度公式需要更新一下。
矩陣分解演算法目前在推薦系統中應用非常廣泛,對於使用RMSE作為評價指標的系統尤為明顯,因為矩陣分解的目標就是使RMSE取值最小。但矩陣分解有其弱點,就是解釋性差,不能很好為推薦結果做出解釋。
後面會繼續介紹矩陣分解演算法的擴展性問題,就是如何加入隱反饋信息,加入時間信息等。
7. 推薦演算法如何提前劃分製造同類目日誌
做推薦演算法的質量工作將近一年,這一年嘗試了很多東西,踩了不少坑,也對推薦的評測工作稍微有了些自己的心得,現在分享出來,希望能和做這塊工作的同學一起交流、探討,也歡迎多拍磚,多提意見。
推薦系統
目前推薦技術的應用已經非常較普及了,新聞、商品、問答、音樂,幾乎都會用到推薦演算法來為你呈現內容。下面是淘寶、知乎、微博三個app的推薦模型,可以看到推薦都在非常重要的位置。
在介紹推薦演算法評測之前,我先簡單說下推薦系統,這里我以商品為例,簡單描述下推流程,讓大家更明白一些,一般推薦主要包含以下步驟:
召回->打分排序->透出
召回
召回階段通常的手段是協同過濾比較場景的i2i,u2i等這種x2x(有興趣可以看下我寫的基於itembase的推薦),也有使用embedding的方式通過向量之間的距離進行召回。以i2i為例,假如現在要針對我推薦一個商品,那麼首先要找到我感興趣的物品 ,這些數據是通過我的歷史行為來進行獲取,比如拿到我最近一段時間內的點擊、加購、收藏、購買的物品,將這些商品做為trigger進行召回,協同演算法的具體就不再這里敘述了,有興趣可以看下鏈接,最終我們按照協同過濾演算法算出商品之間的相似分值,然後按照一定數量進行截斷,因為這里截斷也是依靠分數來進行的,所以一般這一步也稱粗排。這樣召回截斷就完成了。
打分
召回完商品後,我們需要對這些商品進行再一次的精排,這里需要用模型來預估ctr,一般情況下LR、GBDT、FM用的比較多,這里深度網路相對用的少,主要為了考慮到性能,尤其是rt,因為絕大部分的精排都是需要實時預測的,所有對耗時有一定的要求。繼續說下模型預測的步驟,首先針對召回的商品進行特徵的補充,例如該商品的一級類目、葉子類目(一級類目代表比較,葉子類目代表最細分的類目)、被多少用戶購買等,然後再加入人的特徵,例如性別、年齡、收入、對類目的偏好等,然後將這些信息做為feature,用模型進行預測,然後根據模型預測的結果進行排序,輸出。
模型
打分過程中的模型是需要提前訓練和部署,訓練集的來源就是用戶的實時行為加上用戶和商品的特徵。feature的構成是用戶的特徵和商品的特徵,label則是用戶是否點擊了該商品。
質量方案
接下來說下如何保證這塊的質量。由於推薦系統最終對用戶需要提供實時的服務化,因此免不了有工程端的技術需要一起配合。因此我這塊主要分為兩個維度來開展,一方面是工程端的質量保證,一方面是演算法側的質量保證。
工程端質量
這一塊可以將演算法當成一個黑盒子,只把他當成一個有結果返回的介面。針對這方面前人已經有了豐富的經驗,我們可以做介面的單元測試和冒煙測試,另外就是壓測,在預估的qps下看rt是否滿足業務方的要求,load是否過大,超時和錯誤的比例是否符合一定的預期。這里就不細說了,重點說說第二部分。
演算法端質量
這里我再進行細分一下,分為三部分介紹:演算法數據、演算法模型、演算法效果;
演算法數據:
大家都知道演算法在做訓練前數據的處理部分非常的重要,有興趣可以看下特徵工程相關的內容,數據的來源,特徵的構造,數據抽取、加工整個的過程都有可能會出現錯誤,而且數據一般都是存儲在分布式系統資料庫里,因此需要藉助類似hive這樣的工具將sql轉換成MapRece的任務去進行離線的計算,離線任務的產出通常會耗費不少的時間,而對於一些日更新的模型通過對數據對產出時間有一定的要求。因此數據這塊最主要的保證點為:數據本身的質量,和數據的產出時間。數據本身的質量一般可以通過數據大小的整體抖動,以及關鍵欄位是否為空,主鍵是否重復,做法比較簡單可以通過簡單sql或者udf來完成,然後藉助工程能力做到預警、檢查、出報表等。
演算法模型:
模型的本身在迭代過程中也是需要關注的,不過通常演算法同學的訓練優化也是參考這些指標,所以我們也可以把這幾個指標做為模型本身好壞的評估。具體為:准確率、召回率、AUC。
演算法效果:
那麼這個演算法推薦出的效果究竟好不好呢,這個是一個非常主觀的事情,每個人的感受也不是一樣的,但是我們仍然要衡量它的好壞,這里我參考業內學者的推薦書籍以及自己的一些摸索,總結出下面一些方法,供大家參考。
人工評測:
顧名思義,邀請一幫人來對你的推薦系統的結果進行評測。這里想法來自於我在做翻譯評測時期的經驗,首先這個成本比較高,另外就是參雜了人的主觀性非常的高,翻譯的好壞我們可以通過制定一些細致的規則來進行約束,但是推薦的好壞我們卻不好制定詳細的規則,另外就是推薦之前的用戶行為如何模擬,如何讓評測者進行感知,這些都是比較難的,並且和基準的對比也不是很好做,所以這里不是很推薦用這個方法,但是還是要提一下。
指標評估:
指標化推薦結果,也就是將推薦的結果用不同的指標來進行說明,通過這些指標,你可以更加的了解你的推薦系統,部分指標不一定越高越好,但是你需要讓它保持在一定的范圍內。說到具體的例子的時候,我會提一下。下面我們看下這些指標。
覆蓋率
定義:
推薦系統能夠推薦出來的「商品/類目」占「總商品/類目」集合的比例。假設系統的用戶集合為U,推薦系統給每個用戶推薦一個長度為N的物品列表R(u) ,總物品為N。那麼:
覆蓋率 = ΣR(u)N
Σ
R
(
u
)
N
意義:
描述推薦結系統對物品長尾發掘能力;
舉個例子,淘寶上商品千千萬萬,推薦系統能否保證讓新的一些商品有足夠的機會曝光出去呢?還是有些商品永遠都無法得到推薦曝光的機會。這個指標反應的就是這個情況,顯然物品的覆蓋率是達不到100%的,但是我們可以看類目的覆蓋率來進行衡量,假設全網所有的一級大類目一共2千個(和全網上億的物品相比非常的少),那麼推薦系統一天之內推薦出去的商品對應的一級類目,這個就是我們要衡量的標准。如果覆蓋率
8. 想要更好的做好抖音號,應該如何利用好抖音的推薦演算法呢
對推薦演算法的幾個核心指標分別建議如下
1、完播率
當你發布一個視頻後,如果初始分配的用戶里有超過80%的用戶看完了視頻,說明這個視頻的質量是很高的,另外完播率對應的是抖音用戶時長的要求,所以我們在不影響視頻質量的前提下,要盡量縮短視頻的時長,一句話能說清楚的話,絕對不用兩句話去說, 時長能少多少是多少。
2、觀贊比
看點贊數的重點是觀贊比, 也就是看你視頻的用戶,有多少比例點贊了,如果點贊比例比較高, 代表了用戶對你視頻的認可,這個是抖音推薦演算法判斷視頻質量的重要依據, 在復盤的角度,發布者也可以根據點贊數來推倒視頻受用戶喜愛的原因。
3、評論數
評論區是粉絲和視頻創作者的互動區域,做得好,會大大增加粉絲對創作者的粘性,所以評論的互動引導及其關鍵,可以在視頻里留下一些問題來引導評論區的討論,這樣評論數自然就上去了。
4、轉發數
對於任何一個平台而言,用戶增長一定是首要的,視頻的轉發數,意味的用戶願意將平台的內容裂變出去,這個意味著你這個視頻對抖音這個平台的用戶增長貢獻,自然也會得到推薦演算法的重視。
9. 如何優化易語言這個隨機演算法,使每次隨機更好一點
先10個編輯框賦值給數組,然後隨機1-3決定這次出現幾個數,之後按剛才隨機的次數計次循環,再進行排序,最後加入文本就行了,試試吧