- SQL机器学习库MADlib技术解析
- 王雪迎
- 1605字
- 2020-08-28 21:11:04
前言
从2016年AlphaGo在人机大战中胜出以来,AI(Artificial Intelligence,人工智能)已然成为时下最热门的概念之一。似乎所有人嘴边都挂着“AI”一词,大批程序员跃跃欲试,转向研究这种“全新”的技术。人工智能的研究历史有着一条从以“推理”为重点,到以“知识”为重点,再到以“学习”为重点的自然、清晰的脉络。显然,机器学习是实现人工智能的一条途径,即以机器学习为手段解决人工智能中的现实问题。在实践过程中,大多数人工智能处理任务其实是用机器学习的方式完成的。机器学习可以用程序和算法自动学习,只要被设计好,程序就可以进行自我优化。同时,机器学习需要一定数量的训练数据,用于构建来自过往经验的知识(通常指训练后形成的数学模型)。机器学习目前在实践中最重要的是预测功能。比如训练结束后,现在有一个新的数据集X,需要预测其分类,机器学习算法会根据这个新数据与训练后形成的知识相匹配,然后将这个数据集X分类到某类C去。推荐系统则是另一个比较常见的机器学习使用场景。
经过三十多年的发展,机器学习已成为一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。很明显,自己开发机器学习算法需要具有极强的数学功底。幸运的是,很多软件包提供绝大多数常用算法,无论是侧重于统计的SAS、SPSS还是流行的MATLAB、R、Python、TensorFlow等。它们都是面向程序员的系统或语言,重点在于由程序员自己利用系统提供的基本计算方法或函数,通过编程的方式完成实际所需的分析模型。
作为一名数据库开发人员或DBA,当面对聚类分析或主成分分析等问题时可能会一筹莫展。原因很简单,用经典SQL语言实现这类复杂模型基本是不可能的。现在,DBA利用MADlib,只需使用SQL查询就能实现简单的机器学习,这也正是编写本书的初衷。MADlib与其他机器学习工具具有完全不同的设计理念。它不是面向程序员的,而是面向数据库开发人员或DBA的,是基于SQL的大数据机器学习库。MADlib将SQL的简单易用性与机器学习的复杂算法相结合,充分利用了两者的优势和特点。对于广大传统数据库应用技术人员来说,学习和从事机器学习工作的门槛将大大降低。对用户而言,MADlib提供了可在SQL查询语句中调用的函数,不仅包括基本的线性代数运算和统计函数,还提供了常用的、现成的机器学习模型函数,实现了分类、聚类、关联、回归、预测、评估等应用中的常见算法。用户不需要深入了解算法的程序实现细节,只要搞清楚各函数中相关参数的含义、提供正确的入参并能够理解和解释函数的输出结果即可。
一年来,我一直在撰写MADlib相关的文章和博客,并在利用MADlib实现机器学习算法上做了一些基础的技术实践。本书就是对上述工作的系统归纳与总结。全书共分11章,从MADlib的基本概念入手,首先介绍MADlib的工作原理、执行流程、基础架构、支持的模型与功能,以及MADlib的安装与卸载;然后详细解析MADlib各种模型的具体用法,其中包括数据类型、数据转换、数据探索、回归、时间序列分析、分类、聚类、关联规则、图算法、模型评估十个大类(每个大类用一章的篇幅,从背景知识、函数用法、应用示例三方面进行详细说明)。本书中的所有讨论都以MADlib 1.10版本为基础,重点在于说明MADlib提供了哪些模块算法和函数、用途,以及如何在SQL中调用。由于本书偏重应用,因此我们对每种算法相关的数学概念都只是浅尝辄止,并没有进行详细的数学推导。
本书适合数据库应用开发或管理人员、数据挖掘工程师、数据分析师或其他机器学习类技术人员阅读,也适合高等院校和培训学校相关专业的师生教学参考。
在本书编写过程中,得到了很多人的帮助与支持。感谢CSDN提供的技术分享平台,为我提供了一个将博客文章整理成书的机会。感谢优贝在线的所有同事,特别是技术部的同事,他们在工作中的鼎力相助,使我有更多的时间投入到本书的写作中。最后,感谢家人对我一如既往地支持。
因为水平有限,疏漏之处在所难免,希望广大读者批评指正。
源代码下载
本书配套的代码及相关资料可以扫描下面的二维码获取:
如果下载有问题,请联系booksaga@163.com,邮件主题为“MADlib技术解析”。
著者
2018年11月