Featuretools 原語 (Primitives) 詳解(Qwen3)

Featuretools 原語 (Primitives) 詳解

原語(Primitives)是Featuretools中用于特征工程的基本操作單元,分為聚合原語(Aggregation Primitives)和轉(zhuǎn)換原語(Transformation Primitives)兩大類。

1. 聚合原語 (Aggregation Primitives)

聚合原語用于對相關實體的數(shù)據(jù)進行聚合操作,通常用于一對多關系中"多"的一方聚合到"一"的一方。

常見聚合原語及示例:

count
  • 作用:計算記錄數(shù)量
  • 示例:計算每個客戶有多少筆交易
  • 結(jié)果:客戶A有5筆交易,客戶B有3筆交易
sum
  • 作用:計算數(shù)值列的總和
  • 示例:計算每個客戶的交易總金額
  • 結(jié)果:客戶A總交易額1000元,客戶B總交易額650元
mean
  • 作用:計算數(shù)值列的平均值
  • 示例:計算每個客戶的平均交易金額
  • 結(jié)果:客戶A平均交易額200元,客戶B平均交易額216.67元
std
  • 作用:計算數(shù)值列的標準差
  • 示例:計算每個客戶交易金額的標準差
  • 結(jié)果:衡量客戶交易金額的波動性
min / max
  • 作用:計算數(shù)值列的最小值/最大值
  • 示例:每個客戶的單筆最高/最低交易金額
median
  • 作用:計算數(shù)值列的中位數(shù)
  • 示例:每個客戶交易金額的中位數(shù)
mode
  • 作用:計算出現(xiàn)頻率最高的值
  • 示例:客戶最常購買的商品類別
trend
  • 作用:計算數(shù)值隨時間的趨勢
  • 示例:客戶交易金額隨時間的增長趨勢
skew
  • 作用:計算分布的偏度
  • 示例:客戶交易金額分布的偏斜程度

2. 轉(zhuǎn)換原語 (Transformation Primitives)

轉(zhuǎn)換原語用于對單個實體中的數(shù)據(jù)進行轉(zhuǎn)換操作,生成新的特征列。

常見轉(zhuǎn)換原語及示例:

month / year / week / weekday
  • 作用:從日期中提取時間組件
  • 示例
    # 原始數(shù)據(jù): join_date = "2022-01-15"
    # month(join_date) = 1
    # year(join_date) = 2022
    # weekday(join_date) = 5 (周六)
    
hour / minute / second
  • 作用:從時間戳中提取時分秒
  • 示例:分析用戶在一天中的活躍時段
time_since_previous
  • 作用:計算與前一條記錄的時間間隔
  • 示例:客戶兩次交易之間的時間間隔
cum_sum / cum_mean / cum_max
  • 作用:計算累積統(tǒng)計值
  • 示例
    # 交易金額: [100, 50, 200, 75]
    # cum_sum(amount) = [100, 150, 350, 425]
    
diff
  • 作用:計算與前一條記錄的差值
  • 示例:客戶每次交易金額的變化
divide_by / multiply / add / subtract
  • 作用:數(shù)值運算
  • 示例:計算兩個特征的比例關系
equal / greater_than / less_than
  • 作用:邏輯比較
  • 示例:判斷交易金額是否超過閾值
is_null / not_null
  • 作用:空值判斷
  • 示例:標識缺失數(shù)據(jù)
num_characters / num_words
  • 作用:文本統(tǒng)計
  • 示例:計算客戶評論的字符數(shù)或單詞數(shù)
latitude / longitude
  • 作用:地理位置解析
  • 示例:從地址中提取經(jīng)緯度信息

3. 實際應用示例

結(jié)合您的代碼示例,我們來看具體的原語應用:

# 聚合原語
agg_primitives=["sum", "mean", "count", "std"]

# 轉(zhuǎn)換原語
trans_primitives=["month", "weekday"]

具體生成的特征:

  1. 聚合特征

    • SUM(transactions.amount): 每個客戶的交易總額
    • MEAN(transactions.amount): 每個客戶的平均交易金額
    • COUNT(transactions.amount): 每個客戶的交易次數(shù)
    • STD(transactions.amount): 每個客戶交易金額的標準差
  2. 轉(zhuǎn)換特征

    • MONTH(join_date): 客戶加入的月份
    • WEEKDAY(join_date): 客戶加入的是星期幾

4. 自定義原語

Featuretools還支持創(chuàng)建自定義原語來滿足特定需求:

from featuretools.primitives import AggregationPrimitive
from featuretools.variable_types import Numeric

class NUnique(AggregationPrimitive):
    name = "n_unique"
    input_types = [Numeric]
    return_type = Numeric
    stack_on_self = False
    default_value = 0

    def get_function(self):
        return 'nunique'

5. 原語的選擇策略

選擇合適的原語需要考慮:

  • 業(yè)務需求:根據(jù)業(yè)務場景選擇相關原語
  • 數(shù)據(jù)類型:數(shù)值型、分類型、時間型數(shù)據(jù)適用不同原語
  • 計算復雜度:復雜原語可能影響性能
  • 特征有效性:某些原語可能生成無意義的特征

通過合理選擇和組合這些原語,F(xiàn)eaturetools能夠自動生成大量有意義的特征,為機器學習模型提供更豐富的信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容