全部產品
Search
文件中心

PolarDB:特徵管理

更新時間:Jul 06, 2024

本文介紹了在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

特徵的類型。取值如下:

  • graph:構建圖。基於資料庫中的資料來建立特徵時使用該值。

  • connected_subgraph:構建連通子圖。基於已有特徵來建立新特徵時使用該值。且只能基於由graph建立的特徵來建立連通子圖。

  • iv:用於對輸入特徵變數進行編碼,同時評估特徵變數的預測能力。取值範圍為0到正無窮。基於資料庫中的資料來建立特徵時使用該值。詳情請參見IV演算法

  • none_value:計算特徵缺失比例,以此來判斷特徵的可用程度。基於資料庫中的資料來建立特徵時使用該值。

    說明
    • 如果特徵缺失比例過高(>=0.8),可能會考慮丟棄該特徵。

    • 如果特徵缺失比例不高,可以考慮使用平滑操作來減少因特徵帶來的影響。

  • pearson:判斷兩個特徵之間的線性關係。基於資料庫中的資料來建立特徵時使用該值。詳情請參見Pearson相關係數

  • psi:檢查資料的實際分布和期望分布的差異,以評估模型的穩定性。基於資料庫中的資料來建立特徵時使用該值。詳情請參見群體穩定性指標PSI

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表中的ipuser_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)