MMSAI_2 Before Starting Your BDA執行流程
簡報:https://lms2020.nchu.edu.tw/media/doc/301268
AI 演算法分類
| 類型 | 說明 | 數學表示 |
|---|---|---|
| 降維概論 | 從所有欄位中「找出」或「整合」出適合後續模型的欄位 | - |
| 分類 | 已知類別,辨識新資料點屬哪類 | - |
| 分群 | 將一群資料依照各種度量把相鄰的分一群 | - |
| 迴歸 | 已知一組輸入輸出,找出函數 f() 使 y = f(x) | |
| 時序分析 | 已知時間序列,找出函數預測未來值 | |
| 最佳化 | 已知系統與可操縱變數,求使目標最佳的參數組合 |
建模的發展歷史
1980 年以前
- 針對任務找到 IC 的物理意義,求得公式
- 係數全部用手算出來
- 需要數學與物理的專家
1980–2000(電腦時代)
- 由材料專家確定公式結構
- 利用最佳化方法(如基因演算法)求解未知係數 (a, b, c, d)
分支:用 NN 來做
- 把 IC 變成 NN 模型(例如 AI)
- 再透過訓練找出模型
2000–2015(資料科學概念興起)
- 淺層 NN 發展
- 資料科學方法論逐漸成形
LossFunction-vs-EvaluationMetric vs Evaluation Metric(重要)
| 項目 | Loss Function | Evaluation Metric |
|---|---|---|
| 用途 | 訓練模型時優化 | 評估模型好壞 |
| 時機 | 訓練過程中 | 訓練完成後 |
| 例子 | MSE | MAPE、MAE、Regression評估指標-MAE-MSE-RMSE-MAPE |
⚠️ 核心警告:兩者不一致會出問題
情境:用 MSE 訓練人流預測模型,但評估用 MAPE
| MSE | MAPE |
|---|---|
| 看「誤差平方」 | 看「相對比例」 |
| 對大數值敏感 | 對小數值敏感 |
→ 兩個優化方向不同!Loss 很低,但 MAPE 很差。
正確做法
- 選對 Loss:讓 loss 與 metric 接近(要 MAPE → 考慮 MAE 或自定 loss)
- 多指標觀察:訓練用 MSE,評估用 MAE + RMSE + MAPE
- Custom Loss(進階):自己設計 loss function
一句話總結:Loss function 用於模型訓練優化,而 evaluation metric 用於模型評估,兩者不一致時可能導致模型表現不符合實際需求。
時間序列「質化驗證」
核心概念
質化驗證 = 用「觀察」去判斷模型好不好,不是只看數值指標(MAE/MSE)
- 藍線:真實值
- 紅線:模型預測
觀察重點
- 大部分區域:預測 ≈ 真實 → OK,模型抓到整體趨勢
- 特殊區域(尖峰/異常/特例):模型沒跟上,預測偏差大
⚠️ 重要觀念
誤差變大 ≠ 模型不好
原因:
- 訓練資料沒出現過這種情況
- 模型只學到「一般趨勢」
- 無法預測突發事件
質化 vs 量化
| 類型 | 方法 | 重點 |
|---|---|---|
| 質化驗證 | 看圖 | 趨勢、形狀 |
| 量化驗證 | 算指標 | MAE / MSE / RMSE |
實務應對
- 補特例資料:讓模型看過這種情境
- 加入特徵:節日 / 活動 / 外部因素
- 分情境建模:一般情況 vs 特殊事件
一句話總結:時間序列質化驗證是透過觀察預測與真實曲線的趨勢與形狀,判斷模型是否合理,並分析誤差來源,而非僅依賴數值指標。
時序預測的三大陷阱
陷阱 1:你以為的時間序列真的是時間序列嗎?
討論4:用宿舍前兩個小時去上廁所的人數估計下一個小時上廁所的人數
重點1:要確保前面時間點跟後面時間點有相關性
陷阱 2:不是所有時序都可以預測
討論5:由前兩天氣溫預測未來一天醫院的備品
- ✅ 備品消耗量 → 可以做預測(氣溫影響消耗)
- ❌ 備品存量 → 無法預測(跟人送來的時間有關,有外來因子)
討論10:股價預測 → 無法,有很多外來因素
重點2:不能有外來的因子影響
陷阱 3:人類行為不一定每次都能分析
討論6:用入園人數+天氣+是否放假預測迪士尼入園人數 → ✅ 可以預測(基數夠大)
討論7:用入園人數+天氣+是否放假預測到小明家人數 → ❌ 無法(基數太小)
重點3:基數量要夠大
補充討論
太陽能發電量能直接用時間序列預測嗎?
❌ 不行 原因:目前發電量跟太陽強度與烏雲有關,與前時間點發電量無關,不是時序問題。
改進方式:
資料類型(Data Types)
| 資料類型 | 特性 | 例子 | 對應方法 |
|---|---|---|---|
| 離散資料 | 一筆一筆獨立,彼此分開 | 性別、顧客ID、訂單數 | 分類、統計 |
| 連續資料 | 固定時間間隔,有時間順序 | 每日溫度、股票價格 | 時間序列分析 |
| 時空資料 | 同時包含時間 + 空間 | 天氣、空氣品質、交通流量 | GIS / 時空模型 |
| 文字資料 | 無固定格式,非結構化 | 評論、新聞、醫療紀錄 | NLP |
| 圖形資料 | 高維度(像素) | 醫療影像、衛星圖 | CNN / CV |
一句話總結:資料類型決定分析方法,不同型態的資料需採用不同的處理與建模技術。
資料類型對應模型
| 資料類型 | 常用模型 |
|---|---|
| 離散資料 | DNN |
| 時序資料 | RNN / LSTM |
| 圖像資料 | CNN(YOLO) |
| 文字資料 | BERT |
AutoEncoder(重點)
基本結構
Input → Encoder → Latent Space → Decoder → Output
目標:讓輸出 ≈ 輸入,自動學習資料的「特徵表示」
關鍵特性
- 無監督學習,不需要 label
- 中間「瓶頸」= 壓縮後的特徵(latent representation)
AutoEncoder vs One-hot [[遺傳演算法-GA-Encoding]]
| 方法 | 特性 |
|---|---|
| One-hot | 人工標籤,明確類別 |
| AutoEncoder | 自動學特徵,不需標籤也能區分 |
AutoEncoder 的用途
- 特徵萃取(Feature Extraction):取代手動設計特徵
- 降維(Dimensionality Reduction):類似 PCA-vs-LDA,但更強
- 異常偵測(Anomaly Detection):重建誤差大 = 異常
- 分群(Clustering):latent space 會自然分群
與其他模型的關係
資料 → AutoEncoder → Feature → CNN / DNN / LSTM / GAN → 預測
重要觀念:Feature 比 Model 更重要,AutoEncoder 就是在做 Feature Learning
一句話總結:AutoEncoder 是一種無監督學習模型,透過重建輸入資料來學習其潛在特徵,可用於降維、特徵萃取與異常偵測,並可作為其他模型的輸入。
回歸與時序的實驗設計
重複次數(核心觀念)
- 實驗需要重複約 30 次才有意義
- 多次取平均才可信(統計穩定性)
對照組設計
- 需要有實驗組(我們的方法)和對照組(baseline)
- 兩組都跑 30 次,再做比較
- 有對照才能說「我們的方法比較好」
結果判斷
- 兩組分布無交集 → 差異顯著,方法有效
- 兩組分布高度重疊 → 差異不顯著
訊號處理重點
一、時域 vs 頻域
| 類型 | 軸向 | 說明 |
|---|---|---|
| 時域(Time Domain) | 振幅 vs Time | 訊號隨時間變化 |
| 頻域(Frequency Domain) | 振幅 vs Frequency | 訊號由哪些頻率組成 |
轉換方法:Fourier Transform(傅立葉轉換)
二、模型選擇
| 訊號成分 | 模型 |
|---|---|
| 高頻震盪 | DNN |
| 低頻/平滑 | DNN |
| 時序趨勢 | LSTM |
| 雜訊 | 不建模 |
三、時序分解流程
時域訊號 → Fourier 轉頻域 → 分析頻率組成
→ 分解(Trend / Seasonality / Residual)
→ 不同成分用不同模型(DNN / LSTM)
一句話總結:訊號先轉頻域分析,再分解成不同成分,最後用適合的模型處理。
連續訊號 → 時頻圖(訊號處理與Spectrogram)
核心概念
連續訊號 → 轉成圖片(時頻圖)
- X 軸:Time
- Y 軸:Frequency
- 顏色/強度:振幅(能量)
轉換方式:STFT(短時傅立葉轉換)
- 將「時間序列」切成小段(windowing)
- 每段做頻域分析
- 結果:時間 × 頻率的 2D 表示(圖片)
為什麼轉圖片?
把時間序列問題 → 轉成電腦視覺問題
- 可以用 CNN 做分類(pattern recognition)
- 可以用 YOLO 找出特定時間區段(事件偵測)
流程(考試會考)
原始訊號 → 分段(windowing) → STFT → spectrogram(圖片) → CNN/YOLO → 分類或事件偵測
一句話總結:把時間序列轉成時頻圖,讓 CNN / YOLO 用影像方式抓訊號特徵。
CNN 的限制與改進
研究流程(老師強調)
- 先看別人怎麼做
- 找問題(限制)
- 提出改進方法(你的貢獻)
CNN 的核心問題
1. Convolution 限制
- Kernel size 固定,只能抓固定大小的 pattern
- 無法適應不同尺寸物體或不同尺度特徵
2. 空間理解問題
- CNN 擅長局部特徵(local pattern)
- 不擅長全局關係(global structure)
- 問題:地圖/網格資料中每個位置語意不同,但 CNN 用同一組 filter 處理
3. 任務混在一起
- 一張圖中有多個不同區域任務
- CNN 同一個 filter 做同一件事 → 不適合 multi-task / heterogeneous data
CNN 假設 vs 現實
| CNN 假設 | 現實 |
|---|---|
| 平移不變性 | 不同位置 = 不同語意 |
| 局部感受野 | 不同區塊 = 不同任務 |
改進方向
- 1×1 Convolution:做 feature transformation,增加 channel 學習能力
- 區域拆分(Spatial Partition):把圖切成多區塊,每個區塊做不同任務
- 多尺度處理:使用不同大小的 receptive field
核心一句話:CNN 最大問題是用同一組 filter 處理所有位置,但不同位置其實是不同任務。
降維(Dimensionality Reduction)
為什麼需要做降維?
大數據分析在產業中的定位希望收集所有有用資料,但資料欄位太多會造成:
- 太多無用欄位,影響建模準確度
- 欄位有用但太多雜訊,影響建模準確度
- 欄位只部分有用,其他無用部分影響準確度
- 提供同樣資訊的欄位太多 → overfitting
降維的目標
- 去除無用的欄位,只保留有用的欄位
- 去除欄位中的雜訊
- 讓資料集內的資料越分開越好
兩種作法
Feature GA-Step4-Selection
- 原本:a, b, c, d, e → 新:a, b, c
- 直接挑選原始欄位,捨棄無用欄位
Feature Extraction
- 原本:a, b, c, d, e → 新:,
- 把原始欄位線性組合成新特徵
建模準確度比較
| 作法 | 說明 |
|---|---|
| Feature Selection | 選出有用欄位 |
| Feature Extraction | 以較少的輸入取得更好的建模結果 |
應用層面
| 作法 | 適用場景 |
|---|---|
| Feature Selection | 硬體(降低 Cost) |
| Feature Extraction | 軟體、雲端、Deep-Learning參數設計 前幾層(取資料 → 降維 → 建模) |
常用演算法:
- PCA:對任何資料都通用
- LDA:分類專用
- t-SNE:視覺化降維首選
降維效能的評估
量化(用數字評估)
- 既有指標
- 用降維結果去做分類或建模,看效果如何
質化(用現象/案例讓專家決定)
- 挑正常與極端的案例,判斷降維後兩者是否能分開
- 質化討論目標:
- 大部分好
- 少部分差(解釋原因):資料本身的問題(包含模型沒考慮的特殊狀況)→ 承認模型限制,列為未來工作目標
補充:資料科學常見手段
如何把未知族群分成多群並探討各群原因?
機器學習實現方式:
- 分群演算法:如 k-means
- 隨機森林:做可解釋 AI
分類(Classification)與 分類與ConfusionMatrix
⚠️ 必考重點:要取 Confusion Matrix 哪個數值作為結果是需要討論的!
Confusion Matrix 範例
以辨識四個科系(工管、設計、電機、應外)為例:
| 工管(真實) | 設計(真實) | 電機(真實) | 應外(真實) | |
|---|---|---|---|---|
| 工管(預測) | 21 / 21.0% | 1 / 1.0% | 0 / 0.0% | 1 / 1.0% |
| 設計(預測) | 2 / 2.0% | 20 / 20.0% | 1 / 1.0% | 0 / 0.0% |
| 電機(預測) | 0 / 0.0% | 0 / 0.0% | 29 / 29.0% | 0 / 0.0% |
| 應外(預測) | 2 / 2.0% | 0 / 0.0% | 0 / 0.0% | 29 / 29.0% |
整體準確率:93%
三個討論問題
| 討論 | 問題 | 對應指標 |
|---|---|---|
| 討論1 | 如果是要判斷辨識能力? | 整體 Accuracy |
| 討論2 | 如果是要判斷工管系學生被辨識出的容易程度? | Recall(召回率) |
| 討論3 | 一個學生被說是電機學生,一定是對的嗎? | Precision(精確率) |
核心觀念:Accuracy、Precision、Recall 各有適用場景,不能單看一個數字!
⚠️ 陷阱:總辨識率不一定是最好
在訓練分類模型時,不是總辨識率最高就好!
情境:兩種快篩試紙的癌症辨識結果,哪種比較好?
試紙 A(總辨識率 75%)
| 試紙呈現 \ 真實狀況 | 有癌症 | 沒有癌症 | 辨識率 |
|---|---|---|---|
| 有癌症 | 100 | 50 | 67% |
| 沒有癌症 | 0 | 50 | 100% |
| 辨識率 | 100% | 50% | 75% |
試紙 B(總辨識率 95%)
| 試紙呈現 \ 真實狀況 | 有癌症 | 沒有癌症 | 辨識率 |
|---|---|---|---|
| 有癌症 | 90 | 0 | 100% |
| 沒有癌症 | 10 | 100 | 91% |
| 辨識率 | 90% | 100% | 95% |
分析比較
| 指標 | 試紙 A | 試紙 B |
|---|---|---|
| 總辨識率 | 75% | 95% |
| 癌症 Recall(有癌症被抓出來的比例) | 100% | 90% |
| 偽陰性(漏診癌症人數) | 0 人 | 10 人 |
| 偽陽性(誤診為有癌症) | 50 人 | 0 人 |
結論
- 試紙 A:不漏診任何癌症(Recall 100%),但誤判率高(50 人被誤診),總辨識率低
- 試紙 B:總辨識率高(95%),偽陽性為 0,但有 10 例癌症被漏診
關鍵觀念:要選哪個指標,取決於「哪種錯誤的代價更高」
- 癌症篩檢 → 漏診代價遠大於誤診 → 優先看 Recall(召回率)
- 不同場景要選不同指標,不能只看 Accuracy!
📊 Regression 評估指標(MAE / MSE / RMSE / MAPE)
評估指標說明
| 指標 | 公式 | 特性 |
|---|---|---|
| MAE(平均絕對誤差) | Σ |error| / n | 不放大大誤差 |
| MSE(均方誤差) | Σ (error²) / n | 放大大誤差,outlier 敏感 |
| RMSE(均方根誤差) | √(Σ error² / n) | 單位與原始資料相同,常用 |
| MAPE(平均絕對百分比誤差) | Σ (|error / y|) × 100% | 看相對誤差,對數值大小敏感 |
四個模型比較
模型1(完美預測):誤差總和 = 0
模型2:誤差總和 = 0
模型3(有偏差):有規律性正負誤差,平均誤差 ≈ 0.8
模型4(有 outlier):x=5 時誤差達 -4,明顯 outlier
重點比較:MAE/MSE/RMSE 相同,MAPE 差很多
例1:誤差固定 +100,但 y 值小(100~500)
- MAE / MSE / RMSE:一樣
- MAPE:❌ 很大(高達 100%)
例2:誤差固定 +100,但 y 值大(10000~50000)
- MAE / MSE / RMSE:一樣
- MAPE:✅ 很小(約 1%)
核心結論(老師重點)
MAE / MSE / RMSE 看「絕對誤差」,不考慮數值大小比例
MAPE 看「相對誤差」,對數值 scale 非常敏感
⚠️ 所以:MAPE 不能單獨使用,必須考慮資料的 scale!
分群(Clustering)
分群與輪廓係數(Silhouette Coefficient)
分群的目標:
- 內部距離最小化:同一群內的點要越近越好
- 外部距離最大化:不同群之間的點要越遠越好
輪廓係數就是量化這兩個目標的指標。
如何決定最佳分群數量?——手肘法(Elbow Method)
當分群數量還沒有明確答案時,透過「輪廓係數 vs 分群數量」的圖來找最佳解:
- X 軸:分群數量
- Y 軸:輪廓係數(KPI)
- 曲線通常先快速下降,再趨於平緩
- 肘點(Elbow Point)= 最佳解:KPI 改善幅度開始變小的轉折點
核心觀念:Trade-off 效能 v.s. 成本
- 分群數量越多 → 建模成本越高
- 分群之後會建模,分群數量越多,後續建模成本增加
- 肘點是「相對好的效能 + 合理成本」的平衡點
分類與分群的質化評估方式
| 問題類型 | 質化評估方式 |
|---|---|
| 分類 | 挑正常與極端案例討論即可 |
| 分群 | 想辦法證明同一群內的資料類似(case by case) |