SQL脚本实现算法模型的训练,预测

作者: 祝威廉 | 来源:发表于2018-01-13 13:17 被阅读1090次

前言

搜索团队正好需要计算一些词汇的相似性,这个用Word2Vec是很方便的。于是我立马安排算法团队帮个忙弄下。但回头想想,因为这么点事,打断了算法手头的工作,这简直不能忍。

由于我司内部已经在使用基于StreamingPro的Skone平台,通过对SQL做enhance,已经能实现类似hive的脚本引擎了。如果上面的word2vec能直接也用类似sql的语言完成,那开发只要打开web,写几条SQL就自己完成了。

这个时候就给自己定了个目标:简单的算法,研发可以通过这个feature自己完成,尽可能减少对正在做攻关的算法团队的打搅。

使用演示

详细实现代码参看xql-dsl 分支。首先我们需要启动StreamingPro作为一个sql server ,如何启动
现在你可以通过rest接口提交SQL脚本给该服务了。

首先,我们加载一个csv文件:

load csv.`/tmp/test.csv` options header="True" as ct;

csv内容如下:

body
a b c
a d m
j d c
a b c
b b c

这个csv文件被映射为表名ct。只有一个字段body。现在我们需要对body字段进行切分,这个也可以通过sql来完成:

select split(body," ") as words from ct as new_ct;

新表叫new_ct,现在,可以开始训练了,把new_ct喂给word2vec即可:

train new_ct as word2vec.`/tmp/w2v_model` where inputCol="words";

word2vec表示算法名, /tmp/w2v_model 则表示把训练好的模型放在哪。where 后面是模型参数。

最后,我们注册一个sql函数:

register word2vec.`/tmp/w2v_model` as w2v_predict;

其中w2v_predict是自定义函数名。这样,我们在sql里就可以用这个函数了。我们来用一把:

select words[0] as w, w2v_predict(words[0]) as v from new_ct as result;

给一个词,就可以拿到这个词的向量了。

我们把它保存成json格式作为结果:

save result as csv.`/tmp/result`;
结果是这样的: WX20180113-131009@2x.png

最后完整的脚本如下:

load csv.`/tmp/test.csv` options header="True" as ct;
select split(body," ") as words from ct as new_ct;
train new_ct as word2vec.`/tmp/w2v_model` where inputCol="words";
register word2vec.`/tmp/w2v_model` as w2v_predict;
select words[0] as w, w2v_predict(words[0]) as v from new_ct as result;
save overwrite result as json.`/tmp/result`;

大家可以用postman测试:


WX20180113-131211@2x.png

支持算法(不断更新)

  • NaiveBayes
  • RandomForest
  • GBTRegressor
  • LDA
  • KMeans
  • FPGrowth
  • GBTs
  • LSVM

总结

通过将机器学习算法SQL脚本化,很好的衔接了数据处理和训练,预测。同时服务化很好的解决了环境依赖问题。当然终究是没法取代写代码,但是简单的任务就可以用简单的方式解决了。

相关文章

  • SQL脚本实现算法模型的训练,预测

    前言 搜索团队正好需要计算一些词汇的相似性,这个用Word2Vec是很方便的。于是我立马安排算法团队帮个忙弄下。但...

  • 全面解析并实现逻辑回归(Python)

    本文以模型、学习目标、优化算法的角度解析逻辑回归(LR)模型,并以Python从头实现LR训练及预测。 一、逻辑回...

  • ImageAI:自定义预测模型训练

    ImageAI:自定义预测模型训练 ImageAI 提供4种不同的算法及模型来执行自定义预测模型训练,通过以下简单...

  • 客户分群-聚类算法

    机器学习算法分类 有监督学习 有训练样本 分类模型 预测模型 无监督学习 无训练样本 关联模型 聚类模型 聚类算法...

  • 统计学习方法

    概论 1.数据->特征->模型->知识->分析与预测 2.训练数据集->模型->策略->算法->最优模型->分析与...

  • 第111章 SQL函数 PREDICT

    [toc] 第111章 SQL函数 PREDICT IntegratedML 函数,它应用指定的训练模型来预测提供...

  • 预测分析研究

    预测算法用java实现 数学建模spss时间预测 Arima模型分析预测 基于R语言的上海房价预测 R学习日记——...

  • Java调用Keras、Tensorflow模型

    实现python离线训练模型,Java在线预测部署。查看原文 目前深度学习主流使用python训练自己的模型,有非...

  • MLSQL 对Python的支持之路

    前言 Python是做机器学习框架一定要支持的。MLSQL很早就支持集成Python脚本做模型的训练和预测。 训练...

  • 神经网络识别手写优化(三)

    前言 本文是为了实现存储自己训练好的模型 结构和参数,以及加载训练好的模型进行预测。 代码 保存 加载

网友评论

本文标题:SQL脚本实现算法模型的训练,预测

本文链接:https://www.haomeiwen.com/subject/xudcoxtx.html