MySQL 是最流行的开源数据库,开发人员使用它来构建各个领域的应用程序。开发人员通常需要将机器学习应用于存储在数据库中的数据,为此,他们需要从数据库中提取数据,然后使用机器学习库。 MySQL HeatWave 是 Oracle 为 MySQL 数据库提供的完全托管服务,并内置了对机器学习 (HeatWave ML) 的支持。 HeatWave ML 完全自动化了训练模型、生成推理和调用解释的过程,所有这些都无需从数据库中提取数据或模型。用户可以使用熟悉的 SQL 接口来调用所有机器学习功能。 HeatWave ML 利用 Oracle AutoML 自动生成模型,它取代了数据科学家原本需要执行的复杂且耗时的任务,例如数据预处理、算法选择、特征选择和超参数优化。
在以下部分中,我们将向您展示如何使用具有简单 SQL 接口的 HeatWave ML。下面的示例基于此处提供的人口普查数据集,可用于预测个人年收入是否超过 5 万。
在以下部分中,我们将展示如何使用 HeatWave ML API 来训练、预测和解释模型。为了使用 HeatWave ML,用户需要提供一个 MySQL HeatWave 实例
训练模型
ML_TRAIN 生成经过训练的模型和解释器模型(可以提供对模型行为的洞察),并将两者存储到模型目录中。训练模型所需的时间取决于用户数据的大小(几分钟到几小时)、HeatWave 节点的数量以及 ML_TRAIN 接口中的一些用户定义的选项。
mysql> CALL sys.ML_TRAIN('mlcorpus.census_train', 'revenue', JSON_OBJECT('task', 'classification'), @model);
查询正常,0 行受影响(2 分 31.36 秒)
上面显示了在人口普查数据集上训练分类模型,大约需要 1 分 31 秒。
连续预测
ML_PREDICT_ROW 是一个存储函数,它使用上述训练模型对单行数据运行内联推理。用户将输入的数据行作为 JSON 提供,以对其进行预测。在调用 ML_PREDICT_ROW 之前,必须调用 ML_MODEL_LOAD,并且加载的模型的训练列必须与 ML_PREDICT_ROW 输入列匹配。
mysql> CALL sys.ML_MODEL_LOAD(@model, NULL);
Query OK, 0 rows affected (1.12 sec)
mysql> SELECT sys.ML_PREDICT_ROW('{"index": 1,"age": 38,"workclass": "Private","fnlwgt": 89814,"education": "HS-grad","education-num": 9,"marital-status": "Married-civ-spouse","occupation": "Farming-fishing","relationship": "Husband","race": "White","sex": "Male","capital-gain": 0,"capital-loss": 0,"hours-per-week": 50,"native-country": "United-States"}', @model);
+---------------------------------------------------------------------------+
{"age": 38, "sex": "Male", "race": "White", "index": 1, "fnlwgt": 89814, "education": "HS-grad", "workclass": "Private", "Prediction": "<=50K", "occupation": "Farming-fishing", "capital-gain": 0, "capital-loss": 0, "relationship": "Husband", "education-num": 9, "hours-per-week": 50, "marital-status": "Married-civ-spouse", "native-country": "United-States"}
1 row in set (2.36 sec)
上图显示模型预测工资在2.36秒内低于50k
解释预测
ML_EXPLAIN_ROW 是一个存储函数,它为用户提供了一个界面,可以从单行输入数据创建内嵌解释。 解释通过解释哪些特征对模型最重要以及哪些特征对个体预测贡献最大来帮助用户执行知识发现。 解释是通过权重传达的,权重显示每个特征对最终预测的影响程度——值越高意味着影响越大。
mysql> SELECT sys.ML_EXPLAIN_ROW('{"index": 1,"age": 38,"workclass": "Private","fnlwgt": 89814,"education": "HS-grad","education-num": 9,"marital-status": "Married-civ-spouse","occupation": "Farming-fishing","relationship": "Husband","race": "White","sex": "Male","capital-gain": 0,"capital-loss": 0,"hours-per-week": 50,"native-country": "United-States"}', @model);
+---------------------------------------------------------------------------------+
| {"age": 38, "sex": "Male", "race": "White", "index": 1, "fnlwgt": 89814, "education": "HS-grad", "workclass": "Private", "Prediction": "<=50K", "occupation": "Farming-fishing", "capital-gain": 0, "capital-loss": 0, "relationship": "Husband", "education-num": 9, "hours-per-week": 50, "marital-status": "Married-civ-spouse", "native-country": "United-States", "age_attribution": -0.2234, "sex_attribution": -0.0241, "race_attribution": -0.0011, "index_attribution": 0.0, "fnlwgt_attribution": 0.003, "education_attribution": 0.0, "workclass_attribution": -0.0126, "occupation_attribution": 0.1111, "capital-gain_attribution": 0.0, "capital-loss_attribution": 0.0, "relationship_attribution": -0.0928, "education-num_attribution": -0.1305, "hours-per-week_attribution": -0.1806, "marital-status_attribution": -0.0676, "native-country_attribution": 0.0001} |
1 row in set (4.41 sec)
上面的解释表明,职业,权重为 0.1111 是一个重要的属性。
计算模型质量
ML_SCORE 通过对给定的测试数据生成预测并将其与真实标签进行比较来计算模型质量。 ML_SCORE API 需要一个字符串参数来指定要使用的评分指标。 HeatWave ML 支持标准 scikit-learn 评分指标,如此处所述,用于分类和回归 -
https://dev.mysql.com/doc/heatwave/en/hwml-ml-score.html
Query OK, 0 rows affected (5.34 sec)
mysql> SELECT @score;
+--------------------+
| @score |
+--------------------+
| 0.7961280941963196 |
+--------------------+
1 row in set (0.00 sec)
上述模型的平衡精度为 0.79。
总之,MySQL HeatWave ML 使数据库用户能够使用简单的 SQL 接口进行数据库内机器学习训练、推理和解释。 它处理了典型数据科学家需要完成的机器学习中涉及的所有复杂步骤,从而使新用户可以轻松快速地采用该平台。
原文标题:Building your first Machine Learning model with MySQL HeatWave ML
原文作者:Salil Pradhan
原文地址:https://blogs.oracle.com/mysql/post/building-your-first-machine-learning-model-with-mysql-heatwave-ml




