返回目錄
A
數據科學的決策力:從原理到實踐 - 第 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**:資料前處理不是「裝飾」,而是「基礎」。若基礎不堅實,無論模型多麼尖端,決策效益將大打折扣。
>
> **實務小貼士**:在每一次資料流轉中都記錄「資料變化日誌」;用於後續追蹤、版本控制與合規審核。
>
> **接下來**:第三章將進入 **特徵工程** 的深層次探討,學習如何將乾淨資料轉化為模型能夠「學習」的訊息。
---