机器学习 AUC ROC

混淆矩阵的概念:

 预测正预测反
实际正TPFN
实际反FPTN

真阳性率=TP/(TP+FN)

伪阳性率=FP/(FP+TN)

在二维空间中,横轴为伪阳性率,纵轴为真阳性率,改变算法的参数,真阳性率和伪阳性率都会发生改变,将这样的多个点串连起来,即得ROC曲线,AUC即为ROC曲线下的面积(0.5<AUC<1)

当ROC曲线为y=x时,代表将测试集中的一个样本预测为正的概率等于将该样本预测为负的概率

所以ROC曲线都在y=x的上方,且分类器的性能越好,则AUC越接近1

 

对二分类模型,假设已确定一个阈值,大于这个值预测为正,小于这个值预测为负,减小这个值,固然能够识别更多的正类,但是更多的负类也会误分类为正类,所以引入了ROC曲线,ROC曲线可以用于评价一个分类器

### 含义 ROC即接收者操作特征曲线AUC曲线下面积,它们是用于评估分类模型性能的重要工具,尤其适用于二分类问题,二者相辅相成,可帮助全面理解模型在不同阈值下的表现[^2]。 ### 原理 ROC曲线以假阳性率(FP)为横轴,真阳性率(TP)为纵轴绘制。中间的虚线代表模型最不好的情况,此时TP和FP相等,意味着模型完全随机分类;若曲线在虚线下边,可通过反向预测来处理;红色的线代表模型分类效果还可以,当TP>FP时,曲线越靠近左上角,模型性能越好。AUC则是ROC曲线下的面积,AUC值越大,说明模型的性能越好[^3]。 ### 应用 在机器学习领域,模型评估是确保模型性能的关键环节,ROC曲线AUC值作为重要的评估工具,在分类任务尤其是处理不平衡数据集时发挥着不可或缺的作用[^1]。 ### 计算方法 因未给出具体计算代码相关内容,以下为Python中使用`scikit-learn`库计算ROCAUC的示例代码: ```python from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import roc_curve, auc import matplotlib.pyplot as plt # 生成示例数据 X, y = make_classification(n_samples=1000, n_classes=2, random_state=42) X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 训练模型 model = LogisticRegression() model.fit(X_train, y_train) # 预测概率 y_score = model.predict_proba(X_test)[:, 1] # 计算ROC曲线的假阳性率、真阳性率和阈值 fpr, tpr, thresholds = roc_curve(y_test, y_score) # 计算AUCroc_auc = auc(fpr, tpr) # 绘制ROC曲线 plt.figure() plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show() print(f"AUC值: {roc_auc}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值