
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 必備技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 限制
- ML - 現實生活中的例子
- ML - 資料結構
- ML - 數學
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 分類資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習與無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- 機器學習中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- 機器學習中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K最近鄰 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- 機器學習中的聚類演算法
- ML - 聚類演算法
- ML - 基於質心的聚類
- ML - K均值聚類
- ML - K中心點聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- 機器學習中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 後退消除法
- ML - 前向特徵構造
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用 Python 的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精度和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 紀元
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的盈利化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 資料洩露
資料洩露是機器學習中一個常見的問題,它發生在使用訓練資料集之外的資訊來建立或評估模型時。這可能導致過擬合,即模型過於貼合訓練資料,並在新資料上表現不佳。
資料洩露主要有兩種型別:目標洩露和訓練測試汙染
目標洩露
目標洩露發生在使用預測過程中不可用的特徵來建立模型時。例如,如果我們要預測客戶是否會流失,並且我們包含客戶的取消日期作為特徵,那麼模型將可以訪問在實踐中不可用的資訊。這可能導致訓練期間的準確率虛高,並在新資料上表現不佳。
訓練測試汙染
訓練測試汙染髮生在訓練過程中無意中使用了測試集中的資訊時。例如,如果我們根據整個資料集的均值和標準差而不是僅根據訓練集來標準化資料,那麼模型將可以訪問在實踐中不可用的資訊。這可能導致對模型效能過於樂觀的估計。
如何防止資料洩露?
為了防止資料洩露,務必仔細預處理資料,並確保在訓練過程中沒有使用測試集中的任何資訊。一些防止資料洩露的策略包括:
在進行任何預處理或特徵工程之前,將資料分成單獨的訓練集和測試集。
僅使用在預測時可用的特徵。
使用交叉驗證來評估模型效能,而不是單一的訓練測試拆分。
確保所有預處理步驟(如標準化或縮放)僅應用於訓練集,然後對測試集使用相同的轉換。
注意任何潛在的洩露來源,例如基於日期或時間的特徵,並適當地處理它們。
Python 實現
以下是一個示例,我們將使用 Sklearn 乳腺癌資料集,並確保在訓練期間沒有來自測試集的資訊洩露到模型中:
示例
from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.pipeline import Pipeline from sklearn.preprocessing import StandardScaler from sklearn.svm import SVC # Load the breast cancer dataset data = load_breast_cancer() # Separate features and labels X, y = data.data, data.target # Split the data into train and test sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Define the pipeline pipeline = Pipeline([ ('scaler', StandardScaler()), ('svm', SVC()) ]) # Fit the pipeline on the train set pipeline.fit(X_train, y_train) # Make predictions on the test set y_pred = pipeline.predict(X_test) # Evaluate the model performance accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy)
輸出
執行此程式碼時,將生成以下輸出:
Accuracy: 0.9824561403508771
廣告