[{"data":1,"prerenderedAt":1236},["ShallowReactive",2],{"navigation_docs":3,"-machine-learning-confusion-matrix":352,"-machine-learning-confusion-matrix-surround":1231},[4,54,83,116,125,161,179,200],{"title":5,"path":6,"stem":7,"children":8},"Ai","/ai","ai",[9,12,42,46,50],{"title":10,"path":6,"stem":11},"AI 技術探索","ai/index",{"title":13,"path":14,"stem":15,"children":16,"page":41},"Rag","/ai/rag","ai/RAG",[17,21,25,29,33,37],{"title":18,"path":19,"stem":20},"BM25 演算法深入解析：從 TF-IDF 到現代搜尋引擎的核心技術","/ai/rag/bm25-deep-dive-from-tf-idf-to-rag","ai/RAG/bm25-deep-dive-from-tf-idf-to-rag",{"title":22,"path":23,"stem":24},"Dense Retrieval（向量檢索）深入解析","/ai/rag/dense-retrieval-deep-dive","ai/RAG/dense-retrieval-deep-dive",{"title":26,"path":27,"stem":28},"RAG（Retrieval-Augmented Generation）原理與實作入門","/ai/rag/rag-intro-principles-and-implementation","ai/RAG/rag-intro-principles-and-implementation",{"title":30,"path":31,"stem":32},"RAG Retrieval Strategy 深入解析","/ai/rag/rag-retrieval-strategy-deep-dive","ai/RAG/rag-retrieval-strategy-deep-dive",{"title":34,"path":35,"stem":36},"Reciprocal Rank Fusion（RRF）教學：打造更穩定的檢索融合策略","/ai/rag/rrf-reciprocal-rank-fusion-guide","ai/RAG/rrf-reciprocal-rank-fusion-guide",{"title":38,"path":39,"stem":40},"TF-IDF（Term Frequency–Inverse Document Frequency）深入解析","/ai/rag/tf-idf-deep-dive","ai/RAG/tf-idf-deep-dive",false,{"title":43,"path":44,"stem":45},"Docus AI 功能完整實作指南","/ai/docus-ai-implementation","ai/docus-ai-implementation",{"title":47,"path":48,"stem":49},"llms.txt 是什麼？在 Nuxt 中控制 AI 與搜尋引擎爬蟲的新方式","/ai/llms-txt","ai/llms-txt",{"title":51,"path":52,"stem":53},"MCP（Model Context Protocol）是什麼？用「AI 的 USB-C」理解模型如何安全連接工具與資料","/ai/mcp_concept","ai/mcp_concept",{"title":55,"path":56,"stem":57,"children":58,"page":41},"Data Analysis","/data-analysis","data-analysis",[59,63,67,71,75,79],{"title":60,"path":61,"stem":62},"Exploratory Data Analysis（EDA）資料探索分析入門","/data-analysis/exploratory-data-analysis-eda","data-analysis/exploratory-data-analysis-eda",{"title":64,"path":65,"stem":66},"PR-AUC 深入解析：不平衡分類問題的重要評估指標","/data-analysis/pr-auc-for-imbalanced-classification","data-analysis/pr-auc-for-imbalanced-classification",{"title":68,"path":69,"stem":70},"ROC-AUC 深入解析：理解分類模型的判斷能力","/data-analysis/roc-auc-complete-guide","data-analysis/roc-auc-complete-guide",{"title":72,"path":73,"stem":74},"SHAP（SHapley Additive exPlanations）模型解釋方法深入解析","/data-analysis/shap-model-interpretation-complete-guide","data-analysis/shap-model-interpretation-complete-guide",{"title":76,"path":77,"stem":78},"Social Network Analysis（SNA）深入解析","/data-analysis/social-network-analysis-sna","data-analysis/social-network-analysis-sna",{"title":80,"path":81,"stem":82},"Time-based Split：為什麼時間序列資料不能使用 Random Split？","/data-analysis/time-based-split-vs-random-split","data-analysis/time-based-split-vs-random-split",{"title":84,"path":85,"stem":86,"children":87,"page":41},"MachineLearning","/machine_learning","machine_learning",[88,92,96,100,104,108,112],{"title":89,"path":90,"stem":91},"Confusion Matrix（混淆矩陣）完整解析","/machine_learning/confusion-matrix","machine_learning/confusion-matrix",{"title":93,"path":94,"stem":95},"Decision Tree 模型完整教學：從原理到 Python 實作","/machine_learning/decision-tree-complete-guide","machine_learning/decision-tree-complete-guide",{"title":97,"path":98,"stem":99},"為什麼 Decision Tree 在 Tabular Data 上常常勝過 Deep Learning？","/machine_learning/decision-tree-vs-deep-learning-on-tabular-data","machine_learning/decision-tree-vs-deep-learning-on-tabular-data",{"title":101,"path":102,"stem":103},"LightGBM 模型入門：理解高效能的 Gradient Boosting 演算法","/machine_learning/lightgbm-intro-for-tabular-data","machine_learning/lightgbm-intro-for-tabular-data",{"title":105,"path":106,"stem":107},"Logistic Regression（Logit 回歸）完整教學","/machine_learning/logistic-regression-complete-guide","machine_learning/logistic-regression-complete-guide",{"title":109,"path":110,"stem":111},"為什麼模型訓練需要 Train / Validation / Test Dataset？","/machine_learning/train-validation-test-dataset","machine_learning/train-validation-test-dataset",{"title":113,"path":114,"stem":115},"XGBoost 原理與實務教學","/machine_learning/xgboost-complete-guide","machine_learning/xgboost-complete-guide",{"title":117,"path":118,"stem":119,"children":120,"page":41},"Network","/network","network",[121],{"title":122,"path":123,"stem":124},"DNS 設定入門：CNAME vs A Record 完整解析","/network/dns-cname-vs-a-record-guide","network/dns-cname-vs-a-record-guide",{"title":126,"path":127,"stem":128,"children":129},"Nuxt","/nuxt","nuxt",[130,133,137,141,145,149,153,157],{"title":131,"path":127,"stem":132},"Nuxt 實戰指南","nuxt/index",{"title":134,"path":135,"stem":136},"Abstraction Layer 與 Adapter 的差別，一次搞懂設計角色","/nuxt/adapter_abstraction_layer","nuxt/adapter_abstraction_layer",{"title":138,"path":139,"stem":140},"Nuxt 4 全面理解 — 專案檔案結構解析","/nuxt/directory_structure","nuxt/directory_structure",{"title":142,"path":143,"stem":144},"Nuxt 前端 build 流程完整解析","/nuxt/frontend_build","nuxt/frontend_build",{"title":146,"path":147,"stem":148},"Nitro 是什麼？從 Nuxt 專案到 Server 與 Edge 的關鍵引擎","/nuxt/nitro","nuxt/nitro",{"title":150,"path":151,"stem":152},"深入理解 Nuxt 的 .nuxt 與 .output：為什麼部署時一定要分清楚？","/nuxt/nuxt_and_output","nuxt/nuxt_and_output",{"title":154,"path":155,"stem":156},"Nuxt 中 dev、build、preview 的差異一次搞懂","/nuxt/nuxt_dev_build_preview","nuxt/nuxt_dev_build_preview",{"title":158,"path":159,"stem":160},"Nuxt Image vs \u003Cimg>：為什麼 Nuxt 3 專案幾乎都該用 \u003CNuxtImg>？","/nuxt/nuxt_image","nuxt/nuxt_image",{"title":162,"path":163,"stem":164,"children":165},"Python 程式開發","/python","python/index",[166,167,171,175],{"title":162,"path":163,"stem":164},{"title":168,"path":169,"stem":170},"如何在 FastAPI 中調用記憶體 Buffer 回傳圖片 (附實例)","/python/memory_buffer","python/memory_buffer",{"title":172,"path":173,"stem":174},"Python 單元測試教學：如何為你的程式撰寫 Test","/python/python-unit-testing-unittest-pytest","python/python-unit-testing-unittest-pytest",{"title":176,"path":177,"stem":178},"如何使用 uv 取代 pip：改善 Python 專案的開發流程","/python/uv","python/uv",{"title":180,"path":181,"stem":182,"children":183,"page":41},"Statistic","/statistic","statistic",[184,188,192,196],{"title":185,"path":186,"stem":187},"卡方檢定（Chi-Square Test）入門教學","/statistic/chi-square-test-intro","statistic/chi-square-test-intro",{"title":189,"path":190,"stem":191},"常見抽樣方法（Sampling Methods）教學：Stratified、Quota、Convenience、Systematic、Simple Random","/statistic/common-sampling-methods-guide","statistic/common-sampling-methods-guide",{"title":193,"path":194,"stem":195},"Cramér’s V 指標介紹：如何衡量兩個類別變數之間的關聯","/statistic/cramers-v-for-categorical-association","statistic/cramers-v-for-categorical-association",{"title":197,"path":198,"stem":199},"Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定：非參數統計檢定的入門指南","/statistic/mann-whitney-u-and-ks-test-intro","statistic/mann-whitney-u-and-ks-test-intro",{"title":201,"path":202,"stem":203,"children":204},"WebDev","/web_dev","web_dev",[205,208,234,248,282,312,334],{"title":206,"path":202,"stem":207},"Web 前端開發","web_dev/index",{"title":209,"path":210,"stem":211,"children":212},"瀏覽器與渲染","/web_dev/browser","web_dev/browser/index",[213,214,218,222,226,230],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"瀏覽器儲存空間完整解析：Cookie、localStorage、IndexedDB 到 Cache Storage","/web_dev/browser/browser-storage-comprehensive-guide","web_dev/browser/browser-storage-comprehensive-guide",{"title":219,"path":220,"stem":221},"DOM (Document Object Model) 深入解析","/web_dev/browser/dom","web_dev/browser/dom",{"title":223,"path":224,"stem":225},"Service Worker Request Flow 深入解析","/web_dev/browser/service-worker-request-flow","web_dev/browser/service-worker-request-flow",{"title":227,"path":228,"stem":229},"CSR、SSR 與 SSG 是什麼？前端渲染策略完整比較","/web_dev/browser/ssr_csr_ssg","web_dev/browser/ssr_csr_ssg",{"title":231,"path":232,"stem":233},"Virtual DOM 深入解析：為什麼它能優化前端效能？","/web_dev/browser/virtual_dom","web_dev/browser/virtual_dom",{"title":235,"path":236,"stem":237,"children":238},"圖形技術","/web_dev/graphics","web_dev/graphics/index",[239,240,244],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"為什麼 Three.js 專案幾乎都選擇 CSR？從 SSR 問題談起","/web_dev/graphics/threejs_csr","web_dev/graphics/threejs_csr",{"title":245,"path":246,"stem":247},"WebGL 是什麼？為什麼前端 3D 幾乎都靠它？","/web_dev/graphics/webgl","web_dev/graphics/webGL",{"title":249,"path":250,"stem":251,"children":252},"架構與配置","/web_dev/infrastructure","web_dev/infrastructure/index",[253,254,258,262,266,270,274,278],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257},"Zeabur + K3s + Nuxt 部署架構完整解析","/web_dev/infrastructure/k3s-zeabur","web_dev/infrastructure/K3s-zeabur",{"title":259,"path":260,"stem":261},"ECS vs Docker vs Kubernetes：從部署堆疊理解三層架構","/web_dev/infrastructure/ecs-docker-kubernetes-stack","web_dev/infrastructure/ecs-docker-kubernetes-stack",{"title":263,"path":264,"stem":265},"ECS vs VPS 是什麼？從部署網站的角度一次搞懂差別","/web_dev/infrastructure/ecs-vs-vps","web_dev/infrastructure/ecs-vs-vps",{"title":267,"path":268,"stem":269},"Zeabur 內網服務連線完整入門指南","/web_dev/infrastructure/k3s-internal-networking","web_dev/infrastructure/k3s-internal-networking",{"title":271,"path":272,"stem":273},"使用 Microservices 架構設計系統的優勢解析","/web_dev/infrastructure/microservices-architecture-advantages","web_dev/infrastructure/microservices-architecture-advantages",{"title":275,"path":276,"stem":277},"Nginx 入門教學：從反向代理到與 Kubernetes 的架構比較","/web_dev/infrastructure/nginx-intro","web_dev/infrastructure/nginx-intro",{"title":279,"path":280,"stem":281},"YAML 配置是什麼？為什麼現代開發都在用它","/web_dev/infrastructure/yaml-configuration","web_dev/infrastructure/yaml-configuration",{"title":283,"path":284,"stem":285,"children":286},"網絡與通訊","/web_dev/network","web_dev/network/index",[287,288,292,296,300,304,308],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"HTTP Request 結構完整解析：從 Request Line 到 Header 一次看懂","/web_dev/network/http-request-structure","web_dev/network/http-request-structure",{"title":293,"path":294,"stem":295},"OSI 模型（Open Systems Interconnection Model）完整解析","/web_dev/network/osi-model","web_dev/network/osi-model",{"title":297,"path":298,"stem":299},"RESTful API 設計原則與實務解析","/web_dev/network/restful-api","web_dev/network/restful-api",{"title":301,"path":302,"stem":303},"RESTful API 五大設計原則深入解析","/web_dev/network/restful-api-principles","web_dev/network/restful-api-principles",{"title":305,"path":306,"stem":307},"Server-Sent Events (SSE) 深入解析與實作教學","/web_dev/network/sse-introduction","web_dev/network/sse-introduction",{"title":309,"path":310,"stem":311},"WebSocket 入門教學：從概念到 Node.js 實作","/web_dev/network/websocket-introduction","web_dev/network/websocket-introduction",{"title":313,"path":314,"stem":315,"children":316},"認證與安全","/web_dev/security","web_dev/security/index",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"使用 Cookie 與 Session 建立使用者驗證（完整新手教學）","/web_dev/security/cookie-session-authentication","web_dev/security/cookie-session-authentication",{"title":323,"path":324,"stem":325},"JWT 驗證機制完整解析：從登入流程到實務應用","/web_dev/security/jwt-authentication","web_dev/security/jwt-authentication",{"title":327,"path":328,"stem":329},"Secret Key 簽名是什麼？從零理解資料簽名的本質","/web_dev/security/secret-key-signing","web_dev/security/secret-key-signing",{"title":331,"path":332,"stem":333},"SSH（Secure Shell）是什麼？從遠端登入到安全通道的核心概念","/web_dev/security/ssh","web_dev/security/ssh",{"title":335,"path":336,"stem":337,"children":338},"SEO 與規範","/web_dev/seo","web_dev/seo/index",[339,340,344,348],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Canonical URL 是什麼？用生活化方式搞懂前端 SEO 的基本保命符","/web_dev/seo/canonical_link","web_dev/seo/canonical_link",{"title":345,"path":346,"stem":347},"robots.txt 是什麼？SEO 的第一道守門員","/web_dev/seo/robot_txt","web_dev/seo/robot_txt",{"title":349,"path":350,"stem":351},"Nuxt SEO 中的 Meta 與 SEO 工具是如何運作的？","/web_dev/seo/seo","web_dev/seo/seo",{"id":353,"title":89,"body":354,"description":1218,"extension":1219,"links":1220,"meta":1221,"navigation":975,"path":90,"seo":1229,"stem":91,"__hash__":1230},"docs/machine_learning/confusion-matrix.md",{"type":355,"value":356,"toc":1196},"minimark",[357,362,371,378,381,384,388,399,406,442,445,472,479,481,485,492,530,533,538,541,544,551,553,557,560,563,568,570,574,577,580,590,597,599,603,606,608,616,623,625,629,636,644,647,685,688,714,717,719,723,729,732,740,743,754,757,765,768,771,773,777,784,788,791,794,801,803,807,810,813,816,822,825,830,832,836,839,842,845,850,853,858,860,864,867,870,873,875,878,881,884,914,921,931,933,937,944,1085,1088,1094,1097,1103,1106,1120,1122,1126,1129,1163,1166,1178,1181,1183,1186,1189,1192],[358,359,361],"h2",{"id":360},"為什麼需要-confusion-matrix","為什麼需要 Confusion Matrix？",[363,364,365,366,370],"p",{},"在機器學習的分類問題（classification problem）中，我們常常需要評估模型預測的好壞。最直覺的指標通常是 ",[367,368,369],"strong",{},"Accuracy（準確率）","，也就是模型預測正確的比例。然而在許多實際應用中，例如金融詐欺偵測、醫療診斷或垃圾郵件分類，僅僅依賴 Accuracy 其實是遠遠不夠的。",[363,372,373,374,377],{},"舉例來說，在金融交易資料中，詐欺交易通常只占全部交易的一小部分，例如 1%。如果一個模型把所有交易都預測為「正常」，那麼它仍然可以達到 ",[367,375,376],{},"99% 的 Accuracy","。乍看之下似乎非常準確，但實際上這個模型完全沒有抓出任何詐欺交易，對於風控系統而言幾乎沒有任何價值。",[363,379,380],{},"因此，在分類問題中，我們需要一個更細緻的工具來分析模型的預測結果。**Confusion Matrix（混淆矩陣）**正是最基本且最重要的評估工具之一，它能幫助我們理解模型的預測結果與真實結果之間的關係。",[382,383],"hr",{},[358,385,387],{"id":386},"confusion-matrix-的核心概念","Confusion Matrix 的核心概念",[363,389,390,391,394,395,398],{},"Confusion Matrix 是一個表格，用來統計模型的 ",[367,392,393],{},"預測結果（Predicted Label）"," 與 ",[367,396,397],{},"真實結果（Actual Label）"," 之間的交叉情況。之所以稱為「混淆矩陣」，是因為模型在預測時有可能會「混淆」不同類別。",[363,400,401,402,405],{},"假設我們正在建立一個 ",[367,403,404],{},"金融詐欺偵測模型（fraud detection model）","。在這個問題中，交易可以分為兩種狀態：",[407,408,409,422],"table",{},[410,411,412],"thead",{},[413,414,415,419],"tr",{},[416,417,418],"th",{},"真實情況",[416,420,421],{},"說明",[423,424,425,434],"tbody",{},[413,426,427,431],{},[428,429,430],"td",{},"Fraud",[428,432,433],{},"詐欺交易",[413,435,436,439],{},[428,437,438],{},"Normal",[428,440,441],{},"正常交易",[363,443,444],{},"模型則會對每一筆交易做出預測：",[407,446,447,456],{},[410,448,449],{},[413,450,451,454],{},[416,452,453],{},"預測結果",[416,455,421],{},[423,457,458,465],{},[413,459,460,462],{},[428,461,430],{},[428,463,464],{},"模型認為是詐欺",[413,466,467,469],{},[428,468,438],{},[428,470,471],{},"模型認為是正常交易",[363,473,474,475,478],{},"Confusion Matrix 的目的，就是把 ",[367,476,477],{},"真實狀態與模型預測結果整理成一個結構化的表格","，讓我們可以清楚看出模型在哪些情況預測正確，在哪些情況出現錯誤。",[382,480],{},[358,482,484],{"id":483},"confusion-matrix-的基本結構","Confusion Matrix 的基本結構",[363,486,487,488,491],{},"在最常見的 ",[367,489,490],{},"二分類問題（binary classification）"," 中，Confusion Matrix 通常是以下結構：",[407,493,494,506],{},[410,495,496],{},[413,497,498,500,503],{},[416,499],{},[416,501,502],{},"Predicted Positive",[416,504,505],{},"Predicted Negative",[423,507,508,519],{},[413,509,510,513,516],{},[428,511,512],{},"Actual Positive",[428,514,515],{},"True Positive (TP)",[428,517,518],{},"False Negative (FN)",[413,520,521,524,527],{},[428,522,523],{},"Actual Negative",[428,525,526],{},"False Positive (FP)",[428,528,529],{},"True Negative (TN)",[363,531,532],{},"這個表格包含四種情況，每一種情況都描述了模型預測與真實結果之間的關係。",[534,535,537],"h3",{"id":536},"true-positivetp","True Positive（TP）",[363,539,540],{},"True Positive 代表模型成功預測出正確的 Positive 樣本。也就是說，樣本的真實狀態是 Positive，而模型也正確預測為 Positive。",[363,542,543],{},"例如在詐欺偵測中，如果一筆交易真的屬於詐欺，而模型也成功判定它是詐欺，那麼這筆交易就會被計入 TP。",[363,545,546,547,550],{},"這是一種 ",[367,548,549],{},"正確的預測結果","。",[382,552],{},[534,554,556],{"id":555},"true-negativetn","True Negative（TN）",[363,558,559],{},"True Negative 代表模型成功預測出 Negative 樣本。也就是說，樣本真實狀態是 Negative，模型也預測為 Negative。",[363,561,562],{},"例如一筆正常交易被模型正確判斷為正常，這就是 TN。",[363,564,565,566,550],{},"同樣地，這也是 ",[367,567,549],{},[382,569],{},[534,571,573],{"id":572},"false-positivefp","False Positive（FP）",[363,575,576],{},"False Positive 指的是模型將 Negative 樣本誤判為 Positive。",[363,578,579],{},"例如：",[581,582,583,587],"ul",{},[584,585,586],"li",{},"一筆正常交易",[584,588,589],{},"被模型誤判為詐欺交易",[363,591,592,593,596],{},"這種情況在實務上常被稱為 ",[367,594,595],{},"False Alarm（誤報）","。在金融服務中，這可能會導致使用者的信用卡被暫時鎖定或交易被拒絕，雖然不致命，但會影響使用體驗。",[382,598],{},[534,600,602],{"id":601},"false-negativefn","False Negative（FN）",[363,604,605],{},"False Negative 則是另一種錯誤情況：模型將 Positive 樣本誤判為 Negative。",[363,607,579],{},[581,609,610,613],{},[584,611,612],{},"一筆詐欺交易",[584,614,615],{},"模型卻判斷為正常交易",[363,617,618,619,622],{},"在許多風險控制系統中，這是 ",[367,620,621],{},"最嚴重的一種錯誤","，因為詐欺交易會直接造成金錢損失。因此在詐欺偵測或醫療診斷等應用中，通常會特別重視 FN 的數量。",[382,624],{},[358,626,628],{"id":627},"一個簡單的-confusion-matrix-範例","一個簡單的 Confusion Matrix 範例",[363,630,631,632,635],{},"假設我們有 ",[367,633,634],{},"100 筆金融交易資料","，其中：",[581,637,638,641],{},[584,639,640],{},"20 筆是詐欺交易",[584,642,643],{},"80 筆是正常交易",[363,645,646],{},"模型預測結果如下：",[407,648,649,661],{},[410,650,651],{},[413,652,653,655,658],{},[416,654],{},[416,656,657],{},"Pred Fraud",[416,659,660],{},"Pred Normal",[423,662,663,674],{},[413,664,665,668,671],{},[428,666,667],{},"Actual Fraud",[428,669,670],{},"15",[428,672,673],{},"5",[413,675,676,679,682],{},[428,677,678],{},"Actual Normal",[428,680,681],{},"10",[428,683,684],{},"70",[363,686,687],{},"根據這個表格，我們可以得到：",[581,689,690,696,702,708],{},[584,691,692,695],{},[367,693,694],{},"TP = 15","（成功抓到的詐欺）",[584,697,698,701],{},[367,699,700],{},"FN = 5","（漏掉的詐欺）",[584,703,704,707],{},[367,705,706],{},"FP = 10","（誤判為詐欺的正常交易）",[584,709,710,713],{},[367,711,712],{},"TN = 70","（正確判斷的正常交易）",[363,715,716],{},"透過 Confusion Matrix，我們不僅能知道模型整體表現，也能看出錯誤類型的分布。",[382,718],{},[358,720,722],{"id":721},"為什麼-confusion-matrix-非常重要","為什麼 Confusion Matrix 非常重要？",[363,724,725,726,550],{},"Confusion Matrix 的重要性在於，它能揭露 ",[367,727,728],{},"Accuracy 無法看出的問題",[363,730,731],{},"在許多實際場景中，例如詐欺偵測，資料通常高度不平衡（imbalanced data）。例如：",[581,733,734,737],{},[584,735,736],{},"99% 是正常交易",[584,738,739],{},"1% 是詐欺交易",[363,741,742],{},"如果模型永遠預測「正常」，那麼：",[744,745,751],"pre",{"className":746,"code":748,"language":749,"meta":750},[747],"language-text","Accuracy = 99%\n","text","",[752,753,748],"code",{"__ignoreMap":750},[363,755,756],{},"這看起來非常好，但實際上模型完全沒有偵測到任何詐欺。透過 Confusion Matrix，我們可以清楚看到：",[581,758,759,762],{},[584,760,761],{},"TP = 0",[584,763,764],{},"FN = 所有詐欺交易",[363,766,767],{},"也就是說模型完全失敗。",[363,769,770],{},"因此，在資料不平衡的問題中，Confusion Matrix 是理解模型行為的核心工具。",[382,772],{},[358,774,776],{"id":775},"從-confusion-matrix-延伸的重要指標","從 Confusion Matrix 延伸的重要指標",[363,778,779,780,783],{},"許多常見的分類模型評估指標，其實都是從 ",[367,781,782],{},"TP、FP、TN、FN"," 這四個數字計算出來的。",[534,785,787],{"id":786},"accuracy","Accuracy",[363,789,790],{},"Accuracy 代表整體預測正確的比例：",[363,792,793],{},"$$\nAccuracy = \\frac{TP + TN}{TP + TN + FP + FN}\n$$",[363,795,796,797,800],{},"它反映的是 ",[367,798,799],{},"整體模型表現","，但在資料不平衡問題中通常不夠可靠。",[382,802],{},[534,804,806],{"id":805},"precision","Precision",[363,808,809],{},"Precision 定義為：",[363,811,812],{},"$$\nPrecision = \\frac{TP}{TP + FP}\n$$",[363,814,815],{},"這個指標的意思是：",[817,818,819],"blockquote",{},[363,820,821],{},"在所有被模型預測為 Positive 的樣本中，有多少是真正的 Positive。",[363,823,824],{},"在詐欺偵測問題中，Precision 可以理解為：",[817,826,827],{},[363,828,829],{},"模型抓到的詐欺交易中，有多少是真的詐欺。",[382,831],{},[534,833,835],{"id":834},"recallsensitivity","Recall（Sensitivity）",[363,837,838],{},"Recall 定義為：",[363,840,841],{},"$$\nRecall = \\frac{TP}{TP + FN}\n$$",[363,843,844],{},"Recall 描述的是：",[817,846,847],{},[363,848,849],{},"在所有真正的 Positive 中，有多少被模型成功抓到。",[363,851,852],{},"在詐欺偵測中，Recall 可以理解為：",[817,854,855],{},[363,856,857],{},"所有詐欺交易中，有多少被成功偵測出來。",[382,859],{},[534,861,863],{"id":862},"f1-score","F1 Score",[363,865,866],{},"F1 Score 是 Precision 與 Recall 的調和平均：",[363,868,869],{},"$$\nF1 = 2 \\cdot \\frac{Precision \\cdot Recall}{Precision + Recall}\n$$",[363,871,872],{},"F1 Score 的目的在於同時考慮 Precision 與 Recall，並在兩者之間取得平衡。",[382,874],{},[358,876,877],{"id":877},"在金融詐欺偵測中的實務理解",[363,879,880],{},"不同應用場景，對於錯誤類型的容忍度不同。",[363,882,883],{},"例如在金融交易中：",[407,885,886,896],{},[410,887,888],{},[413,889,890,893],{},[416,891,892],{},"錯誤類型",[416,894,895],{},"影響",[423,897,898,906],{},[413,899,900,903],{},[428,901,902],{},"False Positive",[428,904,905],{},"正常交易被誤判為詐欺",[413,907,908,911],{},[428,909,910],{},"False Negative",[428,912,913],{},"詐欺交易沒有被偵測",[363,915,916,917,920],{},"在大多數金融風控系統中，",[367,918,919],{},"False Negative 的成本通常更高","，因為這代表詐欺交易成功通過系統。",[363,922,923,924,927,928,930],{},"因此在詐欺偵測或醫療診斷中，通常會更重視 ",[367,925,926],{},"Recall","。相對地，在垃圾郵件分類等問題中，系統可能更重視 ",[367,929,806],{},"，以避免正常郵件被錯誤分類為垃圾郵件。",[382,932],{},[358,934,936],{"id":935},"python-中的-confusion-matrix-範例","Python 中的 Confusion Matrix 範例",[363,938,939,940,943],{},"在 Python 中，可以使用 ",[752,941,942],{},"sklearn"," 快速計算 Confusion Matrix：",[744,945,949],{"className":946,"code":947,"language":948,"meta":750,"style":750},"language-python shiki shiki-themes github-dark","from sklearn.metrics import confusion_matrix\n\ny_true = [1,0,1,1,0,0,1]\ny_pred = [1,0,1,0,0,1,1]\n\ncm = confusion_matrix(y_true, y_pred)\nprint(cm)\n","python",[752,950,951,970,977,1022,1060,1065,1076],{"__ignoreMap":750},[952,953,956,960,964,967],"span",{"class":954,"line":955},"line",1,[952,957,959],{"class":958},"snl16","from",[952,961,963],{"class":962},"s95oV"," sklearn.metrics ",[952,965,966],{"class":958},"import",[952,968,969],{"class":962}," confusion_matrix\n",[952,971,973],{"class":954,"line":972},2,[952,974,976],{"emptyLinePlaceholder":975},true,"\n",[952,978,980,983,986,989,993,996,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019],{"class":954,"line":979},3,[952,981,982],{"class":962},"y_true ",[952,984,985],{"class":958},"=",[952,987,988],{"class":962}," [",[952,990,992],{"class":991},"sDLfK","1",[952,994,995],{"class":962},",",[952,997,998],{"class":991},"0",[952,1000,995],{"class":962},[952,1002,992],{"class":991},[952,1004,995],{"class":962},[952,1006,992],{"class":991},[952,1008,995],{"class":962},[952,1010,998],{"class":991},[952,1012,995],{"class":962},[952,1014,998],{"class":991},[952,1016,995],{"class":962},[952,1018,992],{"class":991},[952,1020,1021],{"class":962},"]\n",[952,1023,1025,1028,1030,1032,1034,1036,1038,1040,1042,1044,1046,1048,1050,1052,1054,1056,1058],{"class":954,"line":1024},4,[952,1026,1027],{"class":962},"y_pred ",[952,1029,985],{"class":958},[952,1031,988],{"class":962},[952,1033,992],{"class":991},[952,1035,995],{"class":962},[952,1037,998],{"class":991},[952,1039,995],{"class":962},[952,1041,992],{"class":991},[952,1043,995],{"class":962},[952,1045,998],{"class":991},[952,1047,995],{"class":962},[952,1049,998],{"class":991},[952,1051,995],{"class":962},[952,1053,992],{"class":991},[952,1055,995],{"class":962},[952,1057,992],{"class":991},[952,1059,1021],{"class":962},[952,1061,1063],{"class":954,"line":1062},5,[952,1064,976],{"emptyLinePlaceholder":975},[952,1066,1068,1071,1073],{"class":954,"line":1067},6,[952,1069,1070],{"class":962},"cm ",[952,1072,985],{"class":958},[952,1074,1075],{"class":962}," confusion_matrix(y_true, y_pred)\n",[952,1077,1079,1082],{"class":954,"line":1078},7,[952,1080,1081],{"class":991},"print",[952,1083,1084],{"class":962},"(cm)\n",[363,1086,1087],{},"輸出結果可能為：",[744,1089,1092],{"className":1090,"code":1091,"language":749,"meta":750},[747],"[[2 1]\n [1 3]]\n",[752,1093,1091],{"__ignoreMap":750},[363,1095,1096],{},"這個矩陣的排列方式為：",[744,1098,1101],{"className":1099,"code":1100,"language":749,"meta":750},[747],"[[TN FP]\n [FN TP]]\n",[752,1102,1100],{"__ignoreMap":750},[363,1104,1105],{},"因此可以解讀為：",[581,1107,1108,1111,1114,1117],{},[584,1109,1110],{},"TN = 2",[584,1112,1113],{},"FP = 1",[584,1115,1116],{},"FN = 1",[584,1118,1119],{},"TP = 3",[382,1121],{},[358,1123,1125],{"id":1124},"如何快速記住-confusion-matrix","如何快速記住 Confusion Matrix",[363,1127,1128],{},"一個簡單的記憶方式是：",[407,1130,1131,1141],{},[410,1132,1133],{},[413,1134,1135,1137,1139],{},[416,1136],{},[416,1138,502],{},[416,1140,505],{},[423,1142,1143,1153],{},[413,1144,1145,1147,1150],{},[428,1146,512],{},[428,1148,1149],{},"TP",[428,1151,1152],{},"FN",[413,1154,1155,1157,1160],{},[428,1156,523],{},[428,1158,1159],{},"FP",[428,1161,1162],{},"TN",[363,1164,1165],{},"可以理解為：",[581,1167,1168,1173],{},[584,1169,1170],{},[367,1171,1172],{},"橫軸：模型預測",[584,1174,1175],{},[367,1176,1177],{},"縱軸：真實標籤",[363,1179,1180],{},"只要記住這個結構，就能快速理解各種分類評估指標的來源。",[382,1182],{},[358,1184,1185],{"id":1185},"結論",[363,1187,1188],{},"Confusion Matrix 是所有分類模型評估方法的基礎。透過這個簡單的 2×2 表格，我們可以清楚分析模型的預測行為，並進一步計算出各種重要指標，例如 Precision、Recall、F1 Score、ROC 與 PR-AUC 等。",[363,1190,1191],{},"理解 Confusion Matrix 不只是機器學習入門的重要概念，也是在金融風控、醫療診斷與推薦系統等實務場景中，評估模型表現的核心工具。只要掌握 TP、FP、TN、FN 四個數字的意義，許多看似複雜的模型評估指標其實都只是它們的延伸計算。",[1193,1194,1195],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":750,"searchDepth":972,"depth":972,"links":1197},[1198,1199,1200,1206,1207,1208,1214,1215,1216,1217],{"id":360,"depth":972,"text":361},{"id":386,"depth":972,"text":387},{"id":483,"depth":972,"text":484,"children":1201},[1202,1203,1204,1205],{"id":536,"depth":979,"text":537},{"id":555,"depth":979,"text":556},{"id":572,"depth":979,"text":573},{"id":601,"depth":979,"text":602},{"id":627,"depth":972,"text":628},{"id":721,"depth":972,"text":722},{"id":775,"depth":972,"text":776,"children":1209},[1210,1211,1212,1213],{"id":786,"depth":979,"text":787},{"id":805,"depth":979,"text":806},{"id":834,"depth":979,"text":835},{"id":862,"depth":979,"text":863},{"id":877,"depth":972,"text":877},{"id":935,"depth":972,"text":936},{"id":1124,"depth":972,"text":1125},{"id":1185,"depth":972,"text":1185},"從直觀概念到實際應用，深入理解 Confusion Matrix 的結構、評估指標與在詐欺偵測中的重要性。","md",null,{"tags":1222,"category":86,"date":1228},[1223,1224,1225,1226,1227],"machine learning","classification","confusion matrix","evaluation metrics","data science","2026-03-05",{"title":89,"description":1218},"wGTWIEqrb6uQsZvuj866O_RoJX-hzRBNHKHFFl4UC1U",[1232,1234],{"title":80,"path":81,"stem":82,"description":1233,"children":-1},"介紹 Time-based Split 的概念、為什麼時間資料不能隨機切分，以及如何避免未來資料洩漏（Future Data Leakage）。",{"title":93,"path":94,"stem":95,"description":1235,"children":-1},"深入了解 Decision Tree（決策樹）的運作原理，包含模型結構、純度指標、實際案例與 Python 實作，幫助你掌握最經典的機器學習模型之一。",1776690841492]