您好,登錄后才能下訂單哦!
這篇文章主要介紹了軟件開發的十個關鍵點是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇軟件開發的十個關鍵點是什么文章都會有所收獲,下面我們一起來看看吧。
1 顯式\隱式反饋數據的充分運用
數據是一切推薦系統的基礎。良好的推薦效果一定是來自于豐富而準確的數據。這些數據既包括了用戶(user)和待推薦物品(item)相關的基礎信息(注:item和具體的推薦場景相關,可以是商品、影片、音樂、新聞等,如果是進行好友推薦,那么item也可以是user本身),另一方面,user和item之間在網站或應用中發生的用戶行為和關系數據也非常重要。因為這些用戶行為和關系數據能真實的反映每個用戶的偏好和習慣。采集這些基礎數據,并做好清洗和預處理,是整個推薦系統的基石。
用戶行為數據,又可細分為兩部分:顯式反饋數據(explicit feedbacks)和隱式反饋(implicit feedbacks)數據。顯式反饋是指能明確表達用戶好惡的行為數據,例如用戶對某商品的購買、收藏、評分等數據。與之相反,隱式反饋數據是指無法直接體現用戶偏好的行為,例如用戶在網站中的點擊、瀏覽、停留、跳轉、關閉等行為。通過挖掘顯式反饋數據能明確把握用戶的偏好,但在很多應用中,顯式反饋數據通常很稀疏,導致對用戶偏好的挖掘無法深入。這個問題在一些剛上線的應用、或者偏冷門的物品或用戶身上反映尤其明顯。在這種情況下,用戶的隱式反饋數據就顯得尤為重要。因為雖然用戶在網站中的點擊等行為很龐雜,但其中蘊藏了大量信息。在2006-2008年間進行的國際著名推薦競賽Netflix Prize中,冠軍隊成員Yehuda Koren發現將用戶租用影片的記錄,轉換為特征向量注入奇異值分解算法(SVD)用于影響用戶興趣向量,能夠很好的提高推薦準確率。
基礎數據的預處理對推薦效果的提升也非常有幫助。以今年的KDD-Cup國際數據挖掘競賽為例,訓練樣本中,負樣本的數量居然達到了總樣本數量的92.82%,但是通過仔細分析這些負樣本,發現其中有大量樣本存在噪音,通過一系列的Session分析和篩選方法,從中保留了11.2%的樣本進行后續推薦挖掘,不僅成功提高了推薦精度,而且大大減少了運算量。所以充分利用各類顯式和隱式數據,并做好數據的預處理,保證輸入數據的質量,是第一個關鍵點。
2 多模型融合技術
經過多年的發展,很多種推薦算法被提出來。常見的推薦方法,從大類上分,有基于歷史行為(Memory-based)的方法、基于模型(Model-based)的方法、基于內容(Content-based)方法等。在Memory-based方法這個方向,又可進一步細分為基于物品的協同過濾算法(item-based collaborative filtering)、基于用戶的協同過濾算法(user-based collaborative filtering)、關聯規則(association rule)等;Model-based方法常用的包括Random Walk、pLSA、SVD、SVD++等。每種方法在具體實施時,針對不同的問題又有很多不同的實現方案,例如在基于物品的協同過濾算法(item-based collaborative filtering)中,item之間相似度計算公式(Similarity)也可能有很多很多種變化。
在系統推薦的結果以外,還有一類傳統的方式是通過專家進行推薦。這些專家可以是一些有經驗的編輯,也可以是社區中意見領袖等。這些領域專家推薦的結果,在很多實際應用中,可以作為算法推薦結果的有益補充。
事實上,在實踐中并沒有任何一種方法在實踐中始終占據壓倒性的優勢,它們各有千秋,分別有其各自合適的應用場景,因此因地制宜根據不同的場景,挑選不同的方法,并有機的結合起來,能讓推薦效果得到極大的提升。常見的融合方法包括Restricted Boltzmann Machines(RBM), Gradient Boosted Decision Trees(GBDT),Logistic Regression(LR)等,這方面歷次推薦競賽中有很多相關文章,可以看到為了提升推薦效果,將不同算法的結果能夠取長補短,各自發揮價值,是極為有效的。
3 時間因素的運用
用戶的行為是存在很強的時間規律的。例如通常我們中午要吃飯、周末會休假、過年會回家團圓等等。用戶在各個應用中的行為也同樣有規律可以挖掘,用好時間這個特征,在很多推薦場景下,會對推薦效果的提升有很大的幫助。
用戶行為日志中,行為發生的時間戳(timestamp)通常都會被記錄。這個時間戳能從user和item兩方面來進行分析。從user的角度來看:user的興趣往往會隨著時間不斷變化,幾年前的興趣和當前的興趣可能是不同的;另一方面,user的行為也存在一定的規律,例如工作日的行為是類似的,而在周末里user的行為也會變化,甚至在同一天中,上午和晚上的user行為和偏好也會有各種不同的規律。
從item的角度來看,流行度隨著時間會有規律性的波動,通過持續挖掘user與item之間的行為在一段時間內的記錄,往往能夠發掘出這種規律,并進而用于指導我們預測user在后續某個時刻的行為,提高推薦的準確率。
時間因素的一些常見處理方案包括:1)在協同過濾計算user或者item相似度的公式中,增加時間因子,發揮相近時間的作用;2)將時間離散映射到自然月、周、日、小時等時間片中,并分別進行統計計算,并進而將累積的數據用于特定的回歸模型(Regression models)中,指導結果預測;3)將時間作為線性連續變量,用于訓練模型參數等。
4 地域屬性在特定場景的使用
有一些推薦場景是和用戶所處地域密切相關的,尤其對一些LBS、O2O的應用來說,一旦離開地域這個特征,那么智能推薦的效果根本就無從談起。例如當需要推薦一個餐館時,如果不考慮用戶當前所在的位置,那么即使某餐館和當前用戶的口味匹配度非常高,但遠在天邊,這個推薦也是毫無價值的。
目前推薦系統在地域特征的使用還停留在較為原始的狀態,通常需要讓用戶手工篩選推薦結果所在的區域(如省、市、區、縣等),或者指定若干半徑范圍內的結果。這種方式不僅操作繁瑣,而且缺乏對地域信息的細致分析。例如地點A和B的地圖直線距離雖然較遠,但兩點間有地鐵直接往返,而另一地點C雖然地圖直線距離A很近,但兩點間需要繞行交通不便。另外從用戶角度來說,每天活動的地域總是存在規律的,例如工作日白天,往往活動區域在工作地點附近,夜晚的時間會在家附近等。
在基于地理位置信息的應用中,需要更聰明的挖掘用戶對地域的偏好(而且這種偏好往往和時間緊密聯系),例如在基于用戶的協同過濾中,將類似地域用戶活躍用戶的行為,作為推薦的依據,即認為活動地域相似的用戶,可能存在一定相同的偏好。或者使用基于物品的協同過濾思想,在計算item之間相似度時引入地域特征。在Latent Factor Model中,將用戶的活動地域作為隱式反饋來作用于用戶特征向量等,都是可行的方案。
手機是進行基于地域信息推薦的最好載體,隨著移動互聯網應用越來越普及,期待未來有更多基于地域信息的推薦產品的問世。
5 SNS關系的使用
社交網絡近年來得到了突飛猛進的發展,用戶不再是單純的內容接收者,而是能夠主動的建立用戶之間的關系。這些關系,可以劃分為顯式關系(explicit relations)和隱式關系(implicit relations)。顯式關系指的是用戶已明確建立的相關關系,例如在微博中關注/被關注某人等,或者在社區中加為好友等。而隱式關系指用戶之間存在一些互動行為,但這些行為不能明確指示用戶間的關系。例如用戶在微博中點擊、評論、轉發另一個用戶的帖子,如果在網絡游戲世界中另一個玩家交談,或者PK等。隱式關系雖然并不如顯式關系那樣明確,但比顯式關系要豐富的多。所以在一些對推薦精度要求很高的應用場景下,顯式關系需要發揮主要作用;而對一些需要提高推薦召回率和推薦結果多樣性的場景下,尤其是當顯式關系面臨數據稀疏性的問題時(注:這個問題在推薦應用中普遍存在),充分利用隱式關系能起到非常好的效果。以今年的KDD-Cup競賽為例,在騰訊微博的好友推薦系統上,我們通過在SVD++模型中增加隱式關系,處理數據稀疏性的問題,能夠將推薦準確率提升5.5%
此外,移動互聯網的普及,讓SNS關系使用起來更加便捷,而且加上地域信息,產生了像微信這樣新穎的移動應用,而SNS關系和地域特征的結合使用,一定會讓推薦系統也產生出更受歡迎的結果。
6 冷啟動問題處理辦法
冷啟動是推薦系統最為悠久的一個問題,伴隨推薦系統誕生至今。這是因為推薦系統效果提升的關鍵天然在于數據,而當新用戶、或新物品等剛上線時,由于積累的數據極為稀少,大量方法在最初這段時間難以生效。
冷啟動問題又可細分為user冷啟動或者item的冷啟動。user冷啟動在一些場景普遍存在,例如在一些短視頻網站,由于user沒有登錄瀏覽的習慣,因此大量來訪用戶都是陌生的cookie用戶,如何對這些user進行推薦是至關重要的。常見的思路包括:1)采用熱門推薦(排行榜)結果。雖然排行榜是一個看似簡單的方法,但設計良好、的排行榜并不如想象中簡單,排行榜如何計算,基于哪些統計特征,都是值得深究的。2)充分利用有限的用戶信息來迅速捕捉偏好。例如用戶的來源ip、訪問時間、最初點擊的幾個結果的屬性,都需要被充分運用。3)為新用戶設置簡單的口味測試,根據用戶提交的答案主動收集用戶偏好。常見的方案包括為提供一些預先精心設計的選項,通過用戶的選擇迅速建立用戶模型。在設計選項時,一些注意點包括:A)必須要有代表性的選項;B)選項需要相對熱門,或有一定的用戶知名度;C)選項之間要有區分度。
item冷啟動的問題在一些item頻繁更新的應用中普遍存在,例如一些電子商務網站會不斷上架新商品,這些新商品由于缺少點擊,很難進行推薦。但基于內容的方法(content-based)往往此時能發揮關鍵作用。根據item的類別、標簽、關鍵詞等初始特征,能計算item之間的關聯度。盡管很多對比評測表明,基于內容的推薦算法往往推薦精度不夠高,但這種方法在處理item冷啟動時有先天的優勢,所以在工程實踐中可以注意使用。
7 推薦結果的展現方式
推薦系統絕不僅僅局限于推薦算法和架構,而是一個完整的系統。其中推薦結果的展現方案是這個系統中極為重要的一環,開發一個推薦系統時,這個環節往往被工程師們忽略,但推薦結果最終呈現給用戶的位置、提供哪些信息,往往起到舉足輕重的作用。
這里需要注意的關鍵點包括:1)不同item的推薦,由于用戶關注點不同,展現的方案也需要不同,要盡量凸顯出用戶的關注重點。例如推薦一個服飾時,縮略圖對用戶的點擊意愿起到極為重要的作用;而推薦服務類商品時(例如旅游線路),天數、價格、是否優惠等信息,才是用戶關注的重點;2)推薦展示的場景和位置,需要符合用戶的行為習慣。求職社交網站LinkedIn的對比實驗表明,在用戶申請完一個工作的之前或之后分別展示推薦結果,前者的點擊率是后者的10倍。在網頁正中或右側邊欄放置推薦結果,點擊率也相差5倍之多。
在展現方式中,另一個極為重要的方面是提供推薦理由。因為通過展現推薦理由,能夠贏得用戶的信任,進而讓用戶更容易接受推薦給他的結果。例如直接為A用戶給出一個猜她喜歡的視頻V,可能很難信任。但如果同時給出推薦理由:“和你口味相似的B和C都收藏了該視頻”,那么能很好的提升用戶的信任感。另外,推薦理由本身也是對推薦結果的一個良好的補充描述。例如推薦一本小說,按傳統方案只提供小說名稱、封面,讀者很難獲取足夠的信息,但如果提供推薦理由:“本周銷售量最多”或者“起點白金作家XXX最新作品”,對提升推薦成功率有很大的幫助。
合適的推薦結果的展示方案,需要技術、產品、UI、UED等充分結合,對用戶需求和用戶心里有細致入微的把握,往往能起到事半功倍的效果。
8 明確優化目標和評估手段
開發一個初步可用的推薦系統并不難,難的是如何在原有推薦效果的基礎上精益求精,更進一步。優化目標和評估手段的確定是解決這個問題的關鍵所在。首先需要確定系統的優化目標。例如有些推薦系統追求推薦結果的點擊率;有些則還考慮點擊后的實際轉化或成交效果;有些推薦場景更關注推薦結果的新穎性,即希望更多的將本站新收錄的物品展現給用戶;另一些則更重視結果的多樣性。
在推薦系統的目標明確后,隨之而來的問題是,如何量化的評價這些推薦目標?傳統的評分預測問題通常使用均方根誤差(RMSE)或者平均絕對誤差(MAE)等計算方法。但在實際應用中Top-N推薦更為常見,這種場景下NDCG(Normalized Discounted Cumulative Gain)或MAP(Mean Average Precision)是普遍使用的衡量方法。
由于推薦系統經常借鑒相關領域的一些技術,如廣告學或搜索系統,因此計算廣告學中的pCTR或者搜索系統的Precision-Recall曲線等也經常用于評估推薦效果的優劣。有些系統甚至直接將推薦系統轉化為一個機器學習問題,評估手段也隨之轉化為對應問題的方法。
實際系統中,往往是多個指標(點擊率、準確率、覆蓋率、多樣性、新穎性等)共同作用,并且按照產品的實際需求,加權折衷后進行結果評測。測試方法也有線上A/B Testing以及人工評測等。無論采用何種方法,一個成熟的推薦系統一定要建立在明確的優化目標和評測系統之上,它們像一把尺子,丈量著推薦系統每次前進的腳步。
9 時效性問題
正所謂“天下武功,唯快不破”,推薦系統要能及時捕捉用戶需求的變化,反饋到模型中,并及時響應用戶請求,實時提供在線服務。因為用戶是挑剔的、也是缺乏耐心的,新用戶尤其如此,如果一個推薦系統無法在較短的時間內調整結果以迎合用戶,那么用戶會迅速流失。
推薦系統的時效性首先體現在能靈敏捕捉用戶反饋,這些反饋既包括正反饋(用戶喜愛),也需要收集負反饋(用戶不感興趣的)。很多推薦系統往往忽略了負反饋樣本的收集,而事實上,有效的收集用戶的正負反饋,并進行對比訓練,能夠更全面準確的掌握用戶偏好。
在用戶反饋收集的基礎上,還需要能夠及時更新后臺的推薦模型。很多推薦系統后端的用戶模型和物品模型,都需要通過大量用戶日志來進行挖掘運算,計算開銷大,所以一個設計良好的推薦系統,需要將離線挖掘和在線服務系統進行有機的結合。離線系統可以設計得比較“厚”,即算法復雜,模型龐大,更新緩慢。而在線系統則傾向于設計得輕巧靈活,能及時將捕獲的正負反饋信息傳遞進來,修改在線模型,捕獲用戶短期興趣變化,從而快速修正推薦結果。
10 大數據挖掘和性能優化
大數據挖掘是近年來的研究熱點,得益于分布式計算技術的廣泛使用,系統吞吐的數據規模越來越大,離線數據挖掘的能力也越來越強,處理大量用戶行為數據變得越來越便捷。但在推薦挖掘中,系統能夠提供的運算能力和實際的運算需求之間,始終存在矛盾,所以如果有效合理的分配運算資源十分重要。這里需要在挖掘深度上進行合理的分配。對重點的用戶或者item,可以分配更多的資源,進行更深入的挖掘。對基礎數據也是如此,高質量的數據可以用于更詳細的分析,而低價值的數據可能只需要簡化處理流程。
后端的離線系統往往還需要定期更新模型,這里模型的全量或增量更新方式也是一個值得關注的點。以用戶模型為例,并非所有用戶的個性化模型都需要頻繁更新,活躍的、高貢獻值的用戶,應該需要更頻繁的予以更新。對item也類似,熱門item和冷門item更新技術的周期可以不同。在大數據推薦系統的性能優化方面,還有一些常用的技巧,例如倒排索引的使用,cache機制的充分運用等。
關于“軟件開發的十個關鍵點是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“軟件開發的十個關鍵點是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。