auc

Plot ROC curve and calculate AUC in R at specific cutoff info

僤鯓⒐⒋嵵緔 提交于 2020-03-02 06:58:48
问题 Given such data: SN = Sensitivity; SP = Specificity Cutpoint SN 1-SP 1 0.5 0.1 2 0.7 0.2 3 0.9 0.6 How can i plot the ROC curve and calculate AUC. And compare the AUC between two different ROC curves. In the most of the packages such pROC or ROCR, the input of the data is different from those shown above. Can anybody suggest the way to solve this problem in R or by something else? ROCsdat <- data.frame(cutpoint = c(5, 7, 9), TPR = c(0.56, 0.78, 0.91), FPR = c(0.01, 0.19, 0.58)) ## plot

1.机器学习之模型评估详解

不问归期 提交于 2020-03-02 02:07:13
模型评价是指对于已经建立的一个或多个模型,根据其模型的类别,使用不同的指标评价其性能优劣的过程。常用的聚类模型评价指标有ARI评价法(兰德系数)、AMI评价法(互信息)、V-measure评分、FMI评价法和轮廓系数等。常用的分类模型评价指标有准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1值(F1 Value)、ROC和AUC等。常用的回归模型评价指标有平均绝对误差、均方根误差、中值绝对误差和可解释方差值等。 线性回归解决的是连续型数值的预测问题,例如预测房价,产品销量等。 逻辑回归解决的是分类问题,从分类数量上看,有二项分类和多项分类。 sklearn库的metrics模块提供各种评估方法,包括分类评估、回归评估、聚类评估和交叉验证等,评估分类是判断预测值时否很好的与实际标记值相匹配。正确的鉴别出正样本(True Positives)或者负样本(True Negatives)都是True。同理,错误的判断正样本(False Positive,即一类错误)或者负样本(False Negative,即二类错误)。 注意:True和False是对于评价预测结果而言,也就是评价预测结果是正确的(True)还是错误的(False)。而Positive和Negative则是样本分类的标记。 metrics模块分类度量有6种方法,如下表所示: 指标 描述

AUC、ROC、ACC区别

£可爱£侵袭症+ 提交于 2020-02-26 07:26:18
很多时候我们都用到ROC(receiver operating characteristic curve,受试者工作特征曲线)和AUC(Area Under Curve,被定义为ROC曲线下的面积)来评判一个二值分类器的优劣,其实AUC跟ROC息息相关,AUC就是ROC曲线下部分的面积,所以需要首先知道什么是ROC,ROC怎么得来的。然后我们要知道一般分类器会有个准确率ACC,那么既然有了ACC,为什么还要有ROC呢,ACC和ROC的区别又在哪儿,这是我喜欢的一种既生瑜何生亮问题。 最后又简单说明了一下有了ROC之后,为什么还要有AUC呢 ROC简介 ROC曲线的横坐标为false positive rate(FPR)即负类样本中被判定为正类的比例,也就是传说中的误纳率. 纵坐标为true positive rate(TPR)即正类样本中被判定为正类的样本,1-TPR也就是传说中的误拒率 接下来我们考虑ROC曲线图中的四个点和一条线。 第一个点,(0,1),即左上角的点,在这个点意味着FPR=0,TPR=1,稍微翻译一下就是误纳率为0,误拒率为0,再翻译成人话就是负类样本中被判断为正类的比例为0,说明负类样本都被判断为负类,判断正确,正类样本中被判断为正类的比例为1,说明正类样本都被判断正确,所以这是一个完美的分类器,它将所有的样本都正确分类。 第二个点,(1,0),即右下角的点

使用Xgboost时出现错误 TypeError: 'str' object is not callable

谁都会走 提交于 2020-02-25 08:14:31
在Xgboost进行调参代码时,出现错误,TypeError: 'str' object is not callable def modelfit(alg,dtrain,predictors,useTrainCV=True,cv_folds=5,early_stopping_rounds=50): if useTrainCV: xgb_param = alg.get_xgb_params() xgbtrain = xgb.DMatrix(dtrain[predictors].values,label=dtrain[target].values) cvresult = xgb.cv(xgb_param,xgbtrain,num_boost_round=alg.get_params()['n_estimators'], nfold=cv_folds,metrics='auc',early_stopping_rounds=early_stopping_rounds, show_stdv=False) alg.set_params(n_estimators=cvresult.shape[0]) # Fit the algorithm on the data alg.fit(dtrain[predictors],dtrain['FLAG'],eval_metric='auc')

金融风控信用卡评分建模

白昼怎懂夜的黑 提交于 2020-02-17 23:03:15
一、引言 如何利用机器学习以及大数据技术来降低风险呢?如何建立信用评分的模型呢?本文将针对这些问题简单介绍互金行业中授信产品的风控建模过程,内容主要如下: ·信用风险定义 ·信用风险评分卡类型 ·信用评分模型建立的基本流程 1.信用风险定义 ①风险管理的概念 风险管理最早起源于美国。1930年由美国管理协会保险部最先倡导风险管理,后面在全球流行开来,随着互联网的迅猛发展,大数据、数据挖掘和机器学习等新兴技术开始出现,让风险管理更为精准。他们通过收集银行系统本身的征信数据以及用户在互联网上的的各种数据,包括人际关系、历史消费行为、身份特征等,通过大数据“画像”技术,对用户进行全面的定位,由此来预测用户的履约能力、降低信贷风险。 ②什么是信用风险? 信用风险又称违约风险,是指借款人、证券发行人或交易对方因种种原因,不愿或无力履行合同条件而构成违约,致使银行、投资者或交易对方遭受损失的可能性。即受信人不能履行还本付息的责任而使授信人的预期收益与实际收益发生偏离的可能性,它是金融风险的主要类型。 万事都有风险,但对于金融行业来讲,风险控制尤为重要。对于海量的用户数据处理,传统的人工授信方式显然是很乏力的,因此现在大多互联网金融P2P公司都采用机器学习、大数据等技术对风险进行自动化评估,来最大程度的降低风险。当然,这些技术的应用并不能百分百的保证零风险,因为有很多人为因素是不可控的

4.模型评估之ROC和AUC

我们两清 提交于 2020-02-11 06:46:06
基本概念 ROC全称是“受试者工作特征”(Receiver Operating Characteristic)曲线。ROC曲线的纵轴是“真正率”(True Positive Rate, TPR),横轴是“假正例率”(False Positive Rate, FPR)。 TPR = TP / ( TP + FN ) FPR = FP / ( TN + FP ) 进行学习器的比较时,若一个学习器的ROC曲线被另一个学习器的曲线完全“包住”,则可以断言后者的性能优于前者;若两个学习器的ROC曲线发生交叉,则难以一般性地断言两者孰优孰劣。此时较为合理的判据是比较ROC曲面下的面积,即AUC(Area Under ROC Curve)。 示例演示 我们看看sklearn的官方例子: Receiver Operating Characteristic (ROC) with cross validation 。 """ ============================================================= Receiver Operating Characteristic (ROC) with cross validation =============================================================

机器学习算法评价指标之group auc(gauc)

非 Y 不嫁゛ 提交于 2020-02-10 15:36:38
机器学习算法评价指标之group auc(gauc) 在机器学习算法中,很多情况我们都是把auc当成最常用的一个评价指标,而auc反映整体样本间的排序能力,但是有时候auc这个指标可能并不能完全说明问题,有可能auc并不能真正反映模型的好坏,以CTR预估算法(推荐算法一般把这个作为一个很重要的指标)为例,把用户点击的样本当作正样本,没有点击的样本当作负样本,把这个任务当成一个二分类进行处理,最后模型输出的是样本是否被点击的概率。  举个很简单的例子,假如有两个用户,分别是甲和乙,一共有5个样本,其中+表示正样本,-表示负样本,我们把5个样本按照模型A预测的score从小到大排序,得到 甲-,甲+,乙-,甲+,乙+. 那么实际的auc应该是 (1+2+2)/(32)=0.833, 那假如有另一个模型B,把这5个样本根据score从小到大排序后,得到 甲-,甲+,甲+,乙-,乙+, 那么该模型预测的auc是(1+1+2)/(32)=0.667.  那么根据auc的表现来看,模型A的表现优于模型B,但是从实际情况来看,对于用户甲,模型B把其所有的负样本的打分都比正样本低,故,对于用户甲,模型B的auc是1, 同理对于用户乙,模型B的auc也应该是1,同样,对于用户甲和乙,模型A的auc也是1,所以从实际情况来看,模型B的效果和模型A应该是一样好的,这和实际的auc的结果矛盾。

银行客户流失预警模型——业务分析及代码(实战)

左心房为你撑大大i 提交于 2020-01-28 21:18:29
DataMiningCase 流失预警模型(二分类),代码原型为本人在某银行做的流失模型,AUC:83%、召回率:19.4%,精确率:85%(数据是外部数据/代码已脱敏) 你将习得:数据的处理、LightGBM、sklearn包(里面含有:GridSearchCV寻找最优参、StratifiedKFold分层5折切分、train_test_split单次数据切分等)、画AUC图、画混淆矩阵图,并输出预测名单。 注释覆盖率为80%左右,旨在帮助快速入门,新手级,持续更新,提供免费支持,只需要一颗star 该项目涉及的如下: 业务理解 业务需求分析(实战) 数据理解 数据质量探查 重要特征探查 数据处理 preprocessing函(数据切分成训练用数据X,和校对数据y) dropna(处理异常值字段) pd.value_counts(正负样本情况) fillna(null值填充) smote(过采样) 特征工程 corr(特征相关系数图) 正负样本特征柱状图 正负样本特征线性图 rfecv(特征五折递归消除) importance(基于模型的特征重要性) 模型训练 GridSearchCV(寻找最优参) LightGBM参数详解 StratifiedKFold(分层5折模型训练) train_test_split(单次切分模型训练) 输出名单 ks值及优threshold 画图

roc曲线 vs pr曲线(AUC vs f1)

自作多情 提交于 2020-01-28 05:29:40
什么是AUC 摘录:https://tracholar.github.io/machine-learning/2018/01/26/auc.html 如果auc=0.70,代表给定一个正样本和一个负样本,在70%的情况下,模型对正样本的打分高于对负样本的打分。 什么时候应使用AUC?哪个时候应使用F1? 以前理解是觉得使用f1值(即采用召回率和精确率)来评价模型会更好。 因为召回率和精确率更直观,可以使业务方对模型的预测效果有较准确预期。 那auc有什么用处呢?什么时候应该使用呢? 接下来本篇会将roc曲线与pr曲线做对比,并且介绍auc的应用场景 ROC曲线 vs PR曲线 相比P-R曲线,ROC曲线有一个特点,当正负样本的分布发生变化时,ROC曲线的形状能够基本保持不变,而P-R曲线的形状一般会发生较剧烈的变化。 举例来说,图2.3是ROC曲线和P-R曲线的对比图,其中图2.3(a)和图2.3(c)是ROC曲线,图2.3(b)和图2.3(d)是P-R曲线,图2.3(c)和图2.3(d)则是将测试集中的负样本数量增加10倍后的曲线图。 可以看出,P-R曲线发生了明显的变化,而ROC曲线形状基本不变。这个特点让ROC曲线能够尽量降低不同测试集带来的干扰,更加客观地衡量模型本身的性能。 这有什么实际意义呢?在很多实际问题中,正负样本数量往往很不均衡。比如

机器学习算法评价指标之group auc(gauc)

时光怂恿深爱的人放手 提交于 2020-01-24 08:41:20
在机器学习算法中,很多情况我们都是把auc当成最常用的一个评价指标,而auc反映整体样本间的排序能力,但是有时候auc这个指标可能并不能完全说明问题,有可能auc并不能真正反映模型的好坏,以CTR预估算法(推荐算法一般把这个作为一个很重要的指标)为例,把用户点击的样本当作正样本,没有点击的样本当作负样本,把这个任务当成一个二分类进行处理,最后模型输出的是样本是否被点击的概率。  举个很简单的例子,假如有两个用户,分别是甲和乙,一共有5个样本,其中+表示正样本,-表示负样本,我们把5个样本按照模型A预测的score从小到大排序,得到 甲-,甲+,乙-,甲+,乙+. 那么实际的auc应该是 (1+2+2)/(32)=0.833, 那假如有另一个模型B,把这5个样本根据score从小到大排序后,得到 甲-,甲+,甲+,乙-,乙+, 那么该模型预测的auc是(1+1+2)/(32)=0.667.  那么根据auc的表现来看,模型A的表现优于模型B,但是从实际情况来看,对于用户甲,模型B把其所有的负样本的打分都比正样本低,故,对于用户甲,模型B的auc是1, 同理对于用户乙,模型B的auc也应该是1,同样,对于用户甲和乙,模型A的auc也是1,所以从实际情况来看,模型B的效果和模型A应该是一样好的,这和实际的auc的结果矛盾。  可能auc这个指标失真了,因为用户广告之间的排序是个性化的