第 9.3 節 Python 教學,以 IMDB 電影資料預測票房是否超過 1 億美元。
理解標準化、80/20 切分、人工神經網路(Artificial Neural Network, ANN)、分類指標與隨機過度抽樣。
原書提供平衡版與不平衡版資料。平衡資料中高/低於 1 億美元各占 50%;不平衡版只有 22% 電影超過 1 億美元。示範只用 budget 與 duration 兩個預測變數。
| 設定 | 原書內容 |
|---|---|
| 平衡資料正類比例 | 50% |
| 不平衡資料正類比例 | 22% |
| 測試資料比例 | 20% |
| 預測變數 | budget、duration |
| 標準化 | Min-Max,縮放至 0–1 |
| ANN 設定 | 單層 4 個節點、logistic activation;示範 max_iter 1500 |
NumPy 匯入資料 → MinMaxScaler 標準化 → train_test_split 切分 → MLPClassifier 建模 → 準確率/精確率/召回率/F1 分數/接收者操作特徵曲線(Receiver Operating Characteristic, ROC)評估;不平衡資料另以 RandomOverSampler 平衡訓練集,測試集維持原比例。
| 模型 | 準確率 | 精確率 | 召回率 | F1 分數 | 原書輸出之 ROC 曲線下面積 |
|---|---|---|---|---|---|
| 平衡資料 ANN | 0.9000 | 0.9600 | 0.8276 | 0.8889 | 0.8977 |
| 不平衡基準模型 | 0.8209 | 0.8182 | 0.2903 | 0.4286 | 0.6355 |
| 過度抽樣後 | 0.8209 | 0.6207 | 0.5806 | 0.6000 | 0.7369 |
過度抽樣後召回率由 0.2903 提高至 0.5806,約增加 0.2903;準確率幾乎不變。
案例清楚示範:類別不平衡時,單看準確率會掩蓋少數類別辨識能力。過度抽樣犧牲部分精確率,但提高召回率與 F1 分數。
比較不平衡基準模型與過度抽樣模型,說明為何準確率幾乎不變卻不能說兩者表現相同;只使用原書五項指標。
問題: 若業務更在意抓到真正高票房電影,哪個指標改善最值得注意?
參考解答: 召回率;原書示範由約 0.29 提升至約 0.58,代表正類被找出的比例提高。