框架

来源:互联网 发布:海关数据开发客户 编辑:程序博客网 时间:2024/05/20 17:28

目前个人的构思如下:

(红色部分未实现,或有问题)
将ml框架分为: 1. getdata 2 featureEngineering 3. train and evaluation 4 push para 这几个模块. 其中,在进行实验时可能对feature进行不同的feature进行不同的个性化的处理验证效果好坏, 例如: 网址:www.baidu.com 要改为 分类型标签 如是百度设为1 不是百度设为2. 这就需要对 featureEngineering 进行extention 和override
项目数据通过HDFS存储, 算法使用分布式算法,如spark自带mllib库中的算法, 通过配置config文件可以设置每个不同项目的hql数据获取,提取特征,label.以及不同的train方法. 根据不同的配置将每个模块组合成流水线.减少每个项目的二次开发和增加代码复用性.
主要流程为:
getdata: 读取hql文件并根据项目设置config读取项目信息如id等,并解析读取到的hql,将以及project_id,day_id替换.SparkQL读取为DATAFRAME.存储到hdfs. 此处读取要验证hdfs是否已经有当日文件,可以覆盖或跳过.
featureEngineering:从HDFS读取上一步获取的文件并进行数据处理,需从config中读取需要读取winprice label 和特征的名称, winprice和label必须在前.处理后存入hdfs.格式为 winprice label requesttime:weekday:6 requesttime:hour:6 …..
hashing: 读取上一步数据murmurhash3对 特征 requesttime:weekday:6requesttime:hour:6 ….. 进行hash, 得到: winprice label index1:1 index2:1 …
train: 训练分为evaluation和train , evaluation 即对model进行调优计算auc等, train直接训练,并将weights 和 model存储.
getsegments :此步骤要将训练集进行预测并与winprice合并,按照预测出的概率进行排序,进行平均地分段,并将分段中的winprice求平均值.最终得到分段, 格式为 (0.001,0.003]1: 2.4 区间为概率区间,后面的1表示次分段开启,最后的数字为此分段的出价.
按照以上构想尝试开发简单的代码 , 大概完成了65%
SVN地址: (idea sbt scala2.10.4 spark 1.5*环境下编写)

项目地址:

下图中的:红色模块未实现和问题部分:
1, hashing 部分使用的是scala自带的murmurhash3 与线上比较的hash不同. 需要查看线上的hash方法有何改动
2. 其他红色部分未实现
3. GetData: 文件名为GetData.scala
FeatureEngineering :FeatureEngineering.scala
train: train_LR 目前构想是不同的方法写不同的类, 如逻辑回归为类名为train_LR
4. push: 需要push的方法全部写在工具类UtilForData中

这里写图片描述

0 0
原创粉丝点击