當前位置:
首頁 > 新聞 > 基於PyTorch重寫sklearn,《現代大數據演算法》電子書下載

基於PyTorch重寫sklearn,《現代大數據演算法》電子書下載

新智元報道

來源:github.com

作者:Daniel Han-Chen 編譯:肖琴

【新智元導讀】基於PyTorch重寫的機器學習工具包HyperLearn,速度更快、內存使用更少,效率提高了一倍。

HyperLearn是一個基於PyTorch重寫的機器學習工具包Scikit Learn,它的一些模塊速度更快、需要內存更少,效率提高了一倍。

專為大數據而設計,HyperLearn可以使用50%以下的內存,並在某些模塊上運行速度提高50%以上。將支持GPU,並且所有模塊都是並行化的。

項目作者Daniel Han-Chen,畢業於澳大利亞新南威爾士大學,專註於AI、NLP和無監督機器學習的推薦和匹配演算法。

基於HyperLearn,作者展示了如何讓很多機器學習演算法更快、更高效。

其中一些很酷的演算法:

最小二乘法/線性回歸的擬合時間相比sklearn減少70%,內存使用減少50%

由於新的並行演算法,非負矩陣分解的擬合時間相比sklearn減少50%

Euclidean演算法/餘弦相似度演算法加快40%

LSMR迭代最小二乘法時間減少50%

新的Reconstruction SVD演算法——使用SVD來估算丟失的數據,比mean imputation方法好約30%

稀疏矩陣運算速度提高50%——並行化

RandomizedSVD,速度加快20%~30%

New Incremental SVD和Incremental Eig,RandomizedSVD / Truncated SVD

等等

項目地址:

https://github.com/danielhanchen/hyperlearn

並且,作者寫了一本電子書:Modern Big Data Algorithms,介紹了12個新演算法以及一些更新的演算法:

紅色:新演算法;綠色:更新的演算法;藍色:即將發布

讓我們先大致看一下「奇異值分解」(SVD)這一章,這是最重要的演算法之一。SVD將PCA、線性回歸、嶺回歸、QDA、LDA、LSI、推薦系統、壓縮演算法、L2 distance等多種演算法聯繫在一起,可以說是機器學習中最重要的演算法了。

Page on SVD

Page on Reconstruction SVD

Using SVD to reconstruct missing data

提速50%+,RAM使用減少50%+

提速50%+,RAM使用減少50%+,GPU支持的重寫Sklearn,使用Statsmodels組合新的演算法。

HyperLearn完全用PyTorch, NoGil Numba, Numpy, panda, Scipy 和 LAPACK編寫,鏡像主要是Scikit Learn。HyperLearn還嵌入了統計推斷方法,可以被想Scikit Learn語法(model.confidence_interval_)一樣調用。

速度/內存的比較

時間表示Fit + Predict的時間。RAM(mb) = max( RAM(Fit), RAM(Predict) )

以下是N = 5000,P = 6000時的初步結果:

關鍵方法和目標

令人尷尬的並行循環

速度提升50%+,精簡50%+

為什麼Statsmodels有時會慢得讓人無法忍受?

使用PyTorch的深度學習模塊

代碼量減少20%+,更清晰的代碼

訪問舊演算法和令人興奮的新演算法

1. 令人尷尬的並行循環

包括內存共享,內存管理

通過PyTorch和Numba的CUDA並行性

2. 50%+ Faster, 50%+ Leaner

矩陣乘法排序:

https://en.wikipedia.org/wiki/Matrix_chain_multiplication

Element Wise矩陣乘法將複雜度從O(n^3)降低到O(n^2):https://en.wikipedia.org/wiki/Hadamard_product_(matrices)

將矩陣運算簡化為Einstein Notation:https://en.wikipedia.org/wiki/Einstein_notation

連續評估一次性矩陣操作以減少RAM開銷。

如果p >> n,則可能分解X.T優於分解X.

在某些情況下,應用QR分解SVD可能會更快。

利用矩陣的結構來計算更快(例如三角矩陣,Hermitian矩陣)。

計算 SVD(X),然後獲得pinv(X) ,有時比單純計算pinv(X)更快

3. 為什麼Statsmodels有時會慢得讓人無法忍受?

對線性模型的置信度、預測區間,假設檢驗和擬合優度檢驗進行了優化。

儘可能使用 Einstein Notation和Hadamard Products。

僅計算需要計算的內容(計算矩陣對角線,而不是整個矩陣)。

修復Statsmodels在符號、速度、內存方面的問題和變數存儲上的缺陷。

4. 使用PyTorch的深度學習模塊

使用PyTorch創建Scikit-Learn

5. 代碼量減少20%+,更清晰的代碼

儘可能使用 Decorators和Functions。

直觀的中層函數名稱,如(isTensor,isIterable)。

通過hyperlearn.multiprocessing輕鬆處理並行

6. 訪問舊演算法和令人興奮的新演算法

矩陣補全演算法——非負最小二乘法,NNMF

批相似性隱含狄利克雷分布(BS-LDA)

相關回歸(Correlation Regression)

可行的廣義最小二乘法FGLS

Outlier Tolerant Regression

多維樣條回歸(Multidimensional Spline Regression)

廣義MICE

使用Uber的Pyro進行貝葉斯深度學習

《現代大數據演算法》電子書下載地址:

https://github.com/danielhanchen/hyperlearn/blob/master/Modern%20Big%20Data%20Algorithms.pdf

【加入社群】

新智元 AI 技術 + 產業社群招募中,歡迎對 AI 技術 + 產業落地感興趣的同學,加小助手微信號:aiera2015_3入群;通過審核後我們將邀請進群,加入社群後務必修改群備註(姓名 - 公司 - 職位;專業群審核較嚴,敬請諒解)。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 新智元 的精彩文章:

語音翻譯也能端到端?深度學習這條路有戲!
谷歌為AI再上「緊箍咒」:道德團隊審查產品,確保AI不作惡

TAG:新智元 |