加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架

发布时间:2019-09-27 02:51:12 所属栏目:建站 来源:机器之心编译
导读:在本文中,Ibotta(美国版「返利网」)呆板进修和数据科学司理 Evan Harris 先容了他们的开源项目 sk-dist。这是一个分派 scikit-learn 元预计器的 Spark 通用框架,它团结了 Spark 和 scikit-learn 中的元素,可以将 sklearn 的逊?з度晋升 100 多倍。
副问题[/!--empirenews.page--]

在本文中,Ibotta(美国版「返利网」)呆板进修和数据科学司理 Evan Harris 先容了他们的开源项目 sk-dist。这是一个分派 scikit-learn 元预计器的 Spark 通用框架,它团结了 Spark 和 scikit-learn 中的元素,可以将 sklearn 的逊?з度晋升 100 多倍。

在 Ibotta,我们实习了很多呆板进修模子。这些模子为我们的保举体系、搜刮引擎、订价优化引擎、数据质量等提供了支持,在与我们的移动 app 互动的同时为数百万用户做出猜测。

固然我们行使 Spark 举办大量的数据处理赏罚,但我们首选的呆板进修框架是 scikit-learn。跟着计较本钱越来越低以及呆板进修办理方案的上市时刻越来越重要,我们已经踏出了加快模子实习的一步。个中一个办理方案是将 Spark 和 scikit-learn 中的元素组合,酿成我们本身的融合办理方案。

项目地点:https://github.com/Ibotta/sk-dist

作甚 sk-dist

我们很兴奋推出我们的开源项目 sk-dist。该项目标方针是提供一个分派 scikit-learn 元预计器的 Spark 通用框架。元预计器的应用包罗决定树荟萃(随机丛林和 extra randomized trees)、超参数调优(网格搜刮和随机搜刮)和多类技能(一对多和一对一)。

将sklearn训练速度提升100多倍,美国「返利网」开源sk-dist框架

我们的首要目标是弥补传统呆板进修模子漫衍选择空间的空缺。在神经收集和深度进修的空间之外,我们发明实习模子的大部门计较时刻并未花在单个数据集上的单个模子实习上,而是花在用网格搜刮或集成等元预计器在数据集的多次迭代中实习模子的多次迭代上。

实例

以手写数字数据集为例。我们编码了手写数字的图像以便于分类。我们可以操作一台呆板在有 1797 笔记录的数据集上快速实习一个支持向量机,只需不到一秒。可是,超参数调优必要在实习数据的差异子集长举办大量实习。

如下图所示,我们已经构建了一个参数网格,总共必要 1050 个实习项。在一个拥有 100 多个焦点的 Spark 集群上行使 sk-dist 仅需 3.4 秒。这项事变的总使命时刻是 7.2 分钟,这意味着在一台没有并行化的呆板上实习必要这么长的时刻。

  1. import timefrom sklearn import datasets, svm 
  2. from skdist.distribute.search import DistGridSearchCV 
  3. from pyspark.sql import SparkSession # instantiate spark session 
  4. spark = (    
  5.     SparkSession     
  6.     .builder     
  7.     .getOrCreate()     
  8.     ) 
  9. sc = spark.sparkContext  
  10.  
  11. # the digits dataset 
  12. digits = datasets.load_digits() 
  13. X = digits["data"] 
  14. y = digits["target"] 
  15.  
  16. # create a classifier: a support vector classifier 
  17. classifier = svm.SVC() 
  18. param_grid = { 
  19.     "C": [0.01, 0.01, 0.1, 1.0, 10.0, 20.0, 50.0],  
  20.     "gamma": ["scale", "auto", 0.001, 0.01, 0.1],  
  21.     "kernel": ["rbf", "poly", "sigmoid"] 
  22.     } 
  23. scoring = "f1_weighted" 
  24. cv = 10 
  25.  
  26. # hyperparameter optimization 
  27. start = time.time() 
  28. model = DistGridSearchCV(     
  29.     classifier, param_grid,      
  30.     sc=sc, cv=cv, scoring=scoring, 
  31.     verbose=True     
  32.     ) 
  33. model.fit(X,y) 
  34. print("Train time: {0}".format(time.time() - start)) 
  35. print("Best score: {0}".format(model.best_score_)) 
  36.  
  37.  
  38. ------------------------------ 
  39. Spark context found; running with spark 
  40. Fitting 10 folds for each of 105 candidates, totalling 1050 fits 
  41. Train time: 3.380601406097412 
  42. Best score: 0.981450024203508 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读