分类器性能评价:图形方法(2)
3.提升度和提升曲线
分类器分类为正例的比例称为深度(depth):(TP+FP)/T,T是全部待判样本数量。
提升度(lift)等于TPR/depth 以深度为横轴,以提升度为纵轴绘制曲线,得到提升曲线。 绘制提升曲线的思路和ROC类似。当阈值为0的时候,所有的样本都会判为正例,此时深度为1,提升为1;随阈值增大,深度减小,提升随之逐渐增大。一个好的模型要在大的深度下得到尽量大的提升。
lift.c <- function(p, y, n) {
y <- factor(y)
l <- length(p)
criteria <- p > matrix(rep(seq(1, 0, length = n), l), ncol = n, byrow = T)
fp <- colSums((y == levels(y)[1]) * criteria)
tp <- colSums((y == levels(y)[2]) * criteria)
fpr <- fp/sum(y == levels(y)[1])
tpr <- tp/sum(y == levels(y)[2])
depth <- (tp + fp)/length(y)
tpr <- tpr[depth != 0]
depth <- depth[depth != 0]
lift <- tpr/depth
lift.c <- data.frame(depth, lift)
}
lift.result <- lift.c(credit.p, credit.test$Class, 100)
ggplot(lift.result, aes(x = depth, y = lift)) + geom_line(color = "blue")
提升曲线常用于市场营销。一个经常在各种书籍中被举出的例子是邮寄广告促销(现在是短信?)。只有很少的人(潜在客户)会响应这种促销,因此对大量人群的进行邮寄广告促销会有较高的成本。因此通过分类器寻找可能会积极响应的客户,其中的潜在客户的比例提升了。
其他图形化方法还有 precision/recall曲线,洛伦兹曲线等。
4.ROCR包
图形方法(特别是ROC)是在机器学习/数据挖掘中用来评价模型的重要方法。在R当中,有多个package可用来绘制相应的图形。其中最常用的一个当属ROCR包,可用于绘制ROC曲线和提升曲线。
使用ROCR包来绘制上面的ROC曲线,并计算AUC值
library(ROCR)
pre <- prediction(credit.p, credit.test$Class)
plot(performance(pre, "tpr", "fpr"), main = "ROC CURVE", colorize = T)
performance(pre, measure = "auc")@y.values
## [1]
## [1] 0.7902
其中prediction函数产生预测对象,performance函数可以计算对预测对象的各种评价方法(结果是个S4类)。使用plot函数可以绘制ROC曲线,colorize=T表示可以按颜色在图形上表示出阈值的分布。
绘制提升曲线
plot(performance(pre, "lift", "rpp"), main = "LIFT CURVE", colorize = T)
R的Daim包和pROC包也可以绘制ROC曲线
分类器分类为正例的比例称为深度(depth):(TP+FP)/T,T是全部待判样本数量。
提升度(lift)等于TPR/depth 以深度为横轴,以提升度为纵轴绘制曲线,得到提升曲线。 绘制提升曲线的思路和ROC类似。当阈值为0的时候,所有的样本都会判为正例,此时深度为1,提升为1;随阈值增大,深度减小,提升随之逐渐增大。一个好的模型要在大的深度下得到尽量大的提升。
lift.c <- function(p, y, n) {
y <- factor(y)
l <- length(p)
criteria <- p > matrix(rep(seq(1, 0, length = n), l), ncol = n, byrow = T)
fp <- colSums((y == levels(y)[1]) * criteria)
tp <- colSums((y == levels(y)[2]) * criteria)
fpr <- fp/sum(y == levels(y)[1])
tpr <- tp/sum(y == levels(y)[2])
depth <- (tp + fp)/length(y)
tpr <- tpr[depth != 0]
depth <- depth[depth != 0]
lift <- tpr/depth
lift.c <- data.frame(depth, lift)
}
lift.result <- lift.c(credit.p, credit.test$Class, 100)
ggplot(lift.result, aes(x = depth, y = lift)) + geom_line(color = "blue")
![]() |
提升曲线常用于市场营销。一个经常在各种书籍中被举出的例子是邮寄广告促销(现在是短信?)。只有很少的人(潜在客户)会响应这种促销,因此对大量人群的进行邮寄广告促销会有较高的成本。因此通过分类器寻找可能会积极响应的客户,其中的潜在客户的比例提升了。
其他图形化方法还有 precision/recall曲线,洛伦兹曲线等。
4.ROCR包
图形方法(特别是ROC)是在机器学习/数据挖掘中用来评价模型的重要方法。在R当中,有多个package可用来绘制相应的图形。其中最常用的一个当属ROCR包,可用于绘制ROC曲线和提升曲线。
使用ROCR包来绘制上面的ROC曲线,并计算AUC值
library(ROCR)
pre <- prediction(credit.p, credit.test$Class)
plot(performance(pre, "tpr", "fpr"), main = "ROC CURVE", colorize = T)
performance(pre, measure = "auc")@y.values
## [1]
## [1] 0.7902
![]() |
其中prediction函数产生预测对象,performance函数可以计算对预测对象的各种评价方法(结果是个S4类)。使用plot函数可以绘制ROC曲线,colorize=T表示可以按颜色在图形上表示出阈值的分布。
绘制提升曲线
plot(performance(pre, "lift", "rpp"), main = "LIFT CURVE", colorize = T)
![]() |
R的Daim包和pROC包也可以绘制ROC曲线
> 我来回应