算法模型好壞、評價標準、算法系統設計

算法模型好壞的評價通用標準:

1、解的精確性與最優性。基於正確性基礎上。

2、計算複雜度,時間成本。

3、適應性。適應變化的輸入和各種數據類型。

4、可移植性。

5、魯棒性。健壯性。

	魯棒性(robustness)就是系統的健壯性。它是在異常和危險情況下系統生存的關鍵。比如說,計算機軟件在輸入錯誤、磁盤故障、網絡過載或有意攻擊情況下,能否不死機、不崩潰,就是該軟件的魯棒性。所謂“魯棒性”,是指控制系統在一定(結構,大小)的參數攝動下,維持某些性能的特性。根據對性能的不同定義,可分爲穩定魯棒性和性能魯棒性。以閉環系統的魯棒性作爲目標設計得到的固定控制器稱爲魯棒控制器。

關於推薦系統的設計:參考文章1

自始至終需要關注兩件事:目標、測量方法。


一個電子商務網站推薦系統設計與實現——碩士論文分析


一、應用場景

1、網站首頁、新品推薦:採用item相似度策略推薦。目標:提供新穎商品。

2、商品詳情、看過的還看過,看過的還買過:採用頻繁項集挖掘推薦。目的:降低商品尋求成本,提高體驗、促進購買。

3、網站購物車、買過的還買過:頻繁項集挖掘。目的:提高客單價。

4、網站會員中心、與用戶瀏覽歷史相關商品:item相似度。目的:提升復購率。

5、商品收藏欄、搜索欄、品牌欄、品類欄:item相似度。目的:獲取用戶更多反饋;幫助用戶發現需求;完善內鏈結構,流暢頁面跳轉;完善品類之間內鏈結構,流暢跳轉。

二、推薦系統核心問題

三個核心要素:用戶、商品、推薦系統。

用戶特徵分析:行爲特徵、興趣特徵。

用戶不同特徵以不同形式存儲在不同介質中:註冊信息存儲在關係型數據庫、行爲數據存儲在web日誌中。

開發時,需要將這些數據進行清理,然後轉換到統一的用戶偏好數據庫中。


商品特徵:基本特徵、動態特徵。

基本特徵:品牌、品類、顏色、型號、尺寸、性別等。

動態特徵:銷量、庫存、市場價格、瀏覽次數、加購物車次數等。

補充說明:如果商品不能直接說明用戶的興趣特徵,比如電影、圖書,則可以通過用戶的標籤系統進行推薦。

或者通過協同過濾算法進行推薦,因爲協同過濾算法不需要依賴商品自身的特徵屬性。


用戶和商品一般具有三種關係:這是推薦系統工作的依據。

用戶--喜歡--商品--相似--商品:基於item的推薦系統思想。

用戶--相似--用戶--喜歡--商品:協同過濾算法思想。

用戶--喜歡--特徵--包含--商品:基於標籤和知識的推薦系統思想。


協同過濾算法優缺點:

優點:對推薦對象沒有特別要求,不需要結構化可描述。適合電影、音樂、視頻等非結構化對象的推薦。

缺點:需要大量用戶歷史數據,存在新用戶、新商品、冷啓動、數據稀疏等問題。


基於內容的推薦算法:根據用戶瀏覽或者購買過的商品的特徵,分析用戶興趣偏好模型,推薦相似特徵商品。

優點:不需要其他用戶數據支持;推薦的理由容易解釋,因爲是基於當前用戶的行爲;可以推薦新商品給用戶,協同過濾做不到。

缺點:商品特徵是有限的,不完備的,提取特徵需要相關背景知識;過於規範化,只會推薦相似特徵內的商品,高度依賴特徵的提取;新用戶問題,新用戶數據不夠,推薦效果不好。


基於知識的推薦系統:針對歷史數據少,用戶有明確購買要求的情況。比如買車買房、買手機電腦等,頻次低、目的明確。需要商品的專業知識。

優點:不依賴用戶歷史數據,解決協同過濾和基於知識推薦算法不能應用的場景。

缺點:依賴商品的專業知識,用戶需求越明確,商品知識越全面,匹配度越高,否則,推薦效果越差。數據獲取不容一,不容易建模。

三、推薦系統中的數據挖掘方法

數據預處理:將非結構化的數據結構化,進行清理、轉化、提取等操作。

常見預處理方法:採樣、去噪、降維、計算相似度。

四、推薦系統整體架構


共四層:數據層、算法層、接口層、應用層。

數據層:數據存儲、清理、分析、挖掘。爲算法層提供數據基礎。

算法層:系統核心模塊,上述推薦系統算法都處於這一層,推薦算法有離線和在線,這些算法通過通過接口層對外提供統一服務。

接口層:調用算法層的接口。

應用層:調用接口層,實現具體的推薦結果。

推薦系統的核心部分是:數據層的用戶行爲建模+算法層的推薦算法設計。

五、典型場景下推薦系統內部處理流程

六、推薦數據生成流程

七、去噪

通過IP黑名單過濾:辦公網絡的在線測試引起的頻繁訪問、競爭對手的惡意攻擊、網絡爬蟲的訪問。

cookie的會話ID:IP黑名單過濾可能屏蔽掉一個局域網的用戶,造成誤殺。如果cookie的ID一段時間內訪問高出正常值很多倍,則可以加入黑名單。

通過網站註冊用戶ID過濾:惡意用戶會在網站註冊成百上千的賬號,造成大量下單;可以通過cookie查看這些ID,加入黑名單。

短時間大量購買行爲:從業務角度將,短時間大量購買成百上千件商品,是極不正常的,應加入黑名單。

八、使用語言:java、python、php

python分析web日誌;

java編寫推薦算法;

php寫網站和推薦接口。

九、數據存儲

web日誌採用gzip壓縮,存儲在mongodb和mysql數據庫中。

mongodb存儲半結構化數據;mysql存儲結構化數據,包括商品數據、交易數據、用戶數據、挖掘之後的數據。

mongldb是基於分佈式文件存儲的數據庫。

十、技術選型


Nginx是一個高性能的web http服務器。

Varnish緩存是一個http加速器。

LVS採用IP負責均衡和基於內容的請求分發技術。將一組服務器構成一個高效的虛擬服務器。

thrift是一個軟件框架,用來進行可擴展、跨語言服務的開發。能支持C++、java、python、javascript、nodejs等等幾乎所有編程語言的無縫對接。

十一、用戶行爲分析與建模

分析web日誌,對用戶行爲進行建模。

分析web日誌的意義:

網站KPI指標分析;

用戶行爲建模;

蜘蛛行爲分析:除了百度、google、360等大蜘蛛,還有小蜘蛛,通過分析可以優化搜索引擎,提高免費流量來源。

惡意行爲分析;

網站故障監控;

網站性能監控。

常用日誌分析方法:

1、通過命令話shell:grep、sort、awk,快速找出我們關心的內容。

     如果需要進行大量重複的統計時,需要將非結構化的日誌文件轉化爲結構化的日誌,叫做數據抽取轉換加載(ETL),則通常由程序完成。

2、python/perl程序:利用正則匹配函數,解析日誌信息,完成數據預處理。

日誌格式設計:

清理後的結構化數據可以存爲keyvalue形式,l類似與json的bson,存儲在mongodb.

十二、用戶身份識別和關聯行爲

用戶沒有登陸之前的瀏覽行爲,通過cookie的sessionID來記錄,這個sessionID是唯一的。

十三、用戶偏好數據結構設計

影響用戶偏好很重要的因素是:用戶行爲的頻次和時效性。

十四、外部應用接口設計

thrift服務端和客戶端。

服務器斷由php實現,客戶端由php、java、python實現。

用以上語言定義相應接口函數即可。


十五、推薦系統測試與評估

如果在正確位置顯示推薦欄,則表示測試通過。

評估分爲離線、在線兩種方式。

離線評價標準有正確率和召回率;在線有AB測試、點擊率、轉化率。


參考文章:

1、http://wenku.baidu.com/link?url=4yjk6CROKvS8tdcckFiKQHKXpMxyej-I9xcYGO--ai7Ar3hwMTBcLp2djwuBh3M5uhG15m1RfB_GXMjCNKuAvflUL211cV-n2MfR3JC2NpK

(一個電子商務網站推薦系統設計與實現的碩士論文)

發佈了139 篇原創文章 · 獲贊 19 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章