機器學習知識地圖 · 監督式學習
邏輯斯回歸
二元分類(Yes/No)
觀念教學
名字有「回歸」,幹的卻是分類 — 邏輯斯回歸(Logistic Regression)先算出一個 0 到 1 的機率,再用門檻切成 Yes 或 No,是二元分類的第一首選。
核心觀念
把線性模型的輸出丟進 Sigmoid 函數 — 一條 S 形曲線,把任何數字壓進 0 到 1 之間變成機率;超過門檻(常設 0.5)判正類,否則判負類。它本質仍是線性模型,決策邊界是一條直線(超平面)。
白話理解
「這位病患罹患糖尿病的機率是 0.73」— 超過 0.5,系統發出風險警示。它給的不只是答案,還有信心程度;醫療與金融這種要說得出理由的場域,特別愛用它。
優缺點
- 優點:簡單快速;輸出機率而不只是分類結果;係數可解釋每個特徵的影響力
- 典型場景:疾病診斷、信用評估、垃圾郵件分類、點擊率預測
- 缺點:決策邊界是線性的,複雜的非線性邊界得手動加特徵交叉或多項式特徵
- 缺點:對離群值較敏感
- 評估:準確率、精確率、召回率、F1、AUC-ROC;機率品質看 Log Loss
🎯 口訣:名字叫回歸,做的是分類;Sigmoid 把分數壓成 0 到 1 的機率。
iPAS 考點
歷屆原題方向:「預測罹病機率(0 到 1),超過 0.5 就警示」→ 選邏輯斯回歸,判斷關鍵字是輸出機率加二元分類;陷阱選項是線性回歸 — 它輸出無界數值,不是機率。另一常考:「邏輯斯回歸是線性還是非線性模型」— 本質線性,只是用 Sigmoid 把輸出轉成機率。
📝 本節掛載 1 題 iPAS 歷屆試題 — 讀完往下到「iPAS 考題練習」直接實戰。
應用場景
評估指標
iPAS 歷屆考題詳解(5 題)
先自行作答,再展開詳解。題目出處均為 iPAS AI 應用規劃師正式考題,著作權屬原主辦單位。
某醫院希望開發一個系統,根據患者資訊預測其罹患糖尿病的機率(0~1),並依據預測值是否超過 0.5 做出風險警示。下列哪一種模型最適合用於此分類任務?
- A邏輯迴歸(Logistic Regression)
- B支援向量機(Support Vector Machine)
- C決策樹(Decision Tree)
- DK 平均演算法(K-means)
看正解與逐選項詳解
正解:A
某金融機構正在建立傳統信用評分卡模型,採用邏輯迴歸(Logistic Regression)作為建模方法,並依循監理機關建議的標準化流程進行模型開發。下列哪一項不是傳統信用評分卡模型開發流程中的常見步驟?
- A使用生成式模型進行特徵學習
- B進行特徵選擇與多重共線性(Multicollinearity)分析
- C進行分箱(Binning)與資訊值(Information Value, IV)檢定
- D使用樣本穩定性指標(Population Stability Index, PSI)檢驗模型穩定性
看正解與逐選項詳解
正解:A
某線上書店希望建立一個多類別書籍推薦模型,根據讀者的「年齡、性別、過去購書類別偏好評分」等特徵,預測讀者下次最可能購買的書籍主題(共 8類)。資料已完整標註,且資料量達數十萬筆。在模型選型上,除了預測準確率外,也需考量模型訓練效率、可擴充性,並需支援快速訓練與線上部署。請問下列哪種方法最適合此情境?
- A多類別羅吉斯迴歸(Multinomial Logistic Regression)
- B支援向量機(SVM)搭配One-vs-One
- CK-means 分群後將群集標籤作為分類結果
- D主成分分析(PCA)後再以最大主成分作為分類依據
看正解與逐選項詳解
正解:A
某電商平台希望建立二元分類模型,根據商品的「價格區間、品牌、顏色、材質」等特徵,將商品分類為「高銷量(1)」或「低銷量(0)」。同時希望模型輸出具備可解釋的機率(如P=0.73 表示73%機率為高銷量)。請問下列哪種方法最適合?
- AK-means 分群(K-means Clustering)
- B決策樹迴歸(Decision Tree Regression)
- C羅吉斯迴歸(Logistic Regression)
- D線性迴歸(Linear Regression)
看正解與逐選項詳解
正解:C
使用鳶尾花卉資料集(iris,目標為 setosa、versicolor、virginica 三個類別)進行羅吉斯迴歸(Logistic Regression)分析。資料分析師已完成資料前處理(包含遺漏值處理與特徵標準化,X_norm 為標準化後的特徵矩陣、y 為目標變數),並準備建立分類模型。已知資料流程如下:1. 將資料區分為訓練集與測試集;2. 建立羅吉斯迴歸模型;3. 使用訓練資料進行模型擬合(fit)。請問下列哪一組 Scikit-learn 程式碼流程最為正確?
- AX_train, X_test, y_train, y_test = train_test_split(X_norm, y, train_size=0.2, random_state=123); log_reg = LogisticRegression(solver="liblinear"); log_reg.fit(X_train, y_train)
- BX_train, X_test, y_train, y_test = train_test_split(X_norm, y, train_size=0.2, random_state=123); log_reg = LogisticRegression(solver="lbfgs"); log_reg.fit(X_train, y_train)
- CX_train, X_test, y_train, y_test = train_test_split(y, X_norm, train_size=0.2, random_state=123); log_reg = LogisticRegression(solver="liblinear"); log_reg.fit(X_train, y_train)
- DX_train, X_test, y_train, y_test = train_test_split(y, X_norm, train_size=0.2, random_state=123); log_reg = LogisticRegression(solver="lbfgs"); log_reg.fit(X_train, y_train)
看正解與逐選項詳解
正解:B