基于PyTorch重写sklearn,《现代大数据算法》
HyperLearn是一個基于PyTorch重寫的機器學習工具包Scikit Learn,它的一些模塊速度更快、需要內存更少,效率提高了一倍。
專為大數(shù)據(jù)而設計,HyperLearn可以使用50%以下的內存,并在某些模塊上運行速度提高50%以上。將支持GPU,并且所有模塊都是并行化的。
項目作者Daniel Han-Chen,畢業(yè)于澳大利亞新南威爾士大學,專注于AI、NLP和無監(jiān)督機器學習的推薦和匹配算法。
基于HyperLearn,作者展示了如何讓很多機器學習算法更快、更高效。
其中一些很酷的算法:
?●??最小二乘法/線性回歸的擬合時間相比sklearn減少70%,內存使用減少50%?●??由于新的并行算法,非負矩陣分解的擬合時間相比sklearn減少50%
?●??Euclidean算法/余弦相似度算法加快40%
?●??LSMR迭代最小二乘法時間減少50%
?●??新的Reconstruction SVD算法——使用SVD來估算丟失的數(shù)據(jù),比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個新算法以及一些更新的算法:
紅色:新算法;綠色:更新的算法;藍色:即將發(fā)布
讓我們先大致看一下“奇異值分解”(SVD)這一章,這是最重要的算法之一。SVD將PCA、線性回歸、嶺回歸、QDA、LDA、LSI、推薦系統(tǒng)、壓縮算法、L2 distance等多種算法聯(lián)系在一起,可以說是機器學習中最重要的算法了。
提速50%+,RAM使用減少50%+
提速50%+,RAM使用減少50%+,GPU支持的重寫Sklearn,使用Statsmodels組合新的算法。
HyperLearn完全用PyTorch, NoGil Numba, Numpy, panda, Scipy 和 LAPACK編寫,鏡像主要是Scikit Learn。HyperLearn還嵌入了統(tǒng)計推斷方法,可以被想Scikit Learn語法(model.confidence_interval_)一樣調用。
速度/內存的比較
時間表示Fit + Predict的時間。RAM(mb) = max( RAM(Fit), RAM(Predict) )
以下是N = 5000,P = 6000時的初步結果:
關鍵方法和目標
?●??令人尷尬的并行循環(huán)?●??速度提升50%+,精簡50%+
?●??為什么Statsmodels有時會慢得讓人無法忍受?
?●??使用PyTorch的深度學習模塊
?●??代碼量減少20%+,更清晰的代碼
?●??訪問舊算法和令人興奮的新算法
1. 令人尷尬的并行循環(huán)
?●??包括內存共享,內存管理?●??通過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
?●??連續(xù)評估一次性矩陣操作以減少RAM開銷。
?●??如果p >> n,則可能分解X.T優(yōu)于分解X.
?●??在某些情況下,應用QR分解SVD可能會更快。
?●??利用矩陣的結構來計算更快(例如三角矩陣,Hermitian矩陣)。
?●??計算 SVD(X),然后獲得pinv(X) ,有時比單純計算pinv(X)更快
3. 為什么Statsmodels有時會慢得讓人無法忍受?
?●??對線性模型的置信度、預測區(qū)間,假設檢驗和擬合優(yōu)度檢驗進行了優(yōu)化。?●??盡可能使用 Einstein Notation和Hadamard Products。
?●??僅計算需要計算的內容(計算矩陣對角線,而不是整個矩陣)。
?●??修復Statsmodels在符號、速度、內存方面的問題和變量存儲上的缺陷。
4. 使用PyTorch的深度學習模塊
?●??使用PyTorch創(chuàng)建Scikit-Learn5. 代碼量減少20%+,更清晰的代碼
?●??盡可能使用 Decorators和Functions。?●??直觀的中層函數(shù)名稱,如(isTensor,isIterable)。
?●??通過hyperlearn.multiprocessing輕松處理并行
6. 訪問舊算法和令人興奮的新算法
?●??矩陣補全算法——非負最小二乘法,NNMF?●??批相似性隱含狄利克雷分布(BS-LDA)
?●??相關回歸(Correlation Regression)
?●??可行的廣義最小二乘法FGLS
?●??Outlier Tolerant Regression
?●??多維樣條回歸(Multidimensional Spline Regression)
?●??廣義MICE
?●??使用Uber的Pyro進行貝葉斯深度學習
原文發(fā)布時間為:2018-11-19
本文作者:Daniel Han-Chen
本文來自云棲社區(qū)合作伙伴新智元,了解相關信息可以關注“AI_era”。
原文鏈接:基于PyTorch重寫sklearn,《現(xiàn)代大數(shù)據(jù)算法》
總結
以上是生活随笔為你收集整理的基于PyTorch重写sklearn,《现代大数据算法》的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能免费学习!想了解的进来看看
- 下一篇: 小米第三季经调整利润29亿 获美图智能手