本文介紹了在PolarDB for AI中,特徵管理的適用情境,以及建立特徵、更新特徵、查看特徵狀態、查看特徵列表以及刪除特徵的文法及其樣本內容。
適用情境
從未經處理資料直接構建機器學習模型往往比較困難。機器學習模型的輸入一般會先對未經處理資料進行處理或計算,得到新的資料。未經處理資料和已加工的資料則作為特徵。
例如,如果我們有一個資料集,其中包含了關於房屋的資訊,比如面積、臥室數量、地理位置、建造年份等,那麼每一項資訊都可以被視為一個特徵。
特徵的選擇和準備對於構建有效機器學習模型至關重要。良好的特徵可以大幅提高模型的效能,而不相關或冗餘的特徵可能會干擾模型的學習過程,導致效能下降。
特徵工程可能包括選擇最相關的特徵、將未經處理資料轉換為更適合機器學習演算法的格式、建立從未經處理資料派生的新特徵等。
以下是一些常見的特徵使用情境:
分類問題:
郵件分類:使用郵件內容的單詞和短語作為特徵來識別垃圾郵件。
圖片識別:使用像素值、顏色、紋理、形狀等特徵來進行映像分類。
客戶流失預測:使用客戶歷史交易資料、活躍度、購買頻率等特徵來預測客戶是否會流失。
迴歸問題:
樓價預測:使用房屋的位置、面積、房齡、周邊設施等特徵來預測樓價。
股票價格預測:使用歷史價格、交易量、經濟指標等特徵來預測未來股價。
聚類問題:
市場細分:使用顧客的購買歷史、偏好、人口統計資訊等特徵進行客戶分群。
社交網路分析:使用使用者的社交活動資料、串連性等特徵來發現社交網路中的群體。
推薦系統:
電影推薦:使用使用者的觀看歷史、評分、電影的類型、演員等特徵來推薦電影。
商品推薦:使用使用者的購買歷史、瀏覽行為、產品屬性等特徵來推薦商品。
時間序列分析:
天氣預測:使用歷史天氣資料、日期、節氣等特徵來預測未來的天氣狀況。
財務預測:使用公司的財務報表資料、市場趨勢等特徵來預測財務狀況。
異常檢測:
信用卡欺詐檢測:使用交易的時間、地點、金額等特徵來識別異常交易。
網路安全:使用網路流量資料、連線類型、流量大小等特徵來檢測網路攻擊。
自然語言處理(NLP):
情感分析:使用單詞、短語、句子結構等特徵來分析文本的情感傾向。
機器翻譯:使用單詞、文法結構、上下文等特徵來協助機器進行語言翻譯。
電腦視覺:
Face Service:使用人臉的關鍵點、輪廓、紋理等特徵來識別個人。
對象檢測:使用物體的形狀、大小、顏色等特徵來檢測圖片中的對象。
特徵在各個領域都有著廣泛的應用。特徵選取和工程化是模型構建過程中非常關鍵的步驟,它們對模型的效能有著直接的影響。
建立特徵
特徵的建立過程是非同步,需要通過查詢特徵的狀態來判斷當前特徵是否建立成功。
文法說明
基於資料庫中的資料來建立特徵。
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)