在之前的文章中,我们使用公共数据集向大家演示了如何通过 BigQuery & DataStudio 进行数据分析与可视化(点此复习),今天我们还是要把“灯光”给到 BigQuery 。
大家都知道 BigQuery 作为 Google Cloud Platform 重要的数仓产品,主要聚焦于数据分析,技术来源于 Google 的 Dremel 、无索引、Severless 技术,支持动态调整计算与调整资源。
此外,BigQuery 的存储按照非压缩数据量、查询使用量计算,非常易于使用,且无需 DBA(Database Administrator)。
机器学习与深度学习技术一直是大数据时代的一大研究热点,但是一旦说到机器学习与深度学习,一般来说都可能要经历一段非常枯燥的流程,比如首先需要导出数据。
-如果这个时候我们技术采用 Excel 建模,并且有 TB 级的数据,那么是没有办法全部导出的,只能选取少量的样本导入 Excel 进行建模分析;
-如果我们想要使用 TensorFlow ,那么我们可能需要专业人员花费很长时间进行数据迭代。
而 BigQuery ML 在这个方面可以大大缩短数据的迭代时间,加快开发速度。
这是因为我们不必将 BigQuery 中的数据传输出来,只需要两行 SQL 代码就可以利用 BigQuery 进行模型构建,并且可以自动调节学习速率、自动将数据分拆为训练和测试数据、完成缺失值插补、数据特征标准化、字符串独热编码和类别不平衡处理等一系列操作,而这些任务一般都是需要数据科学家来做的。
BigQuery ML 可以运用到几乎所有的垂直行业,包括营销、零售、IOT 和媒体游戏等等。如果您已经使用了 Tableau 、Looker 等平台,那么您可以直接将其与 BigQuery 进行集成。
当然, BigQuery 支持的机器学习模型非常之多,几乎可以满足各个场景下的使用需求。
-比如用于预测的线性回归模型、用于分类的二元逻辑回归和多类别逻辑回归、用于数据分段的K-means 聚类、用于执行时间序列预测的时间序列模型等等······
下面我们通过来看一段代码示例 —— 通过 CREATE MODEL 语句 进行模型创建:
CREATE MODEL `mydataset.mymodel`
OPTIONS
( model_type='linear_reg',
ls_init_learn_rate=0.15,
l1_reg=1,
max_iterations=5 ) AS
SELECT
column1,
column2,
column3,
label
FROM `mydataset.mytable`
WHERE column4 < 10
创建模型后,我们还可以使用 ML.EVALUATE 函数对线性回归模型(或逻辑回归模型)进行评估,预测模型应用于数据集的结果。
-如下方示例为对表 mytable 的两个模型 mymodel1 和 mymodel2 进行预测对比。
label,
predicted_label1,
predicted_label AS predicted_label2
FROM
ML.PREDICT(MODEL `mydataset.mymodel2`,
(
SELECT * REPLACE(predicted_label AS predicted_label1 )
FROM
ML.PREDICT(MODEL `mydataset.mymodel1`,
TABLE `mydataset.mytable`)))
此次示例比较简单,通过比较我们可以直观的看出哪一个模型是的预测结果更接近真实值,以便帮助我们进行下一步的数据分析处理。