[{"data":1,"prerenderedAt":1359},["ShallowReactive",2],{"navigation_docs":3,"-machine-learning-xgboost-complete-guide":352,"-machine-learning-xgboost-complete-guide-surround":1354},[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":113,"body":354,"description":1341,"extension":1342,"links":1343,"meta":1344,"navigation":827,"path":114,"seo":1352,"stem":115,"__hash__":1353},"docs/machine_learning/xgboost-complete-guide.md",{"type":355,"value":356,"toc":1314},"minimark",[357,362,374,377,390,397,400,406,409,412,416,422,425,428,431,442,449,452,467,473,475,479,482,487,490,493,496,507,513,517,520,528,531,539,543,546,551,557,561,564,575,578,580,584,587,639,642,653,657,660,666,673,681,685,688,693,696,702,706,709,715,721,723,727,730,733,756,759,1098,1101,1153,1160,1168,1170,1174,1177,1180,1191,1194,1202,1205,1213,1220,1237,1240,1242,1245,1251,1254,1268,1274,1281,1283,1286,1310],[358,359,361],"h2",{"id":360},"為什麼需要-xgboost","為什麼需要 XGBoost？",[363,364,365,366,370,371],"p",{},"在機器學習中，當我們處理 ",[367,368,369],"strong",{},"表格型資料（tabular data）"," 時，例如金融交易、信用評分、推薦系統或醫療資料，常常會遇到一個問題：",[367,372,373],{},"單一模型的預測能力有限。",[363,375,376],{},"例如，一棵決策樹（Decision Tree）雖然容易理解，但往往會有以下問題：",[378,379,380,384,387],"ul",{},[381,382,383],"li",{},"容易過度擬合（overfitting）",[381,385,386],{},"模型穩定性較差",[381,388,389],{},"單一樹的預測能力有限",[363,391,392,393,396],{},"為了解決這個問題，研究者提出了一種方法叫做 ",[367,394,395],{},"Boosting","。",[363,398,399],{},"Boosting 的核心想法是：",[401,402,403],"blockquote",{},[363,404,405],{},"不斷建立新的模型，專門去修正前一個模型犯的錯誤。",[363,407,408],{},"XGBoost（Extreme Gradient Boosting）就是 Boosting 方法中最成功、也最廣泛使用的模型之一。它在許多資料科學競賽（例如 Kaggle）中長期保持極高的表現，因此成為處理 tabular data 的重要工具之一。",[410,411],"hr",{},[358,413,415],{"id":414},"boosting-的核心概念","Boosting 的核心概念",[363,417,418,419,396],{},"在理解 XGBoost 之前，我們先理解 ",[367,420,421],{},"Gradient Boosting 的基本想法",[363,423,424],{},"假設我們要預測一個目標值 $y$，模型的預測為：",[363,426,427],{},"$$\n\\hat{y} = \\sum_^{K} f_k(x)\n$$",[363,429,430],{},"其中：",[378,432,433,436],{},[381,434,435],{},"$f_k(x)$ 代表第 $k$ 棵樹",[381,437,438,439],{},"最終預測是 ",[367,440,441],{},"所有樹的加總",[363,443,444,445,448],{},"也就是說，XGBoost 並不是只建立一棵樹，而是建立 ",[367,446,447],{},"很多棵小樹（weak learners）","，然後把它們的預測結果加在一起。",[363,450,451],{},"訓練流程大致如下：",[453,454,455,458,461,464],"ol",{},[381,456,457],{},"建立第一棵樹做初步預測",[381,459,460],{},"計算模型的錯誤（loss）",[381,462,463],{},"建立第二棵樹專門修正第一棵樹的錯誤",[381,465,466],{},"持續重複這個過程",[363,468,469,470,396],{},"最後，模型就會變成一個 ",[367,471,472],{},"多棵樹的加總模型",[410,474],{},[358,476,478],{"id":477},"xgboost-的核心優勢","XGBoost 的核心優勢",[363,480,481],{},"XGBoost 是對傳統 Gradient Boosting 的改良版本，主要加入了幾個重要的設計。",[483,484,486],"h3",{"id":485},"_1-正則化regularization","1) 正則化（Regularization）",[363,488,489],{},"XGBoost 在目標函數中加入了模型複雜度的懲罰項：",[363,491,492],{},"$$\nObjective = Loss + Regularization\n$$",[363,494,495],{},"Regularization 會懲罰：",[378,497,498,501,504],{},[381,499,500],{},"樹的數量",[381,502,503],{},"葉節點的權重",[381,505,506],{},"樹的複雜度",[363,508,509,510,396],{},"這樣可以有效避免 ",[367,511,512],{},"模型過度擬合",[483,514,516],{"id":515},"_2-二階導數優化second-order-optimization","2) 二階導數優化（Second-order optimization）",[363,518,519],{},"XGBoost 在優化過程中使用：",[378,521,522,525],{},[381,523,524],{},"一階導數（gradient）",[381,526,527],{},"二階導數（hessian）",[363,529,530],{},"來近似 loss function。這樣的好處是：",[378,532,533,536],{},[381,534,535],{},"收斂速度更快",[381,537,538],{},"模型更穩定",[483,540,542],{"id":541},"_3-自動處理缺失值","3) 自動處理缺失值",[363,544,545],{},"在實務資料中，常常會有缺失值（missing values）。XGBoost 可以自動學習：",[401,547,548],{},[363,549,550],{},"當 feature 缺失時，應該往左子樹還是右子樹。",[363,552,553,554,396],{},"因此在很多情況下 ",[367,555,556],{},"不需要額外做 missing value imputation",[483,558,560],{"id":559},"_4-計算效率高","4) 計算效率高",[363,562,563],{},"XGBoost 在設計時特別強調效能，例如：",[378,565,566,569,572],{},[381,567,568],{},"平行化計算",[381,570,571],{},"cache-aware 設計",[381,573,574],{},"column block structure",[363,576,577],{},"因此在大資料集上仍然可以維持良好的訓練速度。",[410,579],{},[358,581,583],{"id":582},"一個直觀例子信用卡詐欺偵測","一個直觀例子：信用卡詐欺偵測",[363,585,586],{},"假設我們要建立一個模型，用來預測交易是否為詐欺。資料可能包含以下特徵：",[588,589,590,603],"table",{},[591,592,593],"thead",{},[594,595,596,600],"tr",{},[597,598,599],"th",{},"Feature",[597,601,602],{},"說明",[604,605,606,615,623,631],"tbody",{},[594,607,608,612],{},[609,610,611],"td",{},"transaction_amount",[609,613,614],{},"交易金額",[594,616,617,620],{},[609,618,619],{},"account_age",[609,621,622],{},"帳戶建立時間",[594,624,625,628],{},[609,626,627],{},"num_transactions",[609,629,630],{},"近期交易數",[594,632,633,636],{},[609,634,635],{},"device_change",[609,637,638],{},"是否更換裝置",[363,640,641],{},"目標變數：",[643,644,650],"pre",{"className":645,"code":647,"language":648,"meta":649},[646],"language-text","Fraud = 1\nNormal = 0\n","text","",[651,652,647],"code",{"__ignoreMap":649},[483,654,656],{"id":655},"第一步第一棵樹","第一步：第一棵樹",[363,658,659],{},"模型可能先建立一棵簡單的樹：",[643,661,664],{"className":662,"code":663,"language":648,"meta":649},[646],"transaction_amount > 500 ?\n├─ yes → fraud\n└─ no  → normal\n",[651,665,663],{"__ignoreMap":649},[363,667,668,669,672],{},"這棵樹會做出一個 ",[367,670,671],{},"粗略預測","，但一定會有很多錯誤，例如：",[378,674,675,678],{},[381,676,677],{},"小額詐欺",[381,679,680],{},"高額正常交易",[483,682,684],{"id":683},"第二步建立第二棵樹修正錯誤","第二步：建立第二棵樹修正錯誤",[363,686,687],{},"第二棵樹會專門去學習：",[401,689,690],{},[363,691,692],{},"第一棵樹預測錯誤的地方。",[363,694,695],{},"例如：",[643,697,700],{"className":698,"code":699,"language":648,"meta":649},[646],"device_change = True ?\n├─ yes → fraud\n└─ no  → normal\n",[651,701,699],{"__ignoreMap":649},[483,703,705],{"id":704},"第三步建立更多樹","第三步：建立更多樹",[363,707,708],{},"XGBoost 會持續建立新的樹來修正誤差：",[643,710,713],{"className":711,"code":712,"language":648,"meta":649},[646],"Prediction = Tree1 + Tree2 + Tree3 + ... + TreeN\n",[651,714,712],{"__ignoreMap":649},[363,716,717,718,396],{},"這就是 ",[367,719,720],{},"Boosting 的核心思想",[410,722],{},[358,724,726],{"id":725},"python-實作範例","Python 實作範例",[363,728,729],{},"以下示範如何使用 XGBoost 建立分類模型。",[483,731,732],{"id":732},"安裝套件",[643,734,738],{"className":735,"code":736,"language":737,"meta":649,"style":649},"language-bash shiki shiki-themes github-dark","pip install xgboost\n","bash",[651,739,740],{"__ignoreMap":649},[741,742,745,749,753],"span",{"class":743,"line":744},"line",1,[741,746,748],{"class":747},"svObZ","pip",[741,750,752],{"class":751},"sU2Wk"," install",[741,754,755],{"class":751}," xgboost\n",[483,757,758],{"id":758},"建立模型",[643,760,764],{"className":761,"code":762,"language":763,"meta":649,"style":649},"language-python shiki shiki-themes github-dark","import xgboost as xgb\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.datasets import load_breast_cancer\nfrom sklearn.metrics import roc_auc_score\n\n# 載入資料\ndata = load_breast_cancer()\nX = data.data\ny = data.target\n\n# 切分資料\nX_train, X_test, y_train, y_test = train_test_split(\n    X, y, test_size=0.2, random_state=42\n)\n\n# 建立模型\nmodel = xgb.XGBClassifier(\n    n_estimators=200,\n    max_depth=4,\n    learning_rate=0.05,\n    subsample=0.8,\n    colsample_bytree=0.8\n)\n\n# 訓練模型\nmodel.fit(X_train, y_train)\n\n# 預測\ny_pred_prob = model.predict_proba(X_test)[:, 1]\n\n# 評估\nauc = roc_auc_score(y_test, y_pred_prob)\nprint(\"ROC-AUC:\", auc)\n","python",[651,765,766,782,796,809,822,829,836,848,859,870,875,881,892,919,925,930,936,947,961,974,987,1000,1011,1016,1021,1027,1033,1038,1044,1061,1066,1072,1083],{"__ignoreMap":649},[741,767,768,772,776,779],{"class":743,"line":744},[741,769,771],{"class":770},"snl16","import",[741,773,775],{"class":774},"s95oV"," xgboost ",[741,777,778],{"class":770},"as",[741,780,781],{"class":774}," xgb\n",[741,783,785,788,791,793],{"class":743,"line":784},2,[741,786,787],{"class":770},"from",[741,789,790],{"class":774}," sklearn.model_selection ",[741,792,771],{"class":770},[741,794,795],{"class":774}," train_test_split\n",[741,797,799,801,804,806],{"class":743,"line":798},3,[741,800,787],{"class":770},[741,802,803],{"class":774}," sklearn.datasets ",[741,805,771],{"class":770},[741,807,808],{"class":774}," load_breast_cancer\n",[741,810,812,814,817,819],{"class":743,"line":811},4,[741,813,787],{"class":770},[741,815,816],{"class":774}," sklearn.metrics ",[741,818,771],{"class":770},[741,820,821],{"class":774}," roc_auc_score\n",[741,823,825],{"class":743,"line":824},5,[741,826,828],{"emptyLinePlaceholder":827},true,"\n",[741,830,832],{"class":743,"line":831},6,[741,833,835],{"class":834},"sAwPA","# 載入資料\n",[741,837,839,842,845],{"class":743,"line":838},7,[741,840,841],{"class":774},"data ",[741,843,844],{"class":770},"=",[741,846,847],{"class":774}," load_breast_cancer()\n",[741,849,851,854,856],{"class":743,"line":850},8,[741,852,853],{"class":774},"X ",[741,855,844],{"class":770},[741,857,858],{"class":774}," data.data\n",[741,860,862,865,867],{"class":743,"line":861},9,[741,863,864],{"class":774},"y ",[741,866,844],{"class":770},[741,868,869],{"class":774}," data.target\n",[741,871,873],{"class":743,"line":872},10,[741,874,828],{"emptyLinePlaceholder":827},[741,876,878],{"class":743,"line":877},11,[741,879,880],{"class":834},"# 切分資料\n",[741,882,884,887,889],{"class":743,"line":883},12,[741,885,886],{"class":774},"X_train, X_test, y_train, y_test ",[741,888,844],{"class":770},[741,890,891],{"class":774}," train_test_split(\n",[741,893,895,898,902,904,908,911,914,916],{"class":743,"line":894},13,[741,896,897],{"class":774},"    X, y, ",[741,899,901],{"class":900},"s9osk","test_size",[741,903,844],{"class":770},[741,905,907],{"class":906},"sDLfK","0.2",[741,909,910],{"class":774},", ",[741,912,913],{"class":900},"random_state",[741,915,844],{"class":770},[741,917,918],{"class":906},"42\n",[741,920,922],{"class":743,"line":921},14,[741,923,924],{"class":774},")\n",[741,926,928],{"class":743,"line":927},15,[741,929,828],{"emptyLinePlaceholder":827},[741,931,933],{"class":743,"line":932},16,[741,934,935],{"class":834},"# 建立模型\n",[741,937,939,942,944],{"class":743,"line":938},17,[741,940,941],{"class":774},"model ",[741,943,844],{"class":770},[741,945,946],{"class":774}," xgb.XGBClassifier(\n",[741,948,950,953,955,958],{"class":743,"line":949},18,[741,951,952],{"class":900},"    n_estimators",[741,954,844],{"class":770},[741,956,957],{"class":906},"200",[741,959,960],{"class":774},",\n",[741,962,964,967,969,972],{"class":743,"line":963},19,[741,965,966],{"class":900},"    max_depth",[741,968,844],{"class":770},[741,970,971],{"class":906},"4",[741,973,960],{"class":774},[741,975,977,980,982,985],{"class":743,"line":976},20,[741,978,979],{"class":900},"    learning_rate",[741,981,844],{"class":770},[741,983,984],{"class":906},"0.05",[741,986,960],{"class":774},[741,988,990,993,995,998],{"class":743,"line":989},21,[741,991,992],{"class":900},"    subsample",[741,994,844],{"class":770},[741,996,997],{"class":906},"0.8",[741,999,960],{"class":774},[741,1001,1003,1006,1008],{"class":743,"line":1002},22,[741,1004,1005],{"class":900},"    colsample_bytree",[741,1007,844],{"class":770},[741,1009,1010],{"class":906},"0.8\n",[741,1012,1014],{"class":743,"line":1013},23,[741,1015,924],{"class":774},[741,1017,1019],{"class":743,"line":1018},24,[741,1020,828],{"emptyLinePlaceholder":827},[741,1022,1024],{"class":743,"line":1023},25,[741,1025,1026],{"class":834},"# 訓練模型\n",[741,1028,1030],{"class":743,"line":1029},26,[741,1031,1032],{"class":774},"model.fit(X_train, y_train)\n",[741,1034,1036],{"class":743,"line":1035},27,[741,1037,828],{"emptyLinePlaceholder":827},[741,1039,1041],{"class":743,"line":1040},28,[741,1042,1043],{"class":834},"# 預測\n",[741,1045,1047,1050,1052,1055,1058],{"class":743,"line":1046},29,[741,1048,1049],{"class":774},"y_pred_prob ",[741,1051,844],{"class":770},[741,1053,1054],{"class":774}," model.predict_proba(X_test)[:, ",[741,1056,1057],{"class":906},"1",[741,1059,1060],{"class":774},"]\n",[741,1062,1064],{"class":743,"line":1063},30,[741,1065,828],{"emptyLinePlaceholder":827},[741,1067,1069],{"class":743,"line":1068},31,[741,1070,1071],{"class":834},"# 評估\n",[741,1073,1075,1078,1080],{"class":743,"line":1074},32,[741,1076,1077],{"class":774},"auc ",[741,1079,844],{"class":770},[741,1081,1082],{"class":774}," roc_auc_score(y_test, y_pred_prob)\n",[741,1084,1086,1089,1092,1095],{"class":743,"line":1085},33,[741,1087,1088],{"class":906},"print",[741,1090,1091],{"class":774},"(",[741,1093,1094],{"class":751},"\"ROC-AUC:\"",[741,1096,1097],{"class":774},", auc)\n",[483,1099,1100],{"id":1100},"常見重要參數",[588,1102,1103,1112],{},[591,1104,1105],{},[594,1106,1107,1110],{},[597,1108,1109],{},"參數",[597,1111,602],{},[604,1113,1114,1121,1129,1137,1145],{},[594,1115,1116,1119],{},[609,1117,1118],{},"n_estimators",[609,1120,500],{},[594,1122,1123,1126],{},[609,1124,1125],{},"max_depth",[609,1127,1128],{},"每棵樹的最大深度",[594,1130,1131,1134],{},[609,1132,1133],{},"learning_rate",[609,1135,1136],{},"每棵樹的學習率",[594,1138,1139,1142],{},[609,1140,1141],{},"subsample",[609,1143,1144],{},"使用多少比例資料",[594,1146,1147,1150],{},[609,1148,1149],{},"colsample_bytree",[609,1151,1152],{},"每棵樹使用多少特徵",[363,1154,1155,1156,1159],{},"其中 ",[367,1157,1158],{},"learning_rate 與 n_estimators 通常需要一起調整","：",[378,1161,1162,1165],{},[381,1163,1164],{},"learning_rate 小 → n_estimators 要大",[381,1166,1167],{},"learning_rate 大 → n_estimators 可以小",[410,1169],{},[358,1171,1173],{"id":1172},"xgboost-在實務中的應用","XGBoost 在實務中的應用",[363,1175,1176],{},"XGBoost 在許多產業都有非常廣泛的應用，例如：",[483,1178,1179],{"id":1179},"金融風控",[378,1181,1182,1185,1188],{},[381,1183,1184],{},"信用卡詐欺偵測",[381,1186,1187],{},"信用風險評估",[381,1189,1190],{},"交易異常偵測",[483,1192,1193],{"id":1193},"電商推薦",[378,1195,1196,1199],{},[381,1197,1198],{},"商品推薦",[381,1200,1201],{},"使用者行為預測",[483,1203,1204],{"id":1204},"醫療",[378,1206,1207,1210],{},[381,1208,1209],{},"疾病診斷",[381,1211,1212],{},"風險預測",[363,1214,1215,1216,1219],{},"特別是在 ",[367,1217,1218],{},"金融詐欺偵測（fraud detection）"," 中，XGBoost 經常會搭配：",[378,1221,1222,1227,1232],{},[381,1223,1224],{},[367,1225,1226],{},"Transaction features",[381,1228,1229],{},[367,1230,1231],{},"Account-level features",[381,1233,1234],{},[367,1235,1236],{},"Social Network Analysis (SNA) features",[363,1238,1239],{},"來提升模型的預測能力。",[410,1241],{},[358,1243,1244],{"id":1244},"結論",[363,1246,1247,1248,396],{},"XGBoost 是目前機器學習中最重要的 tree-based model 之一，其核心思想是透過 ",[367,1249,1250],{},"Boosting 方法不斷建立新的決策樹來修正前一個模型的錯誤",[363,1252,1253],{},"相比傳統的 Gradient Boosting，XGBoost 透過：",[378,1255,1256,1259,1262,1265],{},[381,1257,1258],{},"正則化控制模型複雜度",[381,1260,1261],{},"二階導數優化",[381,1263,1264],{},"自動處理缺失值",[381,1266,1267],{},"高效能平行運算",[363,1269,1270,1271,396],{},"大幅提升了模型的 ",[367,1272,1273],{},"準確度與訓練效率",[363,1275,1276,1277,1280],{},"因此在許多資料科學任務中，特別是 ",[367,1278,1279],{},"tabular data 的問題","，XGBoost 常常會成為最強大的基準模型之一。",[410,1282],{},[358,1284,1285],{"id":1285},"參考資料",[453,1287,1288,1295,1301],{},[381,1289,1290,1291],{},"Chen, T., & Guestrin, C. (2016). ",[1292,1293,1294],"em",{},"XGBoost: A Scalable Tree Boosting System.",[381,1296,1297,1298],{},"Friedman, J. (2001). ",[1292,1299,1300],{},"Greedy Function Approximation: A Gradient Boosting Machine.",[381,1302,1303,1304],{},"XGBoost 官方文件：",[1305,1306,1307],"a",{"href":1307,"rel":1308},"https://xgboost.readthedocs.io/",[1309],"nofollow",[1311,1312,1313],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}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);}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 .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":649,"searchDepth":784,"depth":784,"links":1315},[1316,1317,1318,1324,1329,1334,1339,1340],{"id":360,"depth":784,"text":361},{"id":414,"depth":784,"text":415},{"id":477,"depth":784,"text":478,"children":1319},[1320,1321,1322,1323],{"id":485,"depth":798,"text":486},{"id":515,"depth":798,"text":516},{"id":541,"depth":798,"text":542},{"id":559,"depth":798,"text":560},{"id":582,"depth":784,"text":583,"children":1325},[1326,1327,1328],{"id":655,"depth":798,"text":656},{"id":683,"depth":798,"text":684},{"id":704,"depth":798,"text":705},{"id":725,"depth":784,"text":726,"children":1330},[1331,1332,1333],{"id":732,"depth":798,"text":732},{"id":758,"depth":798,"text":758},{"id":1100,"depth":798,"text":1100},{"id":1172,"depth":784,"text":1173,"children":1335},[1336,1337,1338],{"id":1179,"depth":798,"text":1179},{"id":1193,"depth":798,"text":1193},{"id":1204,"depth":798,"text":1204},{"id":1244,"depth":784,"text":1244},{"id":1285,"depth":784,"text":1285},"從 Boosting 概念開始，深入理解 XGBoost 的運作原理，並透過實際案例了解如何使用 XGBoost 建立高效的機器學習模型。","md",null,{"tags":1345,"category":86,"date":1351},[1346,1347,1348,1349,1350],"xgboost","machine learning","boosting","tree model","data science","2026-03-08",{"title":113,"description":1341},"g5oenUfFUw_ojPgRptwys1PoDako3srj-g3IpReecdU",[1355,1357],{"title":109,"path":110,"stem":111,"description":1356,"children":-1},"了解機器學習中資料切分的重要性，說明 Train、Validation 與 Test dataset 各自的角色與避免資料洩漏的方法。",{"title":122,"path":123,"stem":124,"description":1358,"children":-1},"從基礎概念到實務應用，深入理解 DNS 中 A Record 與 CNAME 的差異與使用情境。",1776690842320]