首页 > 其他分享 >Spark技术在京东智能供应链预测的应用——按照业务进行划分,然后利用scikit learn进行单机训练并预测

Spark技术在京东智能供应链预测的应用——按照业务进行划分,然后利用scikit learn进行单机训练并预测

时间:2023-06-01 14:34:04浏览次数:51  
标签:Python 分区 scikit 数据量 learn 品类 数据 Spark

3.3 Spark在预测核心层的应用

我们使用Spark SQL和Spark RDD相结合的方式来编写程序,对于一般的数据处理,我们使用Spark的方式与其他无异,但是对于模型训练、预测这些需要调用算法接口的逻辑就需要考虑一下并行化的问题了。我们平均一个训练任务在一天处理的数据量大约在500G左右,虽然数据规模不是特别的庞大,但是Python算法包提供的算法都是单进程执行。我们计算过,如果使用一台机器训练全部品类数据需要一个星期的时间,这是无法接收的,所以我们需要借助Spark这种分布式并行计算框架来将计算分摊到多个节点上实现并行化处理。

我们实现的方法很简单,首先需要在集群的每个节点上安装所需的全部Python包,然后在编写Spark程序时考虑通过某种规则将数据分区,比如按品类维度,通过groupByKey操作将数据重新分区,每一个分区是一个样本集合并进行独立的训练,以此达到并行化。流程如下图所示:

伪码如下:

repartitionBy方法即设置一个重分区的逻辑返回(K,V)结构RDD,train方法是训练数据,在train方法里面会调用Python算法包接口。saveAsPickleFile是Spark Python独有的一个Action操作,支持将RDD保存成序列化后的sequnceFile格式的文件,在序列化过程中会以10个一批的方式进行处理,保存模型文件非常适合。

虽然原理简单,但存在着一个难点,即以什么样的规则进行分区,key应该如何设置。为了解决这个问题我们需要考虑几个方面,第一就是哪些数据应该被聚合到一起进行训练,第二就是如何避免数据倾斜。

针对第一个问题我们做了如下几点考虑:

  • 被分在一个分区的数据要有一定的相似性,这样训练的效果才会更好,比如按品类分区就是个典型例子。
  • 分析商品的特性,根据特性的不同选择不同的模型,例如高销商品和低销商品的预测模型是不一样的,即使是同一模型使用的特征也可能不同,比如对促销敏感的商品就需要更多与促销相关特征,相同模型相同特征的商品应倾向于分在一个分区中。

针对第二个问题我们采用了如下的方式解决:

  • 对于数据量过大的分区进行随机抽样选取。
  • 对于数据量过大的分区还可以做二次拆分,比如图书小说这个品类数据量明显大于其他品类,于是就可以分析小说品类下的子品类数据量分布情况,并将子品类合并成新的几个分区。
  • 对于数据量过小这种情况则需要考虑进行几个分区数据的合并处理。

总之对于后两种处理方式可以单独通过一个Spark任务定期运行,并将这种分区规则保存。

 


标签:Python,分区,scikit,数据量,learn,品类,数据,Spark
From: https://blog.51cto.com/u_11908275/6393813

相关文章

  • python spark 随机森林入门demo
    class pyspark.mllib.tree.RandomForest[source]Learningalgorithmforarandomforestmodelforclassificationorregression.Newinversion1.2.0.supportedFeatureSubsetStrategies =('auto','all','sqrt','log2',......
  • python spark 决策树 入门demo
    Refertothe DecisionTree and DecisionTreeModel formoredetailsontheAPI.frompyspark.mllib.treeimportDecisionTree,DecisionTreeModelfrompyspark.mllib.utilimportMLUtils#LoadandparsethedatafileintoanRDDofLabeledPoint.data=MLUtils.l......
  • python spark 求解最大 最小 平均
    rdd=sc.parallelizeDoubles(testData);Nowwe’llcalculatethemeanofourdataset. 1LOGGER.info("Mean:"+rdd.mean());Therearesimilarmethodsforotherstatisticsoperationsuchasmax,standarddeviation,…etc.Everytimeoneofthismethodisin......
  • python spark kmeans demo
    官方的demofromnumpyimportarrayfrommathimportsqrtfrompysparkimportSparkContextfrompyspark.mllib.clusteringimportKMeans,KMeansModelsc=SparkContext(appName="clusteringExample")#Loadandparsethedatadata=sc.textFile("/......
  • spark Bisecting k-means(二分K均值算法)
    Bisectingk-means(二分K均值算法)    二分k均值(bisectingk-means)是一种层次聚类方法,算法的主要思想是:首先将所有点作为一个簇,然后将该簇一分为二。之后选择能最大程度降低聚类代价函数(也就是误差平方和)的簇划分为两个簇。以此进行下去,直到簇的数目等于用户给定的数目K为止。......
  • spark 常用参数和默认配置
    常用的Spark任务参数及其作用:spark.driver.memory:设置driver进程使用的内存大小,默认为1g。spark.executor.memory:设置每个executor进程使用的内存大小,默认为1g。spark.executor.cores:设置每个executor进程使用的CPU核数,默认为1。spark.default.parallelism:设置RDD的默......
  • sparkSQL原理和使用——一般在生产中,基本都是使用hive做数据仓库存储数据,然后用spark
    一、sparkSQL概述1.1什么是sparkSQLSparkSQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。类似于hive的作用。1.2sparkSQL的特点1、容易集成:安装Spark的时候,已经集成好了。不需要单独安装。2、统一的数据访问方......
  • sklearn 绘制roc曲线
    Machinelearning.简单绘制ROC曲线ROC曲线,又可以称之为接受者操作特征曲线(ReceiverOperatingCharacteristicCurve),ROC曲线下的面积,称为AUC(AreaUnderCureve),可以衡量评估二分类模型的分类好坏。本文视图使用Python中的Matplotlib模块来进行简单的ROC曲线的画法:准备工作#查看m......
  • anaconda tensorflow tflearn 自动安装脚本 anaconda使用-b可以非交互式安装
    install_dir=/usr/local/anaconda3DIR="$(cd"$(dirname"${BASH_SOURCE[0]}")"&&pwd)"#scriptdirbash$DIR/Anaconda3-5.0.1-Linux-x86_64.sh-b-p$install_dir$install_dir/bin/condainstall--use-local$DIR/mo......
  • Spark GraphX 的数据可视化
    概述SparkGraphX本身并不提供可视化的支持,我们通过第三方库GraphStream和Breeze来实现这一目标详细Spark和GraphX对并不提供对数据可视化的支持,它们所关注的是数据处理。但是,一图胜千言,尤其是在数据分析时。接下来,我们构建一个可视化分析图的Sp......