上一篇初步了解 AI 這個領域的分類和常用名詞,機器學習我將會拆成上集「監督式學習」、上級「監督式學習:預測」與 下集「非監督式學習」。
在機器學習中,邏輯回歸是解決二元分類問題(正負、是否)的方法,雖然有「回歸」這兩個字,但主要用於分類,作為預測的是 Linear Regression 線性回歸。
黃色的這條線是 Sigmoid 函數 計算出屬於某類別的機率,(此函數的數學較複雜,我就放棄了) Sigmoid 函數將任何實數 z 投影到 0 到 1 之間的範圍。
假設要預測一位顧客是否會購買產品:
Logistic Regression in 3 Minutes圖片來源
想像今天我要用一刀切資料,一定會有資料被是誤判。這些狀況可以用 Ture / Fasle 表示,寫成 Consion Matrix,讓我拿 Google 的影片來舉例。
Machine Learning Crash Course: Classification
一、先隨機切,左半邊全是 Nagative,右半邊全是 Positive (但是一定有被錯誤分類的,例如實際陰性被歸類為陽性,實際陽性被歸內為陰性。
刻度量尺是 Threshold,Threshold 是一個設定的分界值,通常用在機率型模型(例如 Logistic Regression)中,來決定預測的類別標籤。模型通常會輸出一個機率(例如輸出一個數值在 0 到 1 之間),而 threshold 決定了這個機率需超過多少時,才能被分到某個類別。例如小於0.5 被歸類為負,大於被歸類為正。
二、混淆矩陣出現:共四種情況
透過調整 threshold (閥值)使 false positive 降成 0
透過混淆矩陣,我們可以計算多種指標,例如:( 數學公式請 ChatGPT 生成)
假設你設計一個垃圾郵件分類器:
痾... 還是分不清楚,沒關係,以下我會用這個影片解釋:
用橘子和蘋果當資料,總共 10 顆水果。
有哪些水果是正確被分類的?橘子邊的橘子4顆,加上蘋果邊真的是蘋果的3顆。
用 Accuaray 的計算有盲點,如果資料是極度不平均,例如 990 顆橘子跟 10 顆蘋果,準確率高達99% (990/1000) 模型很可能會跟我說「全部都是橘子」。
這時候就需要 Precision 跟 Recall 概念。我們主要關注 蘋果的類別。
被分在蘋果邊中的水果有5個,真正是蘋果邊的有3個,所以 Precision 是 60%。
全部的蘋果,有多少蘋果是被正確分類的?3顆,所以是3/4=75%。
提高 召回率(Recall),但可能犧牲 精確率(Precision)。如果我將模型重新調整:使 Precision 提高,但 Recall 就降低
範例應用
延續上一段,我們會調整 Threshold,在 Precision 和 Recall 之間取得平衡。通常我們會透過 ROC 曲線 或 Precision-Recall 曲線 來幫助選擇最佳的 threshold。
繪製 ROC True Positive Rate (TPR) 和 False Positive Rate (FPR) 的變化。
ROC 曲線展示的是模型如何在不同的閾值下平衡 TPR 和 FPR。
實際畫 ROC 的範例:
先畫第一個點,找到 TPR 畫虛線,再用 FPR 畫第二個虛線。交集處為第一個點,以此類推。
畫出線之後,要檢驗
AUC 是 ROC 曲線下的面積,數值介於 0 到 1 之間。
All Machine Learning algorithms explained in 17 min
核心概念:
例子:
假設你有一個資料集,包含紅色 (類別 A) 和藍色點 (類別 B)。當一個新點加入時,KNN 會計算它與所有已知點的距離,然後選取最近的 K 個點來決定新點的類別。例如,K = 3時,會選擇新加入的點附近三點,如果附近的3個點,有兩個是紅色1個藍色,新加入的點就被歸類為紅色。
如果這是線性的值,例如最近的值是51, 52, 53, 就取平均
k = 4 即新加入的點,最近的4點。
優點:
缺點:
目的是在不同類別之間找到「最佳的分隔線(或分隔超平面)」。(摩西分紅海?) 這個概念最在「多維度的資料」之中最有效過。
最佳的分隔線應該要 最大化兩個類別之間的邊界距離。
中間粗線是分隔線;支持向量是螢光筆區圈起來的點。
冷知識:為什麼明明是點,要取名為「Support Vectors」?
在數學裡,vectors(向量)是一種表示空間中方向和大小的數學工具。在 SVM 裡,每一筆資料(例如一個座標點)都可以視為一個向量,因為它有多個特徵,可以用向量來表示它們在空間中的位置。
舉例來說,如果有兩個特徵(例如年齡和薪水),每筆資料就可以被看成一個平面上的點或一個向量 [x,y]。這些向量決定了資料分布,SVM 則利用這些向量來畫出分界線。這些點「支撐」了 SVM 所畫出的分界線,它們決定了分界線的位置和方向。(要有一點想像力哈哈)
當資料無法用直線分開時,我們可以利用 Kernel Trick,將資料從低維空間轉換到高維空間,使其在高維空間中可線性分隔。
SVM 的應用
多維的資料模型
先看這個分類方式主要用在哪裡。因為我高中機率快忘光光,所以就不詳細研究這個主題。
垃圾郵件分類
假設我們要分類一組電子郵件是否為垃圾郵件,訓練數據集中 40% 是垃圾郵件,60% 是非垃圾郵件。垃圾郵件的先驗機率(Prior Probability)已知的機率是
每個節點往下都用「是否」問句來分類,或是二分法,例如我們要建立一個決策樹來預測一位動物,特徵包含身高、水生或陸地動物、脖子長短等等。
這樣聽起來很簡單,怎麼做到機器學習?如果把很多決策樹合在一起就可以做到了。這個技術就是 Bagging & Random Forests