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等多种算法联系在一起,可以说是机器学习中最重要的算法了。

提速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进行贝叶斯深度学习

原文发布时间为:2018-11-19

本文作者:Daniel Han-Chen

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。

原文链接:基于PyTorch重写sklearn,《现代大数据算法》

基于PyTorch重写sklearn,《现代大数据算法》相关推荐

  1. 文献记录(part75)--基于最大平均熵率的大数据关联聚类算法

    学习笔记,仅供参考,有错必纠 基于最大平均熵率的大数据关联聚类算法 摘要 聚类是数据挖掘和机器学习中的基本任务之一 . 传统聚类方法由于其设计中对簇结构假设的限制 , 导致算法在不符合其假设的数据集上 ...

  2. 漫画趣解大数据算法建模:买瓜

    大数据开发如何转型算法? 算法建模主要做什么?调参为什么玄学? 如何通俗理解算法建模过程.. 夕阳下的村东头,有一人来买瓜. 1 引子(买瓜) 忙碌的一天刚刚结束,村里的小张就匆匆的骑上车,准备买个西 ...

  3. 【项目实战课】人人免费可学!基于Pytorch的图像分类简单任务数据增强实战

    欢迎大家来到我们的项目实战课,本期内容是<基于Pytorch的图像分类简单任务数据增强实战>.所谓项目实战课,就是以简单的原理回顾+详细的项目实战的模式,针对具体的某一个主题,进行代码级的 ...

  4. 《大数据算法》一1.2 大数据算法

    本节书摘来华章计算机<大数据算法>一书中的第1章 ,第1.2节,王宏志 编著, 更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.2 大数据算法 这一节我们概 ...

  5. 《大数据》2015年第3期“网络大数据专题”——基于特征学习的文本大数据内容理解及其发展趋势...

    基于特征学习的文本大数据内容理解及其发展趋势 袁书寒,向 阳,鄂世嘉 (同济大学计算机科学与技术系 上海 201804) 摘要:大数据中蕴含着重要的价值信息,文本大数据作为大数据的重要组成部分,是人类 ...

  6. 大数据算法_【中科大】大数据算法(2020年春季)

    算法与理论是计算机科学的核心领域之一.随着大数据时代的来临,传统的算法理论已经不能很好地解决人工智能. 物联网.工业制造等领域所遇到的实际问题.本门课程主要介绍基于大数据的新型算法技术,如随机采样.数 ...

  7. 大数据算法培养计划!

    立春节气已经过去了一个多月,但职场却迎来了真正的就业寒冬."旺季不旺" ,职场人期待在年后招聘季实现的跳槽.涨薪.转行,只能被暂时搁置. 根据智联招聘最新发布的调研数据来看:春节后 ...

  8. 大数据算法_大数据算法解析,如何创建用户画像实现千人千面?

    " 一面科技,一面生活 技术与社交电商的完美融合 打开了全新的幸福视界 " 幸福蜜糖  2020·11·5 大数据算法无处不在 "处在如今的时代中,数据越来越值钱,如何 ...

  9. 大数据算法—大数据算法概述

    大数据--当下人人津津乐道的话题.然而对于大数据的公认定义以及完美体系还没有完全诞生,但大街小巷已遍布云计算.大数据,这些领域的经典案例更是层出不穷.由于认知的有限,就不继续发表拙见了.只是因为很喜欢 ...

最新文章

  1. redis 主从配置_Laravel 使用Redis缓存集群,主从集群配置就这么简单?
  2. linux删除指定端口的进程
  3. linux命令cp命令行参数,linux命令之cp命令参数及用法详解
  4. 处理iPhone5加长屏幕的4种方法
  5. 中科院开发者公开道歉:将木兰编程语言夸大为“完全自主开发”
  6. 终于解决了贴吧手机版的一个重大BUG
  7. 一封遗失信件成就的科技亿万富翁
  8. [Server] HP DL380 G6更新esxi6.0 SATA 硬盘掉线问题
  9. C语言strcmp函数用法
  10. 解决mongodb 取出时是 UTC时间问题
  11. 3.Tom猫的实现(帧动画播放)
  12. 哪个求职App最容易找到好工作?2019在线求职招聘市场研究报告
  13. C++常函数的用法详解
  14. pandas中的窗口对象(窗口函数)
  15. stm32在官网下载标准库
  16. 天天学JAVA-JAVA基础(2)
  17. php短网址生成代码,一个php短网址的生成代码(仿微博短网址)
  18. 多项式插值与牛顿差商
  19. 【浏览器】1022- 47 张图带你走进浏览器的世界!
  20. 【指纹识别】基于模板匹配算法实现指纹录入打卡系统附matlab代码

热门文章

  1. Redis数据库(二)——Redis高可用、持久化及性能管理
  2. Jsp表单提交数据乱码问题
  3. 没有互联网,我不会写程序了
  4. JSP关于用户安全退出的问题
  5. synchronized原理_synchronized关键字的作用、原理以及锁优化
  6. websocket中发生数据丢失_什么是WebSocket,它与HTTP有何不同?
  7. layui移动端适配_移动端适配方案
  8. cpu漏洞linux修复,【图片】为什么linux mint上cpu漏洞直到现在也没完全修复?_linux吧_百度贴吧...
  9. oracle 截取时间至小时,如何在pandas中构造/取整到小时的本地化日期时间列
  10. fcn网络训练代码_用FCN做分割