【資料分析】python機器學習-什麼是虛擬變數陷阱? 虛擬變數陷阱所引發問題與處理

更新於 發佈於 閱讀時間約 2 分鐘
raw-image

虛擬變數陷阱(Dummy Variable Trap)是指在進行 One-Hot Encoding(或虛擬變數編碼)時,生成的虛擬變數之間存在 完全多重共線性 的問題。
當你對類別型變數進行 One-Hot Encoding 時,每個類別都會被轉換為二元變數(0 或 1)。如果原始類別有 N 個不同的取值,則 One-Hot Encoding 會生成 N 個虛擬變數。
然而,這樣做可能會導致一個問題,即所有的虛擬變數是線性相關的。例如,當你有三個類別 A、B、C 並將它們進行 One-Hot 編碼,得到三個二元變數 A、B 和 C,這三個變數是線性相關的,因為 A + B + C = 1
這樣一來,知道了 A 和 B 的值,我們就可以推斷出 C 的值,這就是所謂的 完全多重共線性。這種共線性會導致回歸模型中出現計算問題,因為多餘的變數會讓模型無法準確估計每個變數的影響。


# 可使用目錄功能快速確認要閱覽的主題


具體的例子

假設你有一個 Marital_Status 欄位,包含三個類別:SingleMarriedDivorced。對其進行 One-Hot Encoding 後,你會得到三個二元變數:

  • Marital_Status_Single
  • Marital_Status_Married
  • Marital_Status_Divorced

如果一筆數據的這三個變數分別為 [0, 1, 0],那麼我們知道這個客戶是 Married。若另一筆數據的這三個變數分別為 [0, 0, 1],那麼該客戶是 Divorced。通過這三個變數,我們可以推斷任何一筆數據的類別,因此這三個變數之間是 線性相關 的,這會引發模型訓練中的問題。



處理虛擬變數陷阱的方法

為了避免虛擬變數陷阱,通常會採取以下策略:


1. 刪除第一個類別的變數

使用 pd.get_dummies() 時,設置 drop_first=True 來刪除第一個類別變數。這樣的話,剩餘的變數依然可以表示所有的類別。例如,在 Marital_Status 這個例子中,刪除了 Marital_Status_Single 後:

    • 若 Marital_Status_Married=0 且 Marital_Status_Divorced=0,那麼該筆數據就是 Single。
    • 若 Marital_Status_Married=1,那麼該筆數據就是 Married。
    • 若 Marital_Status_Divorced=1,那麼該筆數據就是 Divorced。
# 使用 drop_first=True 避免虛擬變數陷阱
df_encoded_no_trap = pd.get_dummies(df, columns=['Marital_Status'], drop_first=True)

# 檢查編碼後的結果
print(df_encoded_no_trap)


"""
Marital_Status_Divorced Marital_Status_Married
0 0 0
1 0 1
2 1 0
3 0 0
4 0 1

"""

在這裡,Marital_Status_Single 被刪除了。透過這兩個變數,我們依然可以推斷出所有類別的狀態:

  • 當兩個欄位都是 0,代表該資料點為 Single
  • Marital_Status_Divorced = 1,表示該資料點為 Divorced
  • Marital_Status_Married = 1,表示該資料點為 Married

這樣做就避免了虛擬變數之間的多重共線性問題。


2. 使用正規化模型

某些機器學習模型(如決策樹或隨機森林)不受多重共線性問題的影響,這些模型能夠自動處理虛擬變數的多餘信息。因此,對於這類模型,不一定需要手動刪除變數。



結論

虛擬變數陷阱是由於多重共線性引起的問題,會在進行 One-Hot Encoding 後產生多餘的變數,從而影響某些機器學習模型的訓練結果。為了避免這個問題,最常見的做法是使用 drop_first=True 刪除一個變數,這樣依然可以保持模型的穩定性和準確性。


留言
avatar-img
留言分享你的想法!
avatar-img
JayRay 的沙龍
11會員
23內容數
JayRay 的沙龍的其他內容
2025/01/21
本文章提供深度學習(Deep Learning)、深度神經網絡(DNN)、卷積神經網絡(CNN)和遞歸神經網絡(RNN)的簡介,並包含它們的定義、應用場景、基本結構、工作原理、優缺點和Python範例。
Thumbnail
2025/01/21
本文章提供深度學習(Deep Learning)、深度神經網絡(DNN)、卷積神經網絡(CNN)和遞歸神經網絡(RNN)的簡介,並包含它們的定義、應用場景、基本結構、工作原理、優缺點和Python範例。
Thumbnail
2025/01/05
本篇文章提供描述性統計的完整指南,涵蓋集中趨勢、離散趨勢和數據分佈等重要概念,並附上豐富的實務應用案例與 Python 資料視覺化參考連結,協助讀者快速瞭解數據分析的基礎知識。
Thumbnail
2025/01/05
本篇文章提供描述性統計的完整指南,涵蓋集中趨勢、離散趨勢和數據分佈等重要概念,並附上豐富的實務應用案例與 Python 資料視覺化參考連結,協助讀者快速瞭解數據分析的基礎知識。
Thumbnail
2024/12/25
Naive Bayes是一種基於貝葉斯定理的機器學習分類演算法,適用於文本分類、垃圾郵件檢測及情感分析等任務。雖然假設特徵之間相互獨立,這在現實中不常成立,但其高效計算與穩定性使得在小數據集及高維度特徵空間中表現良好。
Thumbnail
2024/12/25
Naive Bayes是一種基於貝葉斯定理的機器學習分類演算法,適用於文本分類、垃圾郵件檢測及情感分析等任務。雖然假設特徵之間相互獨立,這在現實中不常成立,但其高效計算與穩定性使得在小數據集及高維度特徵空間中表現良好。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
虛擬變數陷阱(Dummy Variable Trap)是指在進行One-Hot Encoding時,生成的虛擬變數之間存在完全多重共線性,影響回歸模型的準確性。透過具體的例子,本文探討瞭如何避免這個陷阱,以提升機器學習模型的效果與穩定性。
Thumbnail
虛擬變數陷阱(Dummy Variable Trap)是指在進行One-Hot Encoding時,生成的虛擬變數之間存在完全多重共線性,影響回歸模型的準確性。透過具體的例子,本文探討瞭如何避免這個陷阱,以提升機器學習模型的效果與穩定性。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
資料前處理(Data Preprocessing)中的重要角色-缺失值處理。從檢查、刪除到填充缺失值,以及插值法和機器學習算法的應用方法。Pandas 缺失值處理基礎方法、進階填充缺失值、鐵達尼號存活預測資料集的示例和機器學習算法填補缺失值方法的介紹與使用。
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
本文將延續上一篇文章,經由訓練好的VAE模型其中的解碼器,來生成圖片。 [深度學習]訓練VAE模型用於生成圖片_訓練篇 輸入產生的隨機雜訊,輸入VAE的解碼器後,生成的圖片
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News