【人工智能】機器學習中的評價指標

機器學習中的評價指標

在機器學習中,評估指標(Evaluation Metrics)是衡量模型性能的工具。選擇合適的評估指標能夠幫助我們更好地理解模型的效果以及它在實際應用中的表現。

一般來說,評估指標主要分為三大類:分類、回歸和聚合


分類問題

分類,顧名思義,就是將輸入數據識別并分配到不同的類別上去,以下是它的評估指標:

一、混淆矩陣(Confusion Matrix)

核心概念

混淆矩陣(Confusion Matrix),又稱為誤差矩陣,是一種特定的表格布局,用于描述分類模型的性能。在監督學習中,特別是分類問題中,混淆矩陣給出了分類器預測結果與實際類別之間的差異對比,它能夠幫助我們全面了解分類器的表現。

元素定義應用場景示例
TP (True Positive)正類樣本被正確預測的數量電商用戶流失預測中的真實流失用戶
FP (False Positive)負類樣本被錯誤預測為正類的數量垃圾郵件過濾中的正常郵件誤判
FN (False Negative)正類樣本被錯誤預測為負類的數量醫療診斷中的漏診病例
TN (True Negative)負類樣本被正確預測的數量信用卡欺詐檢測中的正常交易識別

公式表示

實際\預測正類(1)負類(0)
正類(1)TPFN
負類(0)FPTN

示例分析
在用戶流失預測中,若測試集包含:

  • TP=150(正確識別的流失用戶)
  • FP=30(誤判的正常用戶)
  • FN=50(漏檢的流失用戶)
  • TN=770(正確識別的正常用戶)
    通過混淆矩陣可快速定位模型的召回能力缺陷(漏檢率10%)。

二、基礎評估指標

1. 準確率(Accuracy)

公式
Accuracy = T P + T N T P + T N + F P + F N \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} Accuracy=TP+TN+FP+FNTP+TN?

特點

  • ? 適用場景:類別均衡數據(如MNIST手寫數字識別)
  • ? 局限性:癌癥篩查中若健康樣本占99%,全預測為健康準確率可達99%但完全漏檢癌癥

2. 精確率(Precision)

公式
Precision = T P T P + F P \text{Precision} = \frac{TP}{TP + FP} Precision=TP+FPTP?

應用場景

  • 垃圾郵件過濾:預測100封為垃圾郵件,其中90封真實為垃圾,則精確率90%
  • 法律文書分類:高精確率減少錯誤歸檔風險

3. 召回率(Recall)

公式
Recall = T P T P + F N \text{Recall} = \frac{TP}{TP + FN} Recall=TP+FNTP?

應用場景

  • 信用卡欺詐檢測:識別45/50筆欺詐交易,召回率90%
  • 地震預測:容忍較高誤報率以降低漏報風險

三、復合評估指標

1. F1分數(F1-Score)

公式
F 1 = 2 × Precision × Recall Precision + Recall F1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}} F1=Precision+Recall2×Precision×Recall?

變體

  • Fβ分數:通過β調整召回率權重(β>1時更重視召回)
  • 案例:新聞推薦系統中,精確率80%+召回率70% → F1=74.8%
2. ROC曲線與AUC值

核心參數

  • TPR(真正率) T P T P + F N \frac{TP}{TP + FN} TP+FNTP?
  • FPR(假正率) F P F P + T N \frac{FP}{FP + TN} FP+TNFP?

特性

  • 曲線越接近左上角性能越好
  • AUC=0.85表示85%概率將正類樣本排在負類前
3. PR曲線與AUPR

優勢:在類別極度不平衡時(如新冠檢測陽性率1%)比AUC更敏感

四、多分類評估策略

1. 宏平均(Macro-Average)

計算方式:各類別指標取算術平均
適用場景:強調類別平等(如多語言文本分類)

2. 微平均(Micro-Average)

計算方式:匯總所有類別TP/FP/FN后計算全局指標
特點:樣本量差異大時更穩定(如商品評論情感分析)

3. 加權平均(Weighted Average)

公式
Weighted = ∑ i = 1 N Samples i Total × Metric i \text{Weighted} = \sum_{i=1}^N \frac{\text{Samples}_i}{\text{Total}} \times \text{Metric}_i Weighted=i=1N?TotalSamplesi??×Metrici?
應用:電商用戶分級(VIP客戶樣本少但權重大)


回歸問題

均方誤差(Mean Squared Error, MSE)

定義與公式
均方誤差(MSE)是回歸任務中最常用的評價指標之一,其計算公式為預測值與真實值差的平方的均值:
MSE = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1?i=1n?(yi??y^?i?)2
MSE通過平方操作放大了較大誤差的權重,使得模型在訓練過程中更關注極端錯誤。例如,若真實值為 [200, 300, 400],預測值為 [210, 290, 410],則 MSE 計算為:
MSE = ( 10 ) 2 + ( ? 10 ) 2 + ( 10 ) 2 3 = 100 + 100 + 100 3 ≈ 100 \text{MSE} = \frac{(10)^2 + (-10)^2 + (10)^2}{3} = \frac{100 + 100 + 100}{3} \approx 100 MSE=3(10)2+(?10)2+(10)2?=3100+100+100?100
此時 MSE 的單位是目標變量的平方(如房價的平方值),導致解釋性較差,但能有效反映模型的整體誤差水平。

優點與缺點

  • 優點:對大誤差敏感,適用于需要嚴格避免大偏差的場景(如金融風控)。
  • 缺點:量綱不直觀,且異常值會顯著拉高 MSE(例如某個預測誤差為 100,其平方貢獻為 10000)。

均方根誤差(Root Mean Squared Error, RMSE)

定義與公式
RMSE 是 MSE 的平方根,公式為:
RMSE = 1 n ∑ i = 1 n ( y i ? y ^ i ) 2 \text{RMSE} = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} RMSE=n1?i=1n?(yi??y^?i?)2 ?
RMSE 解決了 MSE 量綱問題,使其與目標變量單位一致。例如,若預測溫度(單位:℃)的 MSE 為 25,則 RMSE 為 5℃,可直接解讀為“平均誤差約為 5 攝氏度”。

實際案例
假設預測某城市日平均溫度,真實值為 [20, 22, 25],預測值為 [18, 23, 24],則:
RMSE = ( 2 ) 2 + ( ? 1 ) 2 + ( 1 ) 2 3 = 4 + 1 + 1 3 ≈ 1.41 ℃ \text{RMSE} = \sqrt{\frac{(2)^2 + (-1)^2 + (1)^2}{3}} = \sqrt{\frac{4 + 1 + 1}{3}} \approx 1.41 \,℃ RMSE=3(2)2+(?1)2+(1)2? ?=34+1+1? ?1.41
RMSE 的優勢在于直觀性,但依然受異常值影響。例如,若某個預測誤差為 10℃,其平方項將主導計算結果。

平均絕對誤差(Mean Absolute Error, MAE)

定義與公式
MAE 計算預測值與真實值絕對誤差的平均值:
MAE = 1 n ∑ i = 1 n ∣ y i ? y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1?i=1n?yi??y^?i?
MAE 對異常值的魯棒性優于 MSE/RMSE。例如,預測房價時,若數據中存在少量極端高價(如 1000 萬美元),MAE 僅線性放大這些誤差,而 MSE 會因平方操作使其影響劇增。

實際案例
假設真實房價為 [200, 300, 1000](單位:萬美元),預測值為 [210, 290, 950],則:
MAE = ∣ 10 ∣ + ∣ ? 10 ∣ + ∣ 50 ∣ 3 = 10 + 10 + 50 3 ≈ 23.3 萬美元 \text{MAE} = \frac{|10| + |-10| + |50|}{3} = \frac{10 + 10 + 50}{3} \approx 23.3 \,萬美元 MAE=3∣10∣+?10∣+∣50∣?=310+10+50?23.3萬美元
MAE 的缺點是忽略誤差方向(如高估或低估),且無法區分多個小誤差和一個大誤差的差異。

決定系數(R2 Score)

定義與公式
R2 衡量模型對目標變量方差的解釋能力,公式為:
R 2 = 1 ? ∑ i = 1 n ( y i ? y ^ i ) 2 ∑ i = 1 n ( y i ? y ˉ ) 2 R^2 = 1 - \frac{\sum_{i=1}^{n} (y_i - \hat{y}_i)^2}{\sum_{i=1}^{n} (y_i - \bar{y})^2} R2=1?i=1n?(yi??yˉ?)2i=1n?(yi??y^?i?)2?
其中 y ˉ \bar{y} yˉ? 是真實值的均值。R2 越接近 1,說明模型擬合越好。例如,若 R2=0.85,表示模型能解釋 85% 的數據波動。

實際案例
假設某商品銷量預測的 R2=0.75,說明模型解釋了 75% 的銷量變化,剩余 25% 由未考慮的因素(如促銷活動)導致。但需注意:R2 隨特征數量增加可能虛高,此時需結合調整后 R2(Adjusted R2)使用。

平均絕對百分比誤差(Mean Absolute Percentage Error, MAPE)

定義與公式
MAPE 計算相對誤差的絕對值均值,公式為:
MAPE = 100 % n ∑ i = 1 n ∣ y i ? y ^ i y i ∣ \text{MAPE} = \frac{100\%}{n} \sum_{i=1}^{n} \left| \frac{y_i - \hat{y}_i}{y_i} \right| MAPE=n100%?i=1n? ?yi?yi??y^?i?? ?
MAPE 適用于不同量綱數據的橫向比較。例如,預測銷售額時,若 MAPE=10%,表示平均誤差為實際值的 10%。

實際案例
假設某商品日銷售額真實值為 [100, 200, 300](單位:美元),預測值為 [90, 210, 280],則:
MAPE = 100 % 3 ( 10 100 + 10 200 + 20 300 ) ≈ 8.33 % \text{MAPE} = \frac{100\%}{3} \left( \frac{10}{100} + \frac{10}{200} + \frac{20}{300} \right) \approx 8.33\% MAPE=3100%?(10010?+20010?+30020?)8.33%
但需注意:當真實值接近零時,MAPE 可能無限大(如真實值為 0 時,分母為零)。

調整后決定系數(Adjusted R2)

定義與公式
調整后 R2 在 R2 基礎上引入特征數量懲罰,公式為:
Adjusted? R 2 = 1 ? ( ( 1 ? R 2 ) ( n ? 1 ) n ? k ? 1 ) \text{Adjusted } R^2 = 1 - \left( \frac{(1 - R^2)(n - 1)}{n - k - 1} \right) Adjusted?R2=1?(n?k?1(1?R2)(n?1)?)
其中 k k k 為特征數量。當模型中添加無關特征時,調整后 R2 會下降,從而避免過擬合。

實際案例
假設某模型在 100 個樣本上使用 5 個特征得到 R2=0.8,調整后 R2 計算為:
Adjusted? R 2 = 1 ? ( 1 ? 0.8 ) ( 99 ) 94 ≈ 0.787 \text{Adjusted } R^2 = 1 - \frac{(1 - 0.8)(99)}{94} \approx 0.787 Adjusted?R2=1?94(1?0.8)(99)?0.787
若新增一個無關特征后 R2 升至 0.805,調整后 R2 可能降至 0.78,說明新增特征無實際貢獻。


聚類問題

純度(Purity)

定義與公式
純度衡量聚類結果與真實類別的一致性,通過統計每個聚類簇中占多數的真實類別樣本數占比實現:
Purity = 1 N ∑ k max ? j ∣ w k ∩ c j ∣ \text{Purity} = \frac{1}{N} \sum_{k} \max_j |w_k \cap c_j| Purity=N1?k?jmax?wk?cj?
其中 N N N 是總樣本數, w k w_k wk? 表示第 k k k 個聚類簇, c j c_j cj? 表示第 j j j 個真實類別。例如,某聚類結果中三個簇的多數類別樣本數分別為 5、4、3,總樣本數 17,則純度為 ( 5 + 4 + 3 ) / 17 ≈ 0.706 (5+4+3)/17 \approx 0.706 (5+4+3)/170.706

優點與缺點

  • 優點:計算簡單,直觀反映聚類與真實標簽的匹配程度。
  • 缺點:未考慮類簇數量影響,可能因簇數過多虛高(如極端情況每個樣本單獨成簇,純度=1)。

歸一化互信息(Normalized Mutual Information, NMI)

定義與公式
NMI 通過信息熵衡量聚類結果與真實類別的信息共享程度:
NMI = I ( Ω ; C ) ( H ( Ω ) + H ( C ) ) / 2 \text{NMI} = \frac{I(\Omega; C)}{(H(\Omega) + H(C))/2} NMI=(H(Ω)+H(C))/2I(Ω;C)?
其中 I ( Ω ; C ) I(\Omega; C) I(Ω;C) 是互信息, H ( Ω ) H(\Omega) H(Ω) H ( C ) H(C) H(C) 分別為聚類簇和真實類別的熵。NMI 值域為 [0,1],越接近 1 表示聚類與真實分布越一致。

實際案例
若真實類別分布為 [6,6,5],聚類結果分布為 [8,5,4],通過計算聯合概率分布和熵值,可得 NMI≈0.564。
優點:對簇數量敏感,避免因簇數過多導致的虛高問題。缺點:計算復雜度較高,需依賴概率分布模型。


蘭德系數(Rand Index, RI)與調整蘭德系數(Adjusted Rand Index, ARI)

定義與公式
RI 通過樣本對的一致性評估聚類質量:
RI = T P + T N T P + F P + F N + T N \text{RI} = \frac{TP + TN}{TP + FP + FN + TN} RI=TP+FP+FN+TNTP+TN?
其中 T P TP TP 表示同類樣本在同一簇中的對數, T N TN TN 表示異類樣本在不同簇中的對數。RI 值域 [0,1],但隨機聚類結果可能不為 0。因此引入 ARI 進行修正:
ARI = R I ? E [ R I ] max ? ( R I ) ? E [ R I ] \text{ARI} = \frac{RI - E[RI]}{\max(RI) - E[RI]} ARI=max(RI)?E[RI]RI?E[RI]?
ARI 值域 [-1,1],0 表示隨機水平,1 表示完美匹配。

實際案例
某聚類結果中 T P = 20 TP=20 TP=20 T N = 72 TN=72 TN=72 F P = 20 FP=20 FP=20 F N = 24 FN=24 FN=24,則 R I ≈ 0.68 RI≈0.68 RI0.68,而 ARI 通過期望值修正后可能降至 0.48。
優點:綜合考量同類/異類樣本對的分布。缺點:計算復雜度高,需遍歷所有樣本對。


F值(F-score)

定義與公式
F-score 是準確率(Precision)和召回率(Recall)的調和平均,用于平衡聚類結果的精確性與覆蓋率:
F β = ( 1 + β 2 ) ? Precision ? Recall β 2 ? Precision + Recall F_{\beta} = (1+\beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}} Fβ?=(1+β2)?β2?Precision+RecallPrecision?Recall?
其中 β \beta β 為權重參數(常取 1)。Precision 表示同一簇中同類樣本占比,Recall 表示同類樣本被正確聚類的占比。

實際案例
若某聚類結果中 T P = 20 TP=20 TP=20 F P = 20 FP=20 FP=20 F N = 24 FN=24 FN=24,則 Precision=0.5,Recall≈0.46, F 1 ≈ 0.48 F_1≈0.48 F1?0.48
優點:適用于類別不平衡場景。缺點:依賴樣本對的統計,計算成本較高。


互信息(Mutual Information, MI)與調整互信息(AMI)

定義與公式
MI 直接衡量聚類結果與真實類別的信息相關性:
I ( Ω ; C ) = ∑ k , j ∣ w k ∩ c j ∣ N log ? N ∣ w k ∩ c j ∣ ∣ w k ∣ ∣ c j ∣ I(\Omega; C) = \sum_{k,j} \frac{|w_k \cap c_j|}{N} \log \frac{N|w_k \cap c_j|}{|w_k||c_j|} I(Ω;C)=k,j?Nwk?cj??logwk?∣∣cj?Nwk?cj??
為消除隨機聚類影響,AMI 引入調整項:
AMI = I ( Ω ; C ) ? E [ I ] ( H ( Ω ) + H ( C ) ) / 2 ? E [ I ] \text{AMI} = \frac{I(\Omega; C) - E[I]}{(H(\Omega) + H(C))/2 - E[I]} AMI=(H(Ω)+H(C))/2?E[I]I(Ω;C)?E[I]?
AMI 值域 [0,1],更魯棒。
優點:無需假設數據分布,適應復雜結構。缺點:計算復雜,需依賴概率估計。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/74376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/74376.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/74376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

不同機床對螺桿支撐座的要求有哪些不同?

螺桿支撐座是機械設備中重要的支撐部件,其選擇直接影響到設備的穩定性和使用壽命,尤其是在機床中,不同的機床對螺桿支撐座的要求也是不同的。 1、精度:精密測量用的基準平面和精密機床機械的檢驗測量設備,需要使用高精…

在Spring Boot中,可以通過實現一些特定的接口來拓展Starter

在Spring Boot中,開發者可以通過實現一些特定的接口來拓展Starter。這些接口允許開發者自定義Spring Boot應用程序的配置和行為,從而創建功能豐富且易于使用的Starter。以下是一些關鍵的接口,用于拓展Starter: EnvironmentPostPro…

深入理解 tree 命令行工具:目錄結構可視化的利器

文章目錄 前言1. 什么是 tree 命令?安裝 tree 2. tree 的基本用法顯示當前目錄的樹狀結構顯示指定目錄的樹狀結構 3. tree 的常用選項3.1 顯示隱藏文件3.2 排除特定目錄或文件3.3 限制遞歸深度3.4 顯示文件大小3.5 顯示文件的權限信息3.6 將輸出保存到文件 4. 實際應…

Federated learning client selection algorithm based on gradient similarity閱讀

基于梯度相似性的聯邦學習客戶端選擇算法 Abstract 摘要introduction**背景****目的****結論****結果****討論****思路** 鏈接:https://link.springer.com/article/10.1007/s10586-024-04846-0 三區 Abstract 摘要 聯邦學習(FL)是一種創新的…

【測試工具】如何使用 burp pro 自定義一個攔截器插件

在 Burp Suite 中,你可以使用 Burp Extender 編寫自定義攔截器插件,以攔截并修改 HTTP 請求或響應。Burp Suite 支持 Java 和 Python (Jython) 作為擴展開發語言。以下是一個完整的流程,介紹如何創建一個 Burp 插件來攔截請求并進行自定義處理…

網絡編程的概念&作用

網絡編程是什么? 想象一下,你和朋友在不同的房間里,你們想互相傳遞紙條聊天。網絡編程就像是編寫一套規則,讓計算機能夠通過網絡(比如互聯網)互相傳遞信息。這些信息可以是文字、圖片、視頻,甚…

航天軍工與金融行業 UE/UI 設計:跨越領域的體驗革新之道

在數字化時代,用戶體驗(UE)和用戶界面(UI)設計成為眾多行業提升競爭力的關鍵因素。航天軍工與金融行業雖業務性質差異巨大,但在 UE/UI 設計方面卻面臨著一些相似挑戰,同時也在各自的探索中展現出…

【Git】--- 分支管理

Welcome to 9ilks Code World (??? ? ???) 個人主頁: 9ilk (??? ? ???) 文章專欄: Git 本篇博客我們來介紹Git的一個重要功能之一 ---- 分支。我們將講解關于分支的各種操作,以及如何幫助我們進行開發。 🏠 理解分支…

純血鴻蒙:中國操作系統自主創新的里程碑

引言:破局者登場 2024 年 10 月,搭載純血鴻蒙操作系統(HarmonyOS NEXT)的華為 Mate 70 系列正式發布,首日預約量突破 330 萬。這場現象級熱度的背后,不僅是消費者對硬件創新的期待,更是中國科技…

二造考試的備考過程中如何保持良好的心態?

在二級造價師考試的備考過程中,保持良好的心態至關重要,以下是一些有效的方法: 樹立正確的考試觀念 )認識到二級造價師考試是職業生涯中的一個重要環節,但不是唯一的決定因素。把它看作是提升自己專業能力、豐富知識儲備的機會&am…

Vue3前端開發:組件化設計與狀態管理

Vue3前端開發:組件化設計與狀態管理 一、Vue3組件化設計 組件基本概念與特點 是一款流行的JavaScript框架,它支持組件化設計,這意味著我們可以將頁面分解成多個獨立的組件,每個組件負責一部分功能,通過組件的嵌套和復用…

動手學深度學習11.9. Adadelta-筆記練習(PyTorch)

以下內容為結合李沐老師的課程和教材補充的學習筆記,以及對課后練習的一些思考,自留回顧,也供同學之人交流參考。 本節課程地址:72 優化算法【動手學深度學習v2】_嗶哩嗶哩_bilibili 本節教材地址:11.9. Adadelta —…

Android Audio基礎(13)——audiomixer

在 Android 平臺上,音頻混合器 AudioMixer 主要用在 AudioFlinger 里,將多路音頻源數據混音(包括混音、音量處理、重采樣及處理聲道等)。位于 framework 的音頻處理模庫 libaudioprocessing(frameworks/av/media/libau…

【React】使用Swiper報錯`Swiper` needs at least one child

問題 聊天頁面的表情面板&#xff0c;滑動效果使用了ant design mobile的Swiper。 原代碼中&#xff0c;Swiper 組件在 isShow 為 false 時渲染的是 <></>&#xff08;空元素&#xff09;&#xff0c;控制臺警告Swiper needs at least one child&#xff0c;Swip…

Matlab教程001:軟件介紹和界面使用

1.1 軟件介紹 1.1.1 Matlab的介紹 MATLAB&#xff08;MATrix LABoratory&#xff09;是一款由 MathWorks 公司開發的高級編程語言和交互式環境&#xff0c;廣泛用于 科學計算、數據分析、機器學習、工程建模、仿真和信號處理 等領域。 1.1.2 主要應用領域 數據分析與可視化…

藍橋杯算法實戰分享:算法進階之路與實戰技巧

引言 藍橋杯作為國內極具影響力的程序設計競賽&#xff0c;為眾多編程愛好者和專業人才提供了展示自我的舞臺。參與藍橋杯不僅能檢驗自身編程水平&#xff0c;還能拓寬技術視野&#xff0c;為未來職業發展積累寶貴經驗。本文將結合歷年真題與參賽經驗&#xff0c;全面分享藍橋…

Android Compose 層疊布局(ZStack、Surface)源碼深度剖析(十三)

Android Compose 層疊布局&#xff08;ZStack、Surface&#xff09;源碼深度剖析 一、引言 在 Android 應用開發領域&#xff0c;用戶界面&#xff08;UI&#xff09;的設計與實現一直是至關重要的環節。隨著技術的不斷演進&#xff0c;Android Compose 作為一種全新的聲明式…

MongoDB 面試備戰指南

MongoDB 面試備戰指南 一、基礎概念 1. MongoDB是什么類型的數據庫&#xff1f;和關系型數據庫有什么區別&#xff1f; 答案&#xff1a; MongoDB是文檔型NoSQL數據庫&#xff0c;核心區別&#xff1a; 數據模型&#xff1a;存儲JSON-like文檔&#xff08;動態schema&#xf…

毫米波雷達標定(2)

1. 前言 前面文章中介紹了產線上毫米波雷達的標定原理和流程,這篇文章則主要介紹其在線標定方法。相對于產線標定,在線標定具備使用自然場景而不是依賴特定標靶的優點,但因此其標定精度會相對差一點。在線標定一般應用于售出產品的維護場景,如果其標定結果精度可以滿足使用…

Linux fority source和__builtin_xxx

這段代碼是用于啟用和配置 GCC/Clang 的 Fortify Source 安全機制的預處理指令。Fortify Source 主要用于在編譯時增強對緩沖區溢出等內存安全問題的檢查。以下是對每一部分的詳細解釋&#xff1a; 1. 最外層條件編譯 # if CONFIG_FORTIFY_SOURCE > 0目的&#xff1a;檢查…