本文介绍了在PolarDB for AI中,特征管理的适用场景,以及创建特征、更新特征、查看特征状态、查看特征列表以及删除特征的语法及其示例内容。
适用场景
从原始数据直接构建机器学习模型往往比较困难。机器学习模型的输入一般会先对原始数据进行处理或计算,得到新的数据。原始数据和已加工的数据则作为特征。
例如,如果我们有一个数据集,其中包含了关于房屋的信息,比如面积、卧室数量、地理位置、建造年份等,那么每一项信息都可以被视为一个特征。
特征的选择和准备对于构建有效的机器学习模型至关重要。良好的特征可以大幅提高模型的性能,而不相关或冗余的特征可能会干扰模型的学习过程,导致性能下降。
特征工程可能包括选择最相关的特征、将原始数据转换为更适合机器学习算法的格式、创建从原始数据派生的新特征等。
以下是一些常见的特征使用场景:
分类问题:
邮件分类:使用邮件内容的单词和短语作为特征来识别垃圾邮件。
图片识别:使用像素值、颜色、纹理、形状等特征来进行图像分类。
客户流失预测:使用客户历史交易数据、活跃度、购买频率等特征来预测客户是否会流失。
回归问题:
房价预测:使用房屋的位置、面积、房龄、周边设施等特征来预测房价。
股票价格预测:使用历史价格、交易量、经济指标等特征来预测未来股价。
聚类问题:
市场细分:使用顾客的购买历史、偏好、人口统计信息等特征进行客户分群。
社交网络分析:使用用户的社交活动数据、连接性等特征来发现社交网络中的群体。
推荐系统:
电影推荐:使用用户的观看历史、评分、电影的类型、演员等特征来推荐电影。
商品推荐:使用用户的购买历史、浏览行为、产品属性等特征来推荐商品。
时间序列分析:
天气预测:使用历史天气数据、日期、节气等特征来预测未来的天气状况。
财务预测:使用公司的财务报表数据、市场趋势等特征来预测财务状况。
异常检测:
信用卡欺诈检测:使用交易的时间、地点、金额等特征来识别异常交易。
网络安全:使用网络流量数据、连接类型、流量大小等特征来检测网络攻击。
自然语言处理(NLP):
情感分析:使用单词、短语、句子结构等特征来分析文本的情感倾向。
机器翻译:使用单词、语法结构、上下文等特征来帮助机器进行语言翻译。
计算机视觉:
人脸识别:使用人脸的关键点、轮廓、纹理等特征来识别个人。
对象检测:使用物体的形状、大小、颜色等特征来检测图片中的对象。
特征在各个领域都有着广泛的应用。特征选取和工程化是模型构建过程中非常关键的步骤,它们对模型的性能有着直接的影响。
创建特征
特征的创建过程是异步的,需要通过查询特征的状态来判断当前特征是否创建成功。
语法说明
基于数据库中的数据来创建特征。
CREATE FEATURE feature_name WITH (feature_class= '',parameters=()) AS (SELECT select_expr[, select_expr] ... FROM table_reference)
基于已有的特征来创建新的特征。
CREATE FEATURE feature_name WITH (feature_class = '',parameters=()) USING FEATURE feature_reference
参数说明
参数 | 说明 |
feature_name | 特征名称。 |
feature_class | 特征的类型。取值如下:
|
parameters | 创建特征时用户自定义的参数。 |
select_expr | 用于创建特征的列名。 |
table_reference | 用于创建特征的列所在的表的名称。 |
feature_reference | 已存在的特征名称。 |
示例
基于数据库中的数据来创建特征。
/*polar4ai*/create feature test_graph_1 with (feature_class='graph') as (select ip, user_id from small_sample limit 30)
执行结果如下:
Query OK, 0 rows affected (0.79 sec)
基于已有的特征来创建新的特征。
/*polar4ai*/create feature test_subgraph_1 with (feature_class='connected_subgraph') using feature test_graph_1
执行结果如下:
Query OK, 0 rows affected (0.79 sec)
更新特征
更新特征的过程是异步的,需要通过查询特征状态来判断当前特征是否更新完成。
语法说明
UPDATE FEATURE feature_name WITH (feature_class = '',parameters=()) AS (SELECT select_expr [, select_expr] ... FROM table_reference)
参数说明
参数 | 说明 |
feature_name | 特征名称。 |
feature_class | 特征的类型,固定为graph。 |
parameters | 创建特征时用户自定义的参数。 |
select_expr | 用于更新已创建的特征的列名。 说明
|
table_reference | 用于更新已创建的特征的列所在的表的名称。 |
示例
将特征test_subgraph_1
的列修改为small_sample
表中的ip
和user_id
列。
/*polar4ai*/update feature test_graph_1 with (feature_class='graph') as (select ip, user_id from small_sample limit 30)
执行结果如下:
Query OK, 0 rows affected (0.79 sec)
查看特征状态
查看特征当前的状态,一般情况下,在创建特征或更新特征之后,用来查询特征是否创建或更新成功。特征的状态有以下几种:
INIT:特征初始化完毕。
PREPARING:特征所需数据准备中。
PREPARED:特征所需数据准备完成。
COMPUTING:特征计算中。
COMPUTED:特征计算完成。
RESTORING:特征计算结果存储中。
RESTORED:特征计算结果存储完成。
FINISHED:特征计算结束。
FAILED:特征计算失败。
语法说明
SHOW FEATURE feature_name
参数说明
参数 | 说明 |
feature_name | 特征名称。 |
示例
查看test_subgraph_1
特征状态。
/*polar4ai*/show feature test_subgraph_1;
执行结果如下:
+-----------+-------------------------------------------------------------------------------------------------------------------------------+
| CSGStatus | featurePath |
+-----------+-------------------------------------------------------------------------------------------------------------------------------+
| FINISHED | http://db4ai-collie-cn-hangzhou-dataset.oss-cn-hangzhou.aliyuncs.com/xxxx.txt?OSSAccessKeyId=xxxx&Expires=xxxx&Signature=xxxx |
+-----------+-------------------------------------------------------------------------------------------------------------------------------+
featurePath
的有效时间为100分钟,您可以通过featurePath
中的Expires
参数查看链接是否在有效期内。如果您需要访问该链接,请在有效期内进行访问。
查看特征列表
查看当前集群下的所有特征。
语法说明
SHOW FEATURES
示例
/*polar4ai*/show features;
执行结果如下:
+--------------------+-----------------+----------------+
| feature_class | feature_name | feature_status |
+--------------------+-----------------+----------------+
| connected_subgraph | test_subgraph_1 | DELETED |
| graph | test_graph_1 | FINISHED |
+--------------------+-----------------+----------------+
2 rows in set (0.32 sec)
删除特征
删除已经创建的特征。
语法说明
DROP FEATURE feature_name
参数说明
参数 | 说明 |
feature_name | 特征名称。 |
示例
删除已经创建的特征test_subgraph_1
。
/*polar4ai*/drop feature test_subgraph_1
执行结果如下,表示已成功删除特征:
Query OK, 0 rows affected (0.69 sec)