前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 SQL 也能玩转机器学习

使用 SQL 也能玩转机器学习

作者头像
哒呵呵
发布2021-11-02 14:46:52
6940
发布2021-11-02 14:46:52
举报
文章被收录于专栏:鸿的学习笔记鸿的学习笔记

最近看到一篇文章:https://rudderstack.com/blog/churn-prediction-with-bigqueryml,主要是讲使用 BigQueryML 进行流失预测。首先解释下 BigQueryML 是什么,简而言之,就是使用 SQL 也可以完成机器学习模型的构建。

利用 BigQuery ML,您可以使用标准 SQL 查询在 BigQuery 中创建和执行机器学习模型。BigQuery ML 让 SQL 专业人员能够使用现有的 SQL 工具和技能构建模型,从而实现机器学习的普及。使用 BigQuery ML,无需移动数据,加快了开发速度。

其实两年前就看到相关文章,比如阿里的SQLFlow,使用 SQL 实现机器学习,但是 Python 在机器学习领域的生态太强大了,虽然使用 SQL 要比 Python 的门槛更低,我依然觉得这个不会应用到生产环境或者实际使用,直到看到这篇文章使用 BigQueryML 进行流失预测。似乎现在有一部分用户开始玩 SQL 这一套了。

先看看这篇文章的案例是怎么实现机器学习的。首先是建立相关的数据集:

代码语言:javascript
复制
CREATE  TABLE FIRST_REV_DATE_TABLE AS 
SELECT 
       anonymous_id, rev_date as first_rev_date
 FROM (
       SELECT anonymous_id
             , DATE_TRUNC( 'd' , sent_at)作为rev_date
             , RANK () OVER ( PARTITION  by anonymous_id 
                              ORDER  BY sent_at DESC ) as  rank 
      FROM RUDDER.track
       WHERE   event = 'revenue' 
      ) WHERE 
rank = 1

然后就是建立模型了:

代码语言:javascript
复制
CREATE OR REPLACE MODEL `rudder_project..tbl_create_model_1`
OPTIONS ( 
model_type='LOGISTIC_REG'
,auto_class_weights=TRUE
,data_split_method='NO_SPLIT'
,input_label_cols=['churn']
,max_iterations = 12) 
AS 
SELECT *
FROM `rudder_project..tbl_player_reg` 
where player_pool = "training" and high_value = 'false'

性能评估使用的SQL是:

代码语言:javascript
复制
SELECT * 
 FROM ML.EVALUATE 
( MODEL `rudder_project..tbl_create_model_1` , 
( SELECT *
  FROM `rudder_project..tbl_player_reg` WHERE player_pool = "test" and high_value = 'false' 
) 
)

以及最后的预测环节:

代码语言:javascript
复制
SELECT * FROM  (
SELECT  u as user_id, predicted_churn 
FROM  ML.PREDICT
(
MODEL `rudder_project..tbl_create_model_1`,
                (
    SELECT *
    FROM `rudder_project..tbl_player_reg`
    WHERE high_value = 'true'
)
, STRUCT(0.5 AS threshold)
) order by predicted_churn
)

在整个流程里,只有SQL语句,对于用户而言,我只要了解有哪些模型、模型的大致原理是怎么的、模型的应用场景和有哪些优势和劣势,至于模型是怎么实现的,用户可以不用再关心了。甚至都不需要繁琐的完成不同数据源之间的传输工作了。

如果这种方式真的能成熟的话,做业务分析的同事也是可以用 SQL 完成机器学习了,而不需要拜托专门的做算法的同学去完成建模分析,对于企业而言,其实大部分场景只需要简单的数据分析和挖掘模型就行了,使用 SQL 完成机器学习模型能真的应用到生产环境,那就是一件突破性的事。

因为我只是看了文章,调研下相关资料,没有实际用过,细节也就不太清楚了。感兴趣的读者可以参考阅读下面的文章:

  1. https://rudderstack.com/blog/churn-prediction-with-bigqueryml
  2. https://mp.weixin.qq.com/s?__biz=MzIwNDI0ODY1OA==&mid=2655930118&idx=1&sn=73a3e3c63af41be0f81e025bb324bbce&chksm=8d79e43bba0e6d2d25a0bec8874c7a360cdf5349060f797942ebc71e843209547be902459d04&token=1059178145&lang=zh_CN&scene=21#wechat_redirect
  3. https://www.infoq.cn/article/vlvqc68h2mt-028lh68c
  4. https://cloud.google.com/bigquery-ml/docs/introduction?hl=zh-cn
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档