計算「銷售金額/瀏覽次數」是哪種特徵工程?
資料科學家為分析顧客行為,利用現有欄位「銷售金額」與「瀏覽次數」,計算出新變數「銷售金額/瀏覽次數」。此動作屬於下列哪一類特徵工程方法?
有兩個已存在的欄位:「銷售金額」和「瀏覽次數」。資料科學家把這兩個欄位相除,算出一個新的欄位「銷售金額/瀏覽次數」(每次瀏覽帶來多少銷售)。
問你:這種「用現有欄位計算出新欄位」的做法,屬於哪一類特徵工程方法?
一句話總結
把兩個現有欄位組合計算出新欄位,這叫特徵衍生(Feature Derivation),也稱特徵構造(Feature Construction):用現有特徵「衍生」出一個原本不存在的新特徵。
先感受問題:「每次瀏覽帶來多少錢」比兩個分開的數字更有用
嘉誠電商的分析師阿薇有兩個欄位:
商品 B:銷售金額 = 80,000 元,瀏覽次數 = 8,000 次
看銷售金額:B 比 A 多。
看瀏覽次數:B 也比 A 多。
但哪個商品更「有效率」呢?
算一下「銷售金額 / 瀏覽次數」(每次瀏覽帶來多少銷售額):
商品 B:80,000 / 8,000 = 10 元/次
商品 A 的轉換效率是 B 的 5 倍!這個「新欄位」揭示了原始兩個欄位看不出來的資訊。
這個「用已有欄位計算出新欄位」的動作,就是特徵衍生。
只用原始欄位、不做特徵衍生,會遇到什麼問題
- 原始欄位無法表達「比率/效率」:「銷售金額」和「瀏覽次數」各自告訴你絕對數量,但模型看不到「轉換率」這個概念。
- 模型難以學習複合關係:某些規律只在兩個特徵的組合下才浮現,模型要自己學這個非線性交互作用很困難,直接算出來會事半功倍。
- 特徵冗餘但缺少洞察:資料可能有 100 個欄位,但沒有一個直接表達「客單價」「訪購轉換率」「留存率」這些業務核心指標。
- 資料量不足時模型難以提取高階特徵:訓練資料少的時候,讓模型自動學習「除法關係」很難,手動計算衍生特徵可以注入領域知識。
- 重要比率被稀釋:只看絕對值,規模大的商品永遠贏。加入比率特徵,小規模但高效率的模式才會被看見。
特徵衍生:用現有欄位計算出新欄位
特徵衍生(Feature Derivation),又稱特徵構造(Feature Construction),是特徵工程的核心技術:在現有欄位的基礎上,透過數學運算或邏輯規則,創造出原本不存在的新特徵。
常見的衍生方式:
- 四則運算:銷售金額 / 瀏覽次數(題目的例子)
- 差值:本月銷售 - 上月銷售(環比變化)
- 乘積:用戶年齡 × 消費頻率(交互特徵)
- 時間特徵:從「下訂日期」提取「星期幾」「是否假日」
- 統計彙總:過去 30 天的平均消費額
這就是選項 B 講的:特徵衍生(Feature Derivation)。
技術版:特徵工程四大類別的區別
特徵工程的主要分類,方便對照四個選項:
- 特徵衍生(Feature Derivation):用現有特徵計算新特徵,增加資訊量。例:銷售金額/瀏覽次數、購買年-出生年=購買年齡。
- 特徵選擇(Feature Selection):從現有特徵中選出最有用的子集,減少冗餘。例:用相關係數、互信息、LASSO 選出重要特徵。不增加新特徵,只篩選。
- 特徵轉換(Feature Transformation):改變現有特徵的表示方式,不增加新欄位數量。例:對數轉換、Z-score 標準化、PCA 降維。
- 分箱處理(Binning):把連續數值分成區間,轉為類別。例:年齡 [20-30), [30-40), [40-50)。
import pandas as pd
df = pd.DataFrame({
'銷售金額': [50000, 80000, 30000],
'瀏覽次數': [1000, 8000, 500]
})
# 特徵衍生:計算每次瀏覽帶來多少銷售額
df['轉換效率'] = df['銷售金額'] / df['瀏覽次數']
# 新欄位出現了,從 2 欄變 3 欄
關鍵區別:特徵衍生會「增加新欄位」;特徵選擇會「減少欄位」;特徵轉換「數量不變但值改變」;分箱「把連續值變成離散類別」。
為什麼其他選項是錯的
A特徵選擇(Feature Selection)
從所有特徵裡選出最重要、最有用的幾個,去掉不重要的。
特徵選擇是「減法」,從已有的特徵中選出子集,不產生新特徵。題目的操作是「加法」,從兩個現有欄位計算出一個原本不存在的新欄位,是不同的方向。
聽到「特徵工程」就想到「特徵選擇」的人。這是最常被混淆的兩個概念:選擇是去掉不要的,衍生是創造新的。
C特徵轉換(Feature Transformation)
改變特徵的形式,例如做對數轉換、標準化,讓特徵更適合模型使用。
特徵轉換是對「一個現有特徵」做數學轉換,改變它的分佈或尺度,欄位數量不變。例如把「銷售金額」取對數,得到「log(銷售金額)」——還是同一欄。題目是把兩個欄位組合出一個全新的第三個欄位,這是衍生,不是轉換。
知道「除法是一種數學運算」就聯想到「轉換」的人。記住:轉換是改變一個特徵的形式,衍生是組合多個特徵創造新特徵。
D分箱處理(Binning)
把連續數值(如年齡、收入)分成幾個區間段(箱子),轉成類別特徵。
分箱是把一個連續欄位切成幾段,改變的是「連續→離散」的型態,不是把兩個欄位相除創造新欄位。題目完全沒有提到要把數值切成區間,跟分箱的概念不符。
看到「計算出新變數」就以為是分箱(因為分箱也會創造新的類別欄位)的人。分箱是特定的「連續→類別」轉換,不是一般性的「用現有欄位算新欄位」。
同個考點下次怎麼變形
從「出生日期」計算「年齡」屬於哪種特徵工程?
出生日期是現有欄位,從它推算年齡是哪種操作?
特徵衍生(Feature Derivation)。用「今天日期 - 出生日期」算出年齡,創造出原本不存在的新特徵。這跟「銷售金額/瀏覽次數」是同一類操作:從現有欄位計算新欄位。
用 PCA 把 100 個特徵壓縮成 10 個主成分,這是什麼特徵工程?
PCA 也會改變特徵,是哪一類?
特徵轉換(Feature Transformation)。PCA 把原始 100 個特徵線性組合成 10 個新的主成分,不是直接刪除特徵(那是特徵選擇),而是把所有特徵「轉換」成一個新的表示空間。特徵數量減少了,但方式是轉換不是刪除。
用相關係數選出跟目標變數相關的前 20 個特徵,這是哪種特徵工程?
把不相關的特徵刪掉,只留最有用的,是哪種做法?
特徵選擇(Feature Selection)。計算每個特徵與目標變數的相關係數,依排名保留前 20 個,去掉其餘特徵。這是「篩選子集」的操作,不創造新特徵,只減少特徵數量。
特徵衍生的「交互特徵」是什麼?
兩個特徵相乘也算衍生嗎?那叫什麼?
叫「交互特徵(Interaction Feature)」,是特徵衍生的一種。例如「年齡 × 消費金額」這個新特徵,捕捉了兩者的乘積關係。線性模型本身無法學習特徵間的乘積關係,手動建出交互特徵是注入領域知識的好方法。
自動化特徵工程工具(如 Featuretools)在做什麼?
手動做特徵衍生太費時,有沒有自動化的方法?
Featuretools 等自動化特徵工程工具會系統性地嘗試多種衍生方式:對數值欄位做加減乘除、對時間欄位提取「星期幾」「月份」,再用統計聚合(均值、最大值、計數)跨資料表生成衍生特徵。能在幾分鐘內產生數千個候選特徵,再用特徵選擇篩出最有用的。
想再往下看,這 5 個
- 特徵工程(Feature Engineering)核心考點,衍生、選擇、轉換、分箱都是特徵工程的子類,理解各自定義是區分考題的關鍵。
- 特徵選擇法(Feature Selection)與特徵衍生相反的操作,從現有特徵中篩選重要子集,減少維度和冗餘。
- 特徵擷取(Feature Extraction)從原始資料(如圖片、文字)中抽取有用資訊,創造可用特徵,是衍生的廣義形式。
- 自動特徵工程(Automated Feature Engineering)用演算法自動生成大量衍生特徵候選,再配合特徵選擇篩出最佳組合。
- 資料前處理(Data Preprocessing)特徵衍生通常在資料清理之後、模型訓練之前進行,是完整前處理流程的一環。