ROC 曲线

tt作为一个ML研究者如果你没听过 ROC curve 那你就不能称之为一个good student,^_^,开个玩笑。

假如用ROC来评价一个分类器最好不过了,什么准确率/召回率靠边站吧。

涉及到的到名词:TP/ FP   TN/FN  (突然意识到其实 true positive and false     true negative and false negative 只要是因为早期用在医疗上诊断良性与恶性,可能由此得名把)

                                TPR/FPR  (这个就不用说了把)

已FPR 为x轴  TPR为y轴 (为了使曲线在y=x上方 ,这样你看起来也比较方便对吧)划出roc曲线

当你的分类问题如果是以概率为临界值时,每选择一个一个临界值你就会得到一个分类结果(对应roc坐标中的一个点),当选择多个临界值的时候,你就会得到一系列的点。由此可以在roc坐标中划出一条曲线。这样就可以观察对于给定的临界值,你的FPR与TPR的关系。其实最理想的情况是你原本正确的都分对了,错误的当然也就同时都分对了。此点对对应的就是(0,1)。但实际问题并不完美,所以你需要根据roc曲线来确定你的最佳临界值。对于最佳临界值已有好多人研究过,可以google一大堆。基本上就是根据不同的需求得到不同的临界值。

骚年:抱着你小妾睡觉吧。(洗洗睡了,明天还要回家商量结婚,虽然没毕业,可年龄到了,为了让家中老父放下心头的石头,万事无阻,go++)

附上参考(比我说的明白多了,不过我为了自己印象深刻):http://zh.wikipedia.org/wiki/ROC%E6%9B%B2%E7%BA%BF

### 原理 ROC曲线即受试者工作特征曲线,绘制时以假阳性率(FPR)为横轴,真阳性率(TPR)为纵轴。在不同的分类阈值下,计算相应的FPR和TPR并描点连线形成曲线。通过绘制ROC曲线,可以直观地看到模型在不同分类阈值下的性能表现。曲线的形状和AUC - ROC的值可用于评估模型在区分正例和反例时的能力,若曲线越接近左上角,并且AUC - ROC的值越接近1,那么模型的性能就越好[^2]。 ### 应用 - **二分类问题评估**:在传统的二分类场景中,ROC曲线能够直观展示模型在不同阈值下的分类性能,帮助选择合适的阈值,以平衡假阳性和真阳性的比例。 - **模型比较**:通过比较不同模型的ROC曲线及其AUC - ROC值,可以判断哪个模型在分类任务上表现更优。 ### 绘制方法 在Python中,可使用`sklearn`库进行绘制,以下是一个简单的示例代码: ```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_features=10, n_informative=5, n_redundant=0, 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和阈值 fpr, tpr, thresholds = roc_curve(y_test, y_score) roc_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() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值