自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

打包教你推薦系統(tǒng)的開源工具和框架

開發(fā) 開發(fā)工具
如果我們懂得了原理,知道了實際推薦系統(tǒng)需要考慮哪些元素之后,卻在你摩拳擦掌之際,發(fā)現(xiàn)要先從挖地基開始,你整個人可能是崩潰的。

 如果我們懂得了原理,知道了實際推薦系統(tǒng)需要考慮哪些元素之后,卻在你摩拳擦掌之際,發(fā)現(xiàn)要先從挖地基開始,你整個人可能是崩潰的。

[[283995]]

 

輪子不要重復(fù)造

但是事實上你沒必要這樣做也不應(yīng)該這樣做。大廠研發(fā)力量雄厚,業(yè)務(wù)場景復(fù)雜,數(shù)據(jù)量大,自己從挖地基開始研發(fā)自己的推薦系統(tǒng)則是非常常見的,然而中小廠職工們則要避免重復(fù)造輪子。這是因為下面的原因。

1、中小企業(yè),或者剛剛起步的推薦系統(tǒng),要達(dá)成的效果往往是基準(zhǔn)線,通用的和開源的已經(jīng)能夠滿足;

2、開源的輪子有社區(qū)貢獻(xiàn),經(jīng)過若干年的檢驗后,大概率上已經(jīng)好于你自己從零開始寫一個同樣功能的輪子;

3、對于沒有那么多研發(fā)力量的廠來說,時間還是第一位的,先做出來,這是第一要義。

既然要避免重復(fù)造輪子,就要知道有哪些輪子。

有別于介紹一個籠統(tǒng)而大全的“推薦系統(tǒng)”輪子,我更傾向于把粒度和焦點再縮小一下,介于底層的編程語言 API 和大而全的”推薦系統(tǒng)”之間,本文按照本專欄的目錄給你梳理一遍各個模塊可以用到的開源工具。

這里順帶提一下,選擇開源項目時要優(yōu)先選擇自己熟悉的編程語言、還要選有大公司背書的,畢竟基礎(chǔ)技術(shù)過硬且容易形成社區(qū)、除此之外要考慮在實際項目中成功實施過的公司、最后還要有活躍的社區(qū)氛圍。

內(nèi)容分析

基于內(nèi)容的推薦,主要工作集中在處理文本,或者把數(shù)據(jù)視為文本去處理。文本分析相關(guān)的工作就是將非結(jié)構(gòu)化的文本轉(zhuǎn)換為結(jié)構(gòu)化。主要的工作就是三類。

1、主題模型;

2、詞嵌入;

3、文本分類。

可以做這三類工作的開源工具有下面的幾種。

 

IT干貨:打包教你推薦系統(tǒng)的開源工具和框架

 

由于通常我們遇到的數(shù)據(jù)量還沒有那么大,并且分布式維護本身需要專業(yè)的人和精力,所以請慎重選擇分布式的,將單機發(fā)揮到極致后,遇到瓶頸再考慮分布式。

這其中 FastText 的詞嵌入和 Word2vec 的詞嵌入是一樣的,但 FastText 還提供分類功能,這個分類非常有優(yōu)勢,效果幾乎等同于 CNN,但效率卻和線性模型一樣,在實際項目中久經(jīng)考驗。LightLDA 和 DMWE 都是微軟開源的機器學(xué)習(xí)工具包。

 

協(xié)同過濾和矩陣分解

基于用戶、基于物品的協(xié)同過濾,矩陣分解,都依賴對用戶物品關(guān)系矩陣的利用,這里面常常要涉及的工作有下面幾種。

1、KNN 相似度計算;

2、SVD 矩陣分解;

3、SVD++ 矩陣分解;

4、ALS 矩陣分解;

5、BPR 矩陣分解;

6、低維稠密向量近鄰搜索。

可以做這些工作的開源工具有下面幾種。

 

IT干貨:打包教你推薦系統(tǒng)的開源工具和框架

 

這里面的工作通常是這樣:基礎(chǔ)協(xié)同過濾算法,通過計算矩陣的行相似和列相似得到推薦結(jié)果。

矩陣分解,得到用戶和物品的隱因子向量,是低維稠密向量,進一步以用戶的低維稠密向量在物品的向量中搜索得到近鄰結(jié)果,作為推薦結(jié)果,因此需要專門針對低維稠密向量的近鄰搜索。

同樣,除非數(shù)據(jù)量達(dá)到一定程度,比如過億用戶以上,否則你要慎重選擇分布式版本,非常不劃算。

模型融合

模型融合這部分,有線性模型、梯度提升樹模型。

 

IT干貨:打包教你推薦系統(tǒng)的開源工具和框架

 

線性模型復(fù)雜在模型訓(xùn)練部分,這部分可以離線批量進行,而線上預(yù)測部分則比較簡單,可以用開源的接口,也可以自己實現(xiàn)。

 

其他工具

Bandit 算法比較簡單,自己實現(xiàn)不難,這里不再單獨列舉。至于深度學(xué)習(xí)部分,則主要基于 TensorFlow 完成。

存儲、接口相關(guān)開源項目和其他互聯(lián)網(wǎng)服務(wù)開發(fā)一樣,也在對應(yīng)章節(jié)文章列出,這里不再單獨列出了。

完整推薦系統(tǒng)

這里也梳理一下有哪些完整的推薦系統(tǒng)開源項目,可以作為學(xué)習(xí)和借鑒。 所謂完整的推薦系統(tǒng)是指:包含推薦算法實現(xiàn)、存儲、接口。

 

IT干貨:打包教你推薦系統(tǒng)的開源工具和框架

 

總結(jié)

你可能注意到了,這里的推薦系統(tǒng)算法部分以 Python 和 C++ 為主,甚至一些 Python 項目,底層也都是用 C++ 開發(fā)而成。

因此在算法領(lǐng)域,以 Python 和 C++ 作為開發(fā)語言會有比較寬泛的選擇范圍。

至于完整的推薦系統(tǒng)開源項目,由于其封裝過于嚴(yán)密,比自己將大模塊組合在一起要黑盒很多,因此在優(yōu)化效果時,不是很理想,需要一定的額外學(xué)習(xí)成本,學(xué)習(xí)這個系統(tǒng)本身的開發(fā)細(xì)節(jié),這個學(xué)習(xí)成本是額外的,不是很值得投入。

因此,我傾向于選擇各個模塊的開源項目,再將其組合集成為自己的推薦系統(tǒng)。這樣做的好處是有下面幾種。

1、單個模塊開源項目容易入手,學(xué)習(xí)成本低,性能好;

2、自己組合后更容易診斷問題,不需要的不用開發(fā);

3、單個模塊的性能和效果更有保證。

當(dāng)然,還是那句話,實際問題實際分析,也許你在你的情境下有其他考慮和選擇。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2024-11-21 08:09:51

2020-04-03 16:07:31

DevSecOps開源安全工具

2009-07-01 19:21:00

2020-01-02 14:25:50

工具代碼開發(fā)

2022-07-13 08:53:12

開源元宇宙

2019-12-16 15:16:29

工具代碼開發(fā)

2011-05-16 09:07:13

Django

2015-03-18 10:46:04

Android框架開源

2020-11-17 08:58:32

開源工具報表

2009-11-09 14:44:52

開源UML工具

2020-08-12 09:35:23

Docker工具開源

2015-12-28 09:39:48

開源辦公工具工具

2017-02-13 20:43:45

開源調(diào)查工具

2010-07-01 10:24:30

UML小工具

2010-12-14 09:37:02

數(shù)據(jù)挖掘工具開源

2023-12-22 14:09:08

AI文本編輯器AiEditor

2022-06-08 08:52:04

Tars微服務(wù)開發(fā)C++開發(fā)

2022-04-18 07:51:31

Web框架模板

2017-05-16 15:00:24

深度學(xué)習(xí)

2022-12-19 14:43:56

開源CSS框架
點贊
收藏

51CTO技術(shù)棧公眾號