作者——亚当·特沃维茨
最后更新于 2021 年 9 月 12 日

警告
本文来自 Teradata 公司网站入门这是在 中发布的内容的删节版。我们不保证所发布内容的准确性、完整性、可靠性或最新性。具体内容请参考原文。
另外,如果您有任何需要或更正的要求或更正,请发表评论。

概述

有时您想快速验证机器学习模型的想法。
・模型的类型已经确定,但我还没有打算在 ML 管道中操作它。
・我想测试我设想的关系是否存在。
・即使在生产环境中,也无需不断地重新学习 MLops。
在这种情况下,您可以使用 Vantage Analytics 库及其支持的多种 ML 模型类型。

先决条件

您需要访问 Teradata Vantage 实例。

如果您需要 Vantage 的新实例,您可以在 Google Cloud、Azure 和 AWS 云上部署一个名为 Vantage Express 的免费版本。您还可以使用 VMware、VirtualBox 或 UTM 在本地计算机上运行 Vantage Express。

安装 Vantage Analytics 库

Vantage 中的机器学习支持需要 Vantage 分析库。在本节中,我们将在 Vantage 上安装 Vantage 分析库并加载一些示例数据。

① Vantage Analytics Library 作为 rpm 文件分发。Teradata 下载并将 Vantage Analytics Library rpm 下载到您的本地计算机。

② 将该文件上传到您的 Vantage 安装。有多种方法可以在本地运行 Vantage Express。

Vantage Express 上的 VirtualBox如果您已经安装,您可以将文件拖放到您的虚拟机桌面。还有端口4422连接至scp也可以使用。

复制rpm文件
scp -P 4422 ~/Downloads/VAL-2.0.0.3-1.x86_64.rpm root@localhost:/root/Desktop

□如果您使用VMware并启用了拖放功能,您应该可以将文件拖放到虚拟机桌面上。

□如果您可以通过 SSH 访问您的 Vantage 节点,您可以使用 scp 命令上传二进制文件。

SSH 到 Vantage
scp ~/Downloads/VAL-2.0.0.3-1.x86_64.rpm root@vantage.server.name:/tmp/

③ 现在创建一个新的数据库,将在其中安装 Vantage Analytics Library 功能和过程。尽管您可以将 Vantage 分析库安装在 SYSLIB 等全局位置,但将其安装在特定数据库中可以在出现问题时更轻松地重新开始。让我们创建一个名为 VAL 的数据库并赋予用户适当的权限。
将数据库名称和用户 ID 与您的环境相匹配。

创建数据库.sql
CREATE DATABASE val
AS PERMANENT = 60e6, -- 60MB
    SPOOL = 120e6; -- 120MB

GRANT CREATE FUNCTION ON val to dbc;
GRANT ALTER FUNCTION ON val to dbc;
GRANT EXECUTE PROCEDURE on SQLJ.REMOVE_JAR to dbc;
GRANT EXECUTE PROCEDURE on SQLJ.INSTALL_JAR to dbc;
GRANT EXECUTE PROCEDURE on SQLJ.REPLACE_JAR to dbc;
GRANT CREATE EXTERNAL PROCEDURE ON val to dbc;

④ 在虚拟机上打开终端,开始安装工作。如有必要,更改 rpm 路径。

运行转
rpm -Uvh --nodeps ~/Desktop/VAL-2.0.0.3-1.x86_64.rpm

⑤ 安装向导会要求您输入主机名、用户 ID 和密码。在 Vantage Express 虚拟机上执行安装时,值为:

□主机名:localhost
□ 用户名:dbc
□ 密码:dbc
□账号字符串:留空,按ENTER。
□BTEQ 或FASTLOAD 命令:留空并按ENTER。

⑥ 向导将要求您选择要安装 Vantage Analytics Library 的哪些部分。第一的,td_analyze我想从安装过程开始,选项 1。如果您选择选项 1,脚本将是td_analyze提示安装的数据库名称。并按 ENTER。

⑦ 在向导中间选择选项 5,即教程表安装这些是包含用于构建示例模型的数据的示例表。

样本数据

现在已经加载了 VAL 和示例表,让我们来探索数据。这是一个假设的数据集,由银行客户(大约 1,000 行)、账户(大约 10,000 行)和交易(大约 100,000 行)组成。它们相互关联如下:

Vantageで機械学習モデルのトレーニングを行う方法

现在,让我们看看我们是否可以建立一个模型,根据表中所有与信用卡无关的变量来预测银行客户在信用卡上的平均每月余额。

创建线性回归模型

首先,让我们创建一个连接上述三个表的宽表(Analytic Data Set,ADS)。

您必须在安装了 Vantage Analytics Library 的数据库中拥有 CREATE TABLE 权限才能运行以下查询。

CreateTableADS.sql
-- Switch to val database.
DATABASE val;

-- Create the ADS.
CREATE TABLE VAL_ADS AS (
    SELECT
        T1.cust_id  AS cust_id
       ,MIN(T1.income) AS tot_income
       ,MIN(T1.age) AS tot_age
       ,MIN(T1.years_with_bank) AS tot_cust_years
       ,MIN(T1.nbr_children) AS tot_children
       ,CASE WHEN MIN(T1.marital_status) = 1 THEN 1 ELSE 0 END AS single_ind
       ,CASE WHEN MIN(T1.gender) = 'F' THEN 1 ELSE 0 END AS female_ind
       ,CASE WHEN MIN(T1.marital_status) = 2 THEN 1 ELSE 0 END AS married_ind
       ,CASE WHEN MIN(T1.marital_status) = 3 THEN 1 ELSE 0 END AS separated_ind
       ,MAX(CASE WHEN T1.state_code = 'CA' THEN 1 ELSE 0 END) AS ca_resident_ind
       ,MAX(CASE WHEN T1.state_code = 'NY' THEN 1 ELSE 0 END) AS ny_resident_ind
       ,MAX(CASE WHEN T1.state_code = 'TX' THEN 1 ELSE 0 END) AS tx_resident_ind
       ,MAX(CASE WHEN T1.state_code = 'IL' THEN 1 ELSE 0 END) AS il_resident_ind
       ,MAX(CASE WHEN T1.state_code = 'AZ' THEN 1 ELSE 0 END) AS az_resident_ind
       ,MAX(CASE WHEN T1.state_code = 'OH' THEN 1 ELSE 0 END) AS oh_resident_ind
       ,MAX(CASE WHEN T2.acct_type = 'CK' THEN 1 ELSE 0 END) AS ck_acct_ind
       ,MAX(CASE WHEN T2.acct_type = 'SV' THEN 1 ELSE 0 END) AS sv_acct_ind
       ,MAX(CASE WHEN T2.acct_type = 'CC' THEN 1 ELSE 0 END) AS cc_acct_ind
       ,AVG(CASE WHEN T2.acct_type = 'CK' THEN T2.starting_balance+T2.ending_balance ELSE 0 END) AS ck_avg_bal
       ,AVG(CASE WHEN T2.acct_type = 'SV' THEN T2.starting_balance+T2.ending_balance ELSE 0 END) AS sv_avg_bal
       ,AVG(CASE WHEN T2.acct_type = 'CC' THEN T2.starting_balance+T2.ending_balance ELSE 0 END) AS cc_avg_bal
       ,AVG(CASE WHEN T2.acct_type = 'CK' THEN T3.principal_amt+T3.interest_amt ELSE 0 END) AS ck_avg_tran_amt
       ,AVG(CASE WHEN T2.acct_type = 'SV' THEN T3.principal_amt+T3.interest_amt ELSE 0 END) AS sv_avg_tran_amt
       ,AVG(CASE WHEN T2.acct_type = 'CC' THEN T3.principal_amt+T3.interest_amt ELSE 0 END) AS cc_avg_tran_amt
       ,COUNT(CASE WHEN ((EXTRACT(MONTH FROM T3.tran_date) + 2) / 3) = 1 THEN T3.tran_id ELSE NULL END) AS q1_trans_cnt
       ,COUNT(CASE WHEN ((EXTRACT(MONTH FROM T3.tran_date) + 2) / 3) = 2 THEN T3.tran_id ELSE NULL END) AS q2_trans_cnt
       ,COUNT(CASE WHEN ((EXTRACT(MONTH FROM T3.tran_date) + 2) / 3) = 3 THEN T3.tran_id ELSE NULL END) AS q3_trans_cnt
       ,COUNT(CASE WHEN ((EXTRACT(MONTH FROM T3.tran_date) + 2) / 3) = 4 THEN T3.tran_id ELSE NULL END) AS q4_trans_cnt
    FROM Customer AS T1
        LEFT OUTER JOIN Accounts AS T2
            ON T1.cust_id = T2.cust_id
        LEFT OUTER JOIN Transactions AS T3
            ON T2.acct_nbr = T3.acct_nbr
GROUP BY T1.cust_id) WITH DATA UNIQUE PRIMARY INDEX (cust_id);

建立一个线性回归模型,通过从数据集中获取参数来预测每月信用卡余额。

td_analyze创建线性模型。输入是一个表VAL_ADS, 并由多列组成。因变量是cc_avg_bal是。模型是LINEAR_REGRESSION_DEMO作为一个表称为写入数据库。

运行线性.sql
call td_analyze('linear',
  'database=val;
  tablename=VAL_ADS;
  columns=tot_age,tot_income,tot_cust_years,tot_children,single_ind,female_ind,married_ind,separated_ind,ck_acct_ind,sv_acct_ind,sv_avg_bal,ck_avg_bal,ca_resident_ind,ny_resident_ind,tx_resident_ind,il_resident_ind,az_resident_ind,oh_resident_ind;
  dependent=cc_avg_bal;
  outputdatabase=val;
  outputtablename=linear_regression_demo');

此过程创建几个输出表。此时无需检查表的内容。现在让我们看看如何使用新创建的模型进行评分。

计分

让我们使用这个模型进行预测和评估分数。去做这个,线性分数带参数td_analyze称呼。
输入表 (VAL_ADS)、型号表(前缀线性回归演示) 和数据库目标表(线性回归分数) 正在创建中。

RunLinearscore.sql
call td_analyze('linearscore',
  'database=val;
  tablename=VAL_ADS;
  modeldatabase=val;
  modeltablename=linear_regression_demo;
  outputdatabase=val;
  outputtablename=linear_regression_score;
  predicted=estimate;
  retain=cc_avg_bal;
  scoringmethod=scoreandevaluate;');

结果,包括实际余额,预测余额,以及两者之间的差额线性回归分数你得到一张桌子。
让我们看一个示例结果。

SelectLinearRegressionScore.sql
SELECT * FROM linear_regression_score SAMPLE 10;

此查询将为您提供结果。

cust_id cc_avg_bal 估计 住宅
1362498 0.0 284.7057772484358 -284.7057772484358
1362828 1184.35 463.74177458594215 720.6082254140578
1362839 2933.135802469136 982.9240031182255 1950. 2117993509103
1362986 500.9148148148148 881.4116539412856 -380.4968391264708
1362511 235.85941489361701 294.35369563202846 -58.494280738411426
1363134 0.0 430.27950420065997 -430.27950420065997
1363481 0.0 411.2359958542745 -411.2359958542745
1362644 209.3304347826087 279.75770904482033 -70.42727426221163
1363141 0.0 550.1681921045503 -550.1681921045503
1363290 0.0 120.35348558871233 -120.35348558871233

概括

在本快速入门中,您了解了如何在 SQL 中创建机器学习模型。使用的方法是 Vantage 分析库。我能够建立一个线性回归模型,并使用它仅使用 SQL 进行预测。

# 学到更多
Vantage Analytics 库用户指南

联系 Teradata Vantage

联系 Teradata Vantage


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308626754.html

相关文章: