首页 / 资讯中心 / 文章详情

机器学习之模型评估

机器学习之模型评估 ★ FEATURED ARTICLE
模型评估理论基础欠拟合 (Underfitting)模型过于简单无法捕捉数据真实规律类比学生没理解核心概念。特征训练误差和测试误差都高模型复杂度不足特征工程不充分。过拟合 (Overfitting)模型过于复杂记住了训练数据的噪声和细节类比学生死记硬背不会举一反三。数据处理数据集划分核心原则测试集必须完全独立只能在最终评估时使用一次。训练集 (70%)用于训练模型参数学习数据规律。验证集 (15%)用于调整超参数和模型选择优化模型结构。测试集 (15%)用于最终评估模型性能模拟真实应用场景【可选】。fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_split irisload_iris()xiris.data yiris.target# 测试集70% 临时集30%x_train,x_temp,y_train,y_temptrain_test_split(x,y,test_size0.3,random_state42)# 临时集30% 验证集15% 测试集15%x_val,x_test,y_val,y_testtrain_test_split(x_temp,y_temp,test_size0.5,random_state42)交叉验证可靠的评估方法交叉验证主要用于模型评估、模型选择、超参数调优 和 生成OOF预测。目前而言经常用于超参数调优适用于任何场景基本流程数据分割将数据分为K个等份循环训练每次用K-1份进行训练轮流验证每次用1份验证结果汇总计算K次的平均值优势充分利用有限数据、减少随机划分带来的偏差、获得更稳定的性能估计适合小样本数据集。K值选择K5常用默认值平衡效率与准确性。K10更精确但计算成本较高。KN (LOOCV)留一交叉验证适合极小数据集。fromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_split,cross_val_scorefromsklearn.ensembleimportRandomForestClassifier irisload_iris()xiris.data yiris.target x_train,x_test,y_train,y_testtrain_test_split(x,y,test_size0.2,random_state42)# 模型modelRandomForestClassifier(n_estimators100,n_jobs-1,random_state42)# 执行K折交叉验证在训练集上做# cv5 表示5折交叉验证# scoringaccuracy 表示评估指标为准确率cv_scorescross_val_score(model,x_train,y_train,cv5,scoringaccuracy)# 输出交叉验证结果print(f各折准确率:{cv_scores})# 打印每一折的得分print(f平均准确率:{cv_scores.mean():.4f})# 计算平均值print(f标准差:{cv_scores.std():.4f})# 计算标准差越小说明模型越稳定--------------------------------------------------------------------------------各折准确率:[0.958333330.958333330.833333331.0.95833333]平均准确率:0.9417标准差:0.0565最终测试集准确率:1.0000--------------------------------------------------------------------------------分类模型的评估指标预测值正类 (1)预测值负类 (0)真实值正类 (1)真正例 (TP)假负例 (FN)真实值负类 (0)假正例 (FP)真负例 (TN)四大核心评估指标指标名称定义计算公式适用场景与特点准确率 (Accuracy)正确预测的样本占总样本的比例。(TP TN) / (TP TN FP FN)适用于类别平衡的数据集。查准率 / 精确率 (Precision)预测为正类的样本中真正为正类的比例。TP / (TP FP)关注误报率。适合对“假正例”容忍度低、代价敏感的场景如垃圾邮件拦截。查全率 / 召回率 (Recall)真正为正类的样本中被正确预测的比例。TP / (TP FN)关注漏报率。适合需要高覆盖的场景如地震预测、癌症筛查。F1分数 (F1-Score)精确率和召回率的调和平均数综合指标。2 * (Precision * Recall) / (Precision Recall)平衡精确率和召回率的综合指标尤其适合类别不平衡场景。fromsklearn.metricsimportaccuracy_score,precision_score,recall_score,f1_score# 计算各种分类指标accuracyaccuracy_score(y_true,y_pred)# 准确率 Accuracyprecisionprecision_score(y_true,y_pred,averageweighted)# 查准率 Precisionrecallrecall_score(y_true,y_pred,averageweighted)# 查全率 Recallf1f1_score(y_true,y_pred,averageweighted)# F1分数 F1-Score# 输出结果print(f准确率(Accuracy):{accuracy:.4f})print(f查准率 / 精确率(Precision):{precision:.4f})print(f查全率 / 召回率(Recall):{recall:.4f})print(fF1分数(F1-Score):{f1:.4f})基础工具混淆矩阵可视化分类结果使用confusion_matrix(y_true, y_pred)计算混淆矩阵。使用classification_report(y_true, y_pred)生成包含精确率、召回率、F1分数及样本量的详细报告。fromsklearn.metricsimportconfusion_matrix,classification_report# 假设 y_true 为真实标签y_pred 为模型预测标签# 1、计算混淆矩阵cmconfusion_matrix(y_true,y_pred)print(混淆矩阵:)print(cm)# 2、生成详细报告reportclassification_report(y_true,y_pred,target_names[负类,正类]# 指定类别名称使报告更直观)print(\n分类报告:)print(report)回归模型的评估指标三大核心评估指标指标名称定义计算公式特点与适用场景均方误差 (MSE)预测值与真实值差值的平方的平均值。MSE Σ(y - ŷ)² / n对异常值敏感数值较大。当需要惩罚大误差时使用。均方根误差 (RMSE)均方误差的平方根预测值与真实值差值的平方的平均值的平方根。RMSE √[Σ(y - ŷ)² / n]或√MSE与原始数据单位相同更易解释。对异常值敏感因放大了大误差。当需要惩罚大误差时使用。平均绝对误差 (MAE)预测值与真实值差值的绝对值的平均值。MAE Σy - ŷR²决定系数模型解释的方差占总方差的比例。R² 1 - SSE / SST取值0到1越接近1越好。评估模型整体拟合优度但不能单独使用需结合其他指标。fromsklearn.metricsimportmean_squared_error,mean_absolute_error,r2_scoreimportnumpyasnp# 计算各种回归指标msemean_squared_error(y_true,y_pred)# 均方误差MSErmsenp.sqrt(mse)# 均方根误差RMSEmaemean_absolute_error(y_true,y_pred)# 平均绝对误差MAEr2r2_score(y_true,y_pred)# 决定系数R²# 输出结果print(f均方误差(MSE):{mse:.4f})print(f均方根误差(RMSE):{rmse:.4f})print(f平均绝对误差(MAE):{mae:.4f})print(fR²分数:{r2:.4f})可视化评估预测值 vs 实际值散点图理想情况下点应该落在yx线上偏离程度反映预测误差。残差图Residual Plot残差真实值 - 预测值应该随机分布在零附近。如果有明显的模式如喇叭形、曲线形则说明模型存在系统性偏差。残差分布直方图检查残差是否符合正态分布以判断模型假设是否成立。常见问题与解决方案常见问题核心表现症状避坑指南对策数据泄露预处理或特征工程时使用了测试集信息导致评估结果虚高。严格分离数据正确使用fit_transform训练集和transform测试集。过度依赖单一指标只看准确率Accuracy忽视了模型在其他维度的表现。使用多个互补指标精确率、召回率、F1等结合具体业务需求判断。测试集多次使用反复在测试集上调参、选特征导致测试集变成了“验证集”。测试集仅用于最终评估调参和模型选择必须使用交叉验证。忽视样本不平衡在类别极度不平衡的数据上仅看准确率如99%正常邮件全猜正常也99%。使用F1分数、AUC-ROC等指标采用重采样SMOTE或调整类别权重。过拟合 (Overfitting)训练误差极低测试误差高。模型过于复杂记住了噪声。增加数据量、正则化、降低模型复杂度。欠拟合 (Underfitting)训练误差和测试误差都很高。模型过于简单没学到规律。增加模型复杂度、补充特征工程。K值选择不当K值过小方差大K值过大计算成本高留一法LOOCV成本极高。在计算成本和评估准确性间权衡K5 或 K10是最常用选择。
阅读完成 · 觉得有帮助?
咨询建站