聊天視窗

數據科學的決策力:從原理到實踐 - 第 2 章

第二章:資料蒐集與前處理:從雜訊到乾淨數據

發布於 2026-02-26 20:29

# 第二章:資料蒐集與前處理:從雜訊到乾淨數據 在前一章中,我們建立了決策流程的全貌。這一章的重點是把 **抽象概念** 變成 **可操作的步驟**,也就是如何把零散、雜亂的資料打磨成能供模型學習的乾淨資料。 --- ## 2.1 資料來源與品質評估 資料的質量往往是決策能否成功的關鍵。即便模型再強,來源不良的資料也會導致偏差、過擬合甚至誤導。 | 資料來源 | 優點 | 缺點 | 評估指標 | |----------|------|------|----------| | 內部系統 | 連續、可追蹤 | 可能存在過時、重複 | 完整度、正確率 | | 第三方 API | 範圍廣、即時 | 依賴外部供應 | 可用性、延遲 | | 公開資料集 | 易取得、可重複 | 可能缺乏上下文 | 可靠性、更新頻率 | > **評估流程** > 1. **完整性**:檢查缺失值比例。<br>2. **一致性**:欄位命名、資料型別統一。<br>3. **時間性**:資料時間跨度與決策時間對齊。<br>4. **可靠性**:來源是否可信,是否有法規限制。 ## 2.2 資料清洗技巧 >「資料清洗」在數據科學社群中常被稱為「資料烹飪」的前菜。這裡列出幾個常見的手法: | 手法 | 目的 | 典型工具 | |------|------|-----------| | 重複刪除 | 消除冗餘 | pandas `drop_duplicates()` | | 錯誤值矯正 | 修正輸入錯誤 | regex, custom validators | | 格式統一 | 方便後續處理 | `pd.to_datetime()`, `str.upper()` | | 文字清理 | 針對 NLP | `re.sub()`, NLTK, spaCy | **示例**:簡易電商交易資料清洗 python import pandas as pd raw = pd.read_csv('sales_raw.csv') # 1. 刪除重複交易 raw = raw.drop_duplicates(subset=['order_id']) # 2. 轉換日期格式 raw['order_date'] = pd.to_datetime(raw['order_date'], errors='coerce') # 3. 文字欄位統一大小寫 raw['product_category'] = raw['product_category'].str.strip().str.title() # 4. 刪除無效訂單(日期缺失) raw = raw.dropna(subset=['order_date']) ## 2.3 特徵縮放與編碼 機器學習模型往往對特徵尺度敏感。以下列出最常見的縮放與編碼方法: | 方法 | 適用情境 | 典型實作 | |------|-----------|-----------| | Min–Max | 需要 0-1 範圍 | `MinMaxScaler()` | | 標準化(Z-score) | 正態分布 | `StandardScaler()` | | Log 轉換 | 指數增長 | `np.log1p()` | | One‑Hot | 類別型 | `pd.get_dummies()` | | Target Encoding | 有序類別、低頻 | custom encoder | > **注意**:在交叉驗證時,**縮放與編碼**必須在訓練集內部完成,避免資訊洩漏。 ## 2.4 缺失值處理 缺失值是資料清洗的另一大挑戰。常見策略如下: | 策略 | 優點 | 適用場景 | |------|------|-----------| | 刪除 | 簡單、直觀 | 缺失比例低、隨機缺失 | | 填補平均/中位數 | 保持分布 | 數值型、缺失率適中 | | 預測填補 | 可利用模型 | 缺失模式較複雜 | | 旗標列 | 保留缺失訊息 | 缺失與結果相關 | **Python 範例**:使用 `sklearn` 的 `SimpleImputer`。 python from sklearn.impute import SimpleImputer import numpy as np imp = SimpleImputer(strategy='median') X_filled = imp.fit_transform(X) ## 2.5 數據增強 對於資料量有限的場景,數據增強可提升模型泛化。常見做法包括: | 類型 | 具體手法 | |------|-----------| | 影像 | 旋轉、翻轉、裁剪 | | 文字 | 同義詞替換、隨機刪除 | | 時間序列 | 斜率改變、隨機噪聲 | > **提示**:增強不應該破壞資料的核心語義,須依賴領域知識調整。 ## 2.6 工具與實例 | 工具 | 特色 | 典型場景 | |------|------|-----------| | Pandas | 強大的 DataFrame 操作 | 資料清洗、探索 | | Dask | 分布式計算 | 大規模資料集 | | Spark MLlib | 分布式機器學習 | 企業級應用 | | Featuretools | 自動特徵工程 | 快速原型 | | Evidently AI | 可解釋性、監控 | 監督型模型的部署 | > **案例**:某電商平台使用 Spark 完成 10 億筆交易的前處理,並透過 `Featuretools` 生成 500+ 特徵,最終提升 CTR 預測精度 12%。 ## 2.7 小結 > **核心 Takeaway**:資料前處理不是「裝飾」,而是「基礎」。若基礎不堅實,無論模型多麼尖端,決策效益將大打折扣。 > > **實務小貼士**:在每一次資料流轉中都記錄「資料變化日誌」;用於後續追蹤、版本控制與合規審核。 > > **接下來**:第三章將進入 **特徵工程** 的深層次探討,學習如何將乾淨資料轉化為模型能夠「學習」的訊息。 ---