---
# System prepended metadata

title: 5_機器學習基本概念
tags: [機器學習教材]

---

# 機器學習基本概念
## Source
- 應⽤機器學習於Python C1
- 大數據分析與資料探勘 W5
- [Website](https://medium.com/data-science/clearly-explained-how-machine-learning-differs-from-statistical-modeling-967f2c5a9cfd)

## 課堂投影片與練習
- [ ] **學習目標：**
    1.  **理解機器學習的定義與核心概念**：什麼是機器學習？它為什麼重要？
    2.  **認識機器學習的四大種類**：監督式、非監督式、半監督式、增強式學習。
    3.  **了解機器學習的實作流程**：
    - 機器學習不只是「寫程式」，而是一個有步驟的過程，包含：
         - **資料準備**：整理與清理資料（你們已經學會用 Pandas）
         - **特徵工程**：挑選或製造對預測有用的欄位
         - **建立模型**：選擇演算法並訓練模型（如線性回歸、決策樹等）
         - **評估與調整**：測試模型表現並進行優化
         - **實際應用**：使用模型做分類或預測，如判斷顧客是否會流失

---

- [ ] **機器學習的定義：讓電腦從經驗中學習**

<!-- *   **核心定義**：機器學習是一種電腦程式利用數據自主學習並優化性能的「科學與藝術」。 -->
*   **學術解釋**：用更學術一點的說法，一個程式如果能透過經驗 (Experience E) 來執行某項任務 (Task T)，並透過績效衡量 (Performance Measure P) 來評估表現，且其在任務 T 上的表現能透過經驗 E 得到提升，就被認為是一個具備學習能力的機器學習系統
*   **白話解釋**：就是一個程式或模式，能夠根據過去的**經驗（資料）**進行學習，以完成特定任務，並且有一個**效能評估 (performance measure)** 去評估這些任務做得如何。倘若這些效能評估可以透過利用過往資料來提升的話，稱之為機器學習。

*   **機器學習的目標**：透過大量的訓練資料，經由演算法建構出一個**假說 (hypothesis g)**，這個假說希望能**近似於真實的目標 (target f)**，而目標 f 指的是變數 X 和 Y 之間的未知關係。例如，房屋價格 (Y) 與房屋面積、地段 (X) 之間的關係是未知的，機器學習會嘗試建立一個模型 (g) 來近似它。
---
*   **舉例**：想像你的電子郵件過濾器。
    *   **任務 (T)**：將信件分類為「垃圾郵件」或「非垃圾郵件」。
    *   **經驗 (E)**：透過觀察大量的信件（有些你標註為垃圾，有些不是）。
    *   **績效 (P)**：程式最終能正確分類垃圾郵件的數量（準確度）。
    *   透過不斷的「經驗」（你持續標註信件），程式會越來越準確地過濾垃圾郵件，這就是機器學習。
---

- [ ] **為什麼機器學習如此熱門？**

*   機器學習之所以受到廣泛關注，主要有以下幾個原因：
    *   **成本逐漸下降**：計算資源與數據儲存成本降低。
    *   **電腦運算能力顯著增強**：硬體技術的進步，特別是CPU效能提升。
    *   **資訊量大幅增加**：進入大數據時代，資料量爆炸式成長。
---
*   **機器學習能解決人類難以處理的問題**：
    *   **高頻率的大量運算**：例如，在極短時間內（10-20秒）判斷股票買賣。
    *   **從多維度的巨量資料中進行分析**：處理人類難以理解的複雜數據。
    *   **回答人類無法回答的問題**：例如黑洞探索、火星降落等人類沒有親身經驗的問題。
    *   **解決人類無法輕易定義方法的問題**：例如多樣化的語音辨識（如非洲方言），人類難以為全世界所有語言定義辨識規則。
    *   **因應多變性並提供個人化服務**：例如推斷個人喜好，這類問題人類難以輕易推論。

---

- [ ] **機器學習是萬能的嗎？**

*   **機器學習的限制**：儘管功能強大，但機器學習並非萬能。
    *   **結果難以解釋**：許多機器學習模型對人類而言是「黑盒子」，其探索過程和結果難以被人理解。
    *   **受限於資料稀疏或不足**：機器需要經驗來建構模型，如果相關資料不足，其表現將會不佳。
    *   **無法處理規則持續變化的情境**：例如股市預測，如果背後的規則不斷變化，機器學習到的規則很難適用於未來，甚至可能導致損失。
    *   **機器學習的回饋或答案**：會根據模型訓練者一開始給予的答案和類別來反應。如果從未提供某種類別的資料，機器將無法辨識該類別（例如，你只給貓狗照片訓練模型，放一張豬的照片進去，它只會判斷是貓或狗，而不是豬）。
---
*   **適合運用機器學習的時機**：
    *   **存在潛在規則，但人類難以或需耗費大量時間判斷**。
    *   **無法或難以透過傳統程式碼（例如 If-Else 規則）來定義所有問題解決方法時**，機器學習可以幫助找出一些相關或未知的規則。
    *   **可以提供規則學習的資料時**：機器學習需要有足夠的輸入資料才能進行學習。

---

- [ ] **課中練習一：機器學習概念辨識**

1.  **任務**：請閱讀以下情境，並嘗試辨識其中的 **任務 (Task T)**、**經驗 (Experience E)** 和 **績效衡量 (Performance Measure P)**。

    *   **情境**：一家電商平台希望透過機器學習來推薦商品給使用者。當使用者瀏覽商品後，系統會推薦一些他可能喜歡的商品。如果使用者點擊了推薦的商品，系統會認為推薦成功。透過不斷記錄使用者的瀏覽行為和點擊結果，推薦系統的準確度越來越高。

2.  **思考與回答**：
    *   **任務 (T)** 是什麼？
    *   **經驗 (E)** 是什麼？
    *   **績效衡量 (P)** 是什麼？


---

- [ ] **機器學習與相關領域的關係**
![image](https://hackmd.io/_uploads/HkFjKBztC.png =300x)
*   **機器學習與人工智慧 (AI)**：
    *   **人工智慧 (AI)** 是一個更廣泛的概念，只要程式能表現出智慧行為，即使透過大量規則建構，也可稱為 AI。
    *   **機器學習 (ML)** 是**人工智慧的一個子學科**，或者說是**實現人工智慧的一種途徑**，主要透過資料學習來提升效能表現。
    *   可以把 AI 想成是一個大目標（讓機器像人一樣聰明），ML 則是達成這個目標的其中一種強大工具。
---
*   **機器學習與深度學習 (Deep Learning, DL)**：
    *   **深度學習 (DL)** 是**機器學習的一部分**。
    *   早期深度學習因速度問題不普及，但近年來由於 **CPU 硬體效能顯著提升**，克服了速度問題並取得顯著成果，因此成為獨立的熱門領域。
    *   **深度學習的特色**：它**捨棄了人類知識做的特徵萃取**，而是讓多層結構的神經網路從大量的資料中**自行學習如何進行特徵擷取**。
    *   **深度學習特別適用於**：
        *   **沒有標準答案的特徵工程**。
        *   **非結構化資料及序列資料**，在圖像識別、語音識別等領域取得了突破性進展。
        *   **資料集龐大時**，表現會比傳統機器學習好。
    *   機器學習與深度學習的差異
![image](https://hackmd.io/_uploads/B1SgsSfFR.png =500x)
---
- [ ] **機器學習於資料科學領域中的腳色**
![image](https://hackmd.io/_uploads/BJEb4UB7el.png =500x)
* 數據科學是一個跨學科領域
* 它結合了統計學、計算機科學和領域專業知識
* 機器學習是數據科學中的一個重要工具
* 數據科學家經常使用機器學習來分析大量數據並得出見解
---
*   **圖樣識別（Pattern Recognition）**：
    *   圖樣識別是機器學習的關鍵應用來源之一，強調如何讓電腦從資料中自動辨認出**規律**或**模式**，也可以說從資料中找出**相似性**與**分類依據**。
    *  **例子：**
        - 手寫數字辨識（輸入 8，模型判斷是數字 8）
        - 影像分類（判斷圖片是狗還是貓）
        - 醫學影像診斷（從X光判斷是否有腫瘤）

*   **統計學 (Statistics)**：
    *   機器學習和統計學是**比鄰的好朋友**。機器學習的許多基本觀念來自於統計學。
    *   **統計學**強調數學證明、推導、假設檢定和解釋性。
    *   **機器學習**雖然模式背後也使用許多統計概念，但它更**偏重於經驗法則及結果論**，主要依照預測結果的好壞（performance）來判斷模型優劣，較不強調檢定與假設。

*   **資料探勘 (Data Mining, DM)**：
    *   如果機器學習所找到的「近似目標的假說」與資料探勘要尋找的「有趣的特性」是相同的，那麼機器學習等同於資料探勘。
    *   如果兩者相關，則資料探勘可以幫助機器學習，反之亦然。
    *   傳統資料探勘也著重於在大型資料庫中進行高效能運算。

---

- [ ] **機器學習的四大種類**

*   機器學習和人類學習的方式十分相似。要讓機器像人一樣具有學習能力，通常會先進行資料的「分類」或「分群」，才能進一步分析、理解、判斷並採取行動。
*   機器學習的種類主要可以分為四種，我們將逐一深入探討：
    1.  **監督式學習 (Supervised Learning)**
    2.  **非監督式學習 (Unsupervised Learning)**
    3.  **半監督式學習 (Semi-supervised Learning)**
    4.  **增強式學習 (Reinforcement Learning)**

---

- [ ] **監督式學習 (Supervised Learning)**

*   **特性**：
    *   所有資料都已被**標註 (labeled)**，就像是我們提供了「標準答案」給機器。
    *   機器透過這些標籤學習資料的特徵，並進行預測或分類。
    *   對電腦來說是最簡單，但對人類而言需要大量人工標註，最為辛苦。
    *   **舉例**：如果你要訓練機器辨識貓狗，你需要準備100張貓和100張狗的照片，並且每張照片都**明確標註**「這是貓」或「這是狗」。

*   **輸入與輸出**：
    *   **輸入**：**有標籤的資料**。
    *   **輸出**：通常用於**分類 (Classification)** 和**迴歸 (Regression) 預測**。
---
*   **應用案例**：
    *   **分類 (Classification)**：預測離散的類別。
        *   判斷是否為垃圾信件（二元分類）。
        *   判斷是否罹患疾病（二元分類）。
        *   生物品種分類（如：根據花瓣和花萼寬度判斷鳶尾花品種）。
        *   硬幣分類、衣物尺寸分類（多元分類）。
    *   **迴歸 (Regression)**：預測連續的數值。
        *   預測房屋價格（基於面積、地段、屋齡等）。
        *   預測住宅電力需求量（基於國民所得、電價、人口數、氣候等）。
        *   目的是使用過去資料，建立解釋變數與被解釋變數的關係式，以預測被解釋變數。

---

- [ ] **非監督式學習 (Unsupervised Learning)**

*   **特性**：
    *   所有資料**沒有標註**，機器必須自行尋找資料的特徵並進行分類或分群。
    *   對人類來說最容易（不需人工標註），但機器辨識的**誤差可能較大**。
    *   **舉例**：你提供100張貓狗照片，但**不告訴機器哪些是貓哪些是狗**。機器會嘗試自動從這些照片中找出相似的特徵（例如，將長毛且有鬍鬚的歸為一組，短毛且有大耳朵的歸為另一組）。

*   **輸入與輸出**：
    *   **輸入**：**大量無標籤的資料**。
    *   **輸出**：通常用於**分群 (Clustering)** 和**降維 (Dimensionality Reduction)**。
---
*   **應用案例**：
    *   **顧客分群議題**：例如，將電商平台的顧客，根據他們的購買行為和瀏覽歷史，自動分成幾種類型（例如：高消費群、促銷敏感群、只看不買群），以便進行精準行銷。

---

- [ ] **半監督式學習 (Semi-supervised Learning)**

*   **特性**：
    *   結合監督式和非監督式學習的優點。
    *   只對**少部分資料進行標註**，電腦透過有標註的資料找出特徵，再對其他沒有標註的資料進行分類。
    *   在大數據時代，很難對所有資料進行全面標註，這種方法能解決這個困難。
    *   結果通常比非監督式學習更精準。
    *   **舉例**：你有200張貓狗照片，但你只標註了其中10張貓和10張狗的照片。機器會先從這20張已標註的照片中學習特徵，然後嘗試對剩下的180張未標註照片進行分類。

*   **輸入與輸出**：
    *   **輸入**：**部分標籤資料**。
    *   **輸出**：與監督式學習類似，用於**分類與迴歸預測**。
---
*   **應用案例**：
    *   **垃圾信件偵測**：你不需要手動標註每一封垃圾信件，只要標註少量已知的垃圾信件，系統就能學習並偵測出其他的垃圾信件。
    *   **Facebook 照片標註朋友姓名**：Facebook會根據你標註過的朋友，自動推薦照片中的其他人可能是誰。

---

- [ ] **增強式學習 (Reinforcement Learning)**

*   **特性**：
    *   機器透過**每一次與環境的互動來學習**。
    *   沒有預設的正確答案，而是透過**獎勵 (reward)** 和**懲罰 (penalty)** 的累積來判斷行為的正確性。
    *   機器會根據成功與失敗的經驗不斷調整和學習，就像一個不斷嘗試的開創者。
    *   **舉例**：想像一個機器人學習走路。它一開始可能跌倒，這會得到「懲罰」。當它成功走一步，會得到「獎勵」。透過無數次的跌倒與站起，它最終學會如何穩定地走路。

*   **輸入與輸出**：
    *   它的輸入和輸出緊密關聯，**上一輪的輸出（是否成功或出錯）會改變學習模式，影響下一輪的預測**。
---
*   **應用案例**：
    *   **高度創意性的專案**：例如 **AlphaGo**（下圍棋）和**自駕車**。這些專案的複雜性使得人類難以預先規劃所有可能的情況和規則，增強式學習能讓機器在不斷試錯中找到最佳策略。
    *   **遊戲AI**：讓AI在遊戲中學習如何取得高分。

---

- [ ] **課中練習二：機器學習種類判斷**

1.  **任務**：請閱讀以下情境，判斷最適合應用哪一種機器學習類型 (監督式、非監督式、半監督式、增強式)，並簡要說明原因。

    *   **情境一**：一家零售商擁有大量顧客的消費紀錄，但這些紀錄沒有任何標籤。他們希望從中找出不同類型的顧客群，以便進行分眾行銷。
    *   **情境二**：你正在開發一個自動駕駛系統，汽車需要學會在複雜的交通環境中安全駕駛，避開障礙物，並根據即時路況做出決策。
    *   **情境三**：你收集了大量的植物圖片，其中只有少部分圖片有專業人員標註了植物的名稱（例如：玫瑰、鬱金香），大部分圖片都沒有標籤。你希望訓練一個模型，能識別新的植物圖片。
    *   **情境四**：一個醫院希望開發一個模型，能根據病患的各項檢查數據（例如：血壓、血糖、體重），判斷病患是否罹患某種疾病。他們有大量的歷史病患數據，且這些數據都明確記錄了病患是否罹患該疾病。

2.  **提示**：回想不同種類機器學習的**資料特性（是否有標籤）**和**應用目的**。

---

- [ ] **機器學習的學習步驟**==可一頁用Napkin，另一頁用文字補述==

*   機器學習的運作流程可以簡化為以下幾個核心步驟：
    1.  **訓練資料 (Training Data) 準備**：
        *   收集大量的原始資料。
        *   盡可能包含所有你希望模型能學習到的種類。
        *   例如：如果要訓練模型辨識貓狗，就必須收集大量的貓和狗的照片。
    2.  **特徵擷取 (Feature Extraction)**：
        *   從原始資料中提煉出對學習有用的、能夠區分不同類別的「特徵」。
        *   例如：貓狗的形狀、花紋、耳朵形狀、聲音種類等。
        *   在深度學習中，這一部分可以由神經網路自行學習。
    3.  **模型建構 (Model Building)**：
        *   使用機器學習演算法（例如我們之後會學到的K-Nearest Neighbors, Decision Tree等），從提取出的特徵資料中建構出一個「模型」。
        *   這個模型就是我們之前提到的「假說g」，它會學習資料背後的規則。
    4.  **產生答案 (Answer) / 預測**：
        *   利用建構好的模型對新的、未見過的資料進行判斷或預測。
        *   例如：給模型一張新的圖片，它會判斷是貓還是狗。

*   **重要提醒**：機器學習模型的反饋/答案，是根據**訓練者一開始給予的答案和類別來反應的**。如果模型從未在訓練時見過某種類別的資料，它將無法識別該類別。

---

- [ ] **如何評估機器學習模型的好壞？**

*   為了客觀地評估機器學習模型的品質和預測能力，我們通常會將收集到的**資料集分割**為兩大部分：
    1.  **訓練資料集 (Training Dataset)**：
        *   用於**建構**和**訓練**機器學習模型。
        *   通常佔全部資料的 **70% 或 80%**。
        *   模型會從這些資料中學習規則和模式。
    2.  **測試資料集 (Testing Dataset)**：
        *   用於**評估**模型訓練完成後的**準確率**和**泛化能力**（指模型對未見過資料的預測能力）。
        *   通常佔全部資料的 **20% 或 30%**。
        *   我們會用模型在測試資料集上的「預測值」與「實際值」進行比對，計算誤差，來評估模型品質。
---
*   **常用的資料分割比例**：
    *   70% 訓練資料 vs. 30% 測試資料
    *   75% 訓練資料 vs. 25% 測試資料
    *   80% 訓練資料 vs. 20% 測試資料

*   **Python 工具**：在 Python 中，我們可以使用 **Scikit-Learn (SKlearn)** 套件中的 `sklearn.model_selection.train_test_split()` 函式來輕鬆完成資料分割。
    *   `from sklearn.model_selection import train_test_split`

---

- [ ] **機器學習的利器：Scikit-Learn (SKlearn)**

*   **什麼是 SKlearn？**
    *   **Scikit-Learn (SKlearn)** 是一個非常流行且功能強大的機器學習套件。
    *   它已經內建在我們常用的 **Anaconda** 環境中，可以直接使用。
    *   SKlearn 包含了許多知名的機器學習模型，並提供了一些小型資料集供我們練習使用。
---
*   **SKlearn 的主要功能分類**：
    *   在 SKlearn 的官方網站上，機器學習功能被分為六大塊：
        1.  **監督式學習**：
            *   分類 (Classification)
            *   迴歸 (Regression)
        2.  **非監督式學習**：
            *   分群 (Clustering)
            *   維度降低 (Dimensionality Reduction)
        3.  **其他重要功能**：
            *   模型選擇 (Model Selection)
            *   資料前處理 (Preprocess)

*   **網址**：https://scikit-learn.org/stable/

---

- [ ] **課中練習三：資料分割與模型限制**

1.  **任務**：假設你收集了一批包含貓、狗、鳥三種動物圖片的資料集，總共有 1000 張圖片。

    *   **問題一**：如果你打算使用這些資料來訓練一個機器學習模型，並評估其效能，你通常會如何將這些資料進行分割？請說明訓練資料集和測試資料集的**大約比例**及**各自的目的**。
    *   **問題二**：如果你訓練完的模型，將一張「魚」的照片輸入進去，你預期模型會輸出什麼結果？為什麼？

2.  **思考與回答**：
    *   問題一：訓練資料集與測試資料集的比例和目的？
    *   問題二：輸入魚的照片預期的結果是什麼？原因？

3.  **提示**：
    *   回想我們如何評估模型品質以及訓練資料和測試資料的用途。
    *   回顧機器學習模型對未見過資料的反應。

---

- [ ] **今日課程總結與未來展望**

*   **今日重點回顧**：
    *   我們學習了**機器學習的定義**：透過經驗 E 執行任務 T 並衡量績效 P。
    *   了解了機器學習的四大**種類**：監督式、非監督式、半監督式、增強式學習，以及它們的特性與應用。
    *   認識了機器學習的**基本步驟**：從資料準備、特徵擷取、模型建構到產生答案。
    *   理解了**資料分割**的重要性，以及常用工具 **Scikit-Learn**。

*   **接下來**：
    *   我們將會更深入地學習不同的機器學習演算法，並開始動手使用 Python 和 Scikit-Learn 進行實作。
    *   請大家務必多加練習，動手做才能真正掌握機器學習的奧秘！

*   **問答時間**：
    *   大家有任何疑問或想討論的地方嗎？