算法衡量auc_优化AUC两遍学习算法
曲线ROC下的面积(简称AUC)是机器学习中一种重要的性能评价准则[,广泛应用于类别不平衡学习、代价敏感学习、信息检索等诸多学习任务。例如,在邮件协调过滤或人脸识别中,某些类别的数据显著多于其他类别,而类别不平衡性比例[可能为106之多。对AUC的研究可以追溯至20世纪70年代的雷达信号探测分析,之后AUC被用于心理学、医学检测以及机器学习。直观而言,AUC用于衡量一种学习算法将训练数据中正类数据排在负类数据之前的概率。
由于AUC的广泛实际应用,出现了很多优化AUC学习方法,如支持向量机方法[、集成学习boosting算法[,以及梯度下降算法[。这些方法需要存储整个训练数据集,算法在运行时需要扫描数据多遍,因此难以解决大规模学习任务。在理论方面,AGARWAL和ROTH[给出了优化AUC可学习性的充分条件和必要条件,而GAO和ZHOU[则根据稳定性给出了可学习性的充要条件。
针对大规模AUC优化学习,ZHAO等[于2011年提出优化AUC的在线学习算法,该方法借助于辅助存储器,随机采取正样本与负样本。而辅助存储器的大小与数据规模密切相关,因此很难应用于大规模数据或不断增加的数据。为此,GAO等[于2013年提出优化AUC的单遍学习方法,该算法仅需遍历数据一次,通过存储一阶与二阶统计量优化AUC学习。
在实际应用中,存储与计算二阶统计量依旧需要较高的存储与计算开销。因此,本文提出了一种新的优化AUC两遍学习算法TPAUC (two-pass AUC optimization)。该算法遍历数据两遍:第一遍统计正负样本均值,第二遍通过随机梯度方法进行优化AUC学习。新算法只需计算与存储一阶统计量,而不需要存储二阶统计量,从而有效地提高效率,最后本文通过实验验证了该算法的有效性。
1 TPAUC学习方法
设示例空间
$X \subset {R^d}$和
$Y$分别表示样本的输入空间和输出空间,本文关注二分类问题, 于是有
$Y = \{ + 1, - 1\} $。假设D表示空间
$X \times Y$上潜在的联合分布。假设训练数据集为
${{S}} = \{ ({x_1},{y_1}),({x_2},{y_2}), \cdots ,({x_n},{y_n})\} $
其中每个训练样本是根据分布
$D$独立同分布采样所得。进一步假设分类器
$f:X \to R$为一个实值函数。给定样本S和函数
$f$,${\rm{AUC}}(f,{{S}})$定义为
$\sum\limits_{i \ne j} {\frac{{I[f({x_i}) > f({x_j})] + \displaystyle\frac{1}{2}I[f({x_i}) = f({x_j})]}}{{{T_{{{{S}}^ + }}}{T_{{{{S}}^ - }}}}}} $
(1)
式中:$I[ \cdot ]$为指示函数,如果判定为真,其返回值为1,否则为0;${T_{{{{S}}^ + }}}$和
${T_{{{{S}}^ + }}}$分别表示训练集中正、负类样本的样本数。
直接优化AUC往往等价于NP难问题,从而导致计算不可行。在实际应用中,一种可行的方法是对优化表达式(1)进行一种替代损失函数:
$L(f,S) = \sum\limits_{i \ne j} {\frac{{l(f({x_i}) - f({x_j}))I[{y_i} > {y_j}]}}{{{T_{{{{S}}^ + }}}{T_{{{{S}}^ - }}}}}} $
(2)
式中
$l:R \to {R^ + }$是一个连续的凸函数,常用的函数包括指数损失函数、Hinge损失函数、Logistic损失函数等。由于损失函数定义于一对正样本和负样本之间,该替代函数又被称为“成对替代损失函数(pairwise surrogate loss)”。
借鉴于优化AUC单遍学习算法[,本文采用最小二乘损失函数,即在式(2)中有
$l(f({x_i}) - f({x_j})) = {(1 - f({x_i}) + f({x_j}))^2}$
为简洁起见,不妨假设样本总数为
$T$,其中正样本数为
${T_ + }$,负样本数为
${T_ - }$,以及设优化函数为
$L({{w}}) = \sum\limits_{i \ne j} {\frac{{l({{w}})I[{y_i} > {y_j}]}}{{{T_{{{{S}}^ + }}}{T_{{{{S}}^ - }}}}}} $
式中
$l({{w}}) = {\left( {1 - \left\langle {{{w}},{{{x}}_i}} \right\rangle + \left\langle {{{w}},{{{x}}_j}} \right\rangle } \right)^2}$,经过计算整理可得
$\begin{array}{c}L({{w}}) = {\rm{1 + }}\displaystyle\frac{{\rm{1}}}{{{T_ + }}}{\sum\limits_{i:{y_i} = 1} {\left\langle {{{w}},{{{x}}_i}} \right\rangle } ^2}{\rm{ + }}\frac{{\rm{1}}}{{{T_ - }}}{\sum\limits_{i:{y_i} = {\rm{ - }}1} {\left\langle {{{w}},{{{x}}_i}} \right\rangle } ^2} - \\[8pt]\displaystyle\frac{{\rm{1}}}{{{T_ + }{T_ - }}}\sum\limits_{i:{y_i} = 1} {\left\langle {{{w}},{{{x}}_i}} \right\rangle } \sum\limits_{i:{y_i} = {\rm{ - }}1} {\left\langle {{{w}},{{{x}}_i}} \right\rangle } - \\[8pt]\displaystyle\frac{{\rm{2}}}{{{T_ + }}}\sum\limits_{i:{y_i} = 1} {\left\langle {{{w}},{{{x}}_i}} \right\rangle } {\rm{ + }}\frac{{\rm{2}}}{{{T_ - }}}\sum\limits_{i:{y_i} = {\rm{ - }}1} {\left\langle {{{w}},{{{x}}_i}} \right\rangle } \end{array}$
设正、负样例的协方差矩阵分别为
${{S}}_T^ + = \frac{{\rm{1}}}{{{T_ + }}}\sum\limits_{i:{y_i} = 1} {{{{x}}_i}{{x}}_i^{\rm T}}, \; {{S}}_T^ - = \frac{{\rm{1}}}{{{T_ - }}}\sum\limits_{i:{y_i} = - 1} {{{{x}}_i}{{x}}_i^{\rm T}} $
以及设正样例与负样例的均值分别为
${{c}}_T^ + = \frac{{\rm{1}}}{{{T_ + }}}\sum\limits_{i:{y_i} = 1} {{{{x}}_i}}, \; {{c}}_T^ - = \frac{{\rm{1}}}{{{T_ - }}}\sum\limits_{i:{y_i} = - 1} {{{{x}}_i}} $
因此表达式
$L({{w}})$可以进一步化简、分解为
$L({{w}}) = \sum\limits_t {{{{L_t}({{w}})} / T}} $
(3)
当
${y_t} = 1$时,有
${L_t}({{w}}) = 1 + {{{{\langle {{w}},{{{x}}_t} - {{c}}_T^ + \rangle }^2}} / {{T_ + }}} + {\langle {{w}},{{c}}_T^ + - {{c}}_T^ - \rangle ^2} - 2\langle {{w}},{{c}}_T^ + - {{c}}_T^ - \rangle $
当
${y_t} = - 1$时,有
${L_t}({{w}}) = 1 + {{{{\langle {{w}},{{{x}}_t} - {{c}}_T^ - \rangle }^2}} / {{T_ - }}} + {\langle {{w}},{{c}}_T^ - - {{c}}_T^ + \rangle ^2} - 2\langle {{w}},{{c}}_T^ - - {{c}}_T^ + \rangle $
考虑在损失函数中加入正则项,以防止模型过拟合。本文采用随机梯度下降方法
${{{w}}_t} = {{{w}}_t} - \eta \nabla {L_t}({{{w}}_{t - 1}})$
只需得到关于
${{{w}}_{t - 1}}$的梯度表达式,而梯度只需对式(3)中
${L_t}({{w}})$表达式直接求导可得。
因此,本文的思想是不需存储协方差矩阵
${{S}}_T^ + $和
${{S}}_T^ - $,需利用均值
${{c}}_T^{\rm{ + }}$和
${{c}}_T^ - $,从而即可进行优化AUC学习。本方法的核心只需要数据的一阶统计量,而不需要二阶统计量,从而将算法空间复杂度降至
$O(d)$。同时,该公式中
${{c}}_T^{\rm{ + }}$和
${{c}}_{{T}}^ - $是整个样本空间中正例和负例的均值,在第1次遍历数据时不可知,因此需要遍历数据两遍。
本文方法的基本流程可以分为两步:第1步遍历数据,统计正样本和负样本均值
${{c}}_T^{\rm{ + }}$和
${{c}}_T^ - $;第2步遍历将利用数据的均值计算得到梯度, 然后利用随机梯度下降法更新
${{w}}$而完成优化AUC的学习,并在实验中取得很好的效果。
2 实验验证
本文将在标准真实数据集和高维数据集实验验证所提方法的有效性,其中8个标准数据集分别为diabetes、fourclass、german、splice、usps、letter、magic04、a9a。数据集中样本数量从768~32 561不等,样本维度的范围从8~256。所有数据集的特征都被规范到[-1, 1],多分类问题被转变为两分类问题,随机将类别划分成两类。
TPAUC算法的学习率参数
$\eta $和正则化参数
$\lambda $范围都为
${\rm{\{ }}{{\rm{2}}^{ - 10}},{{\rm{2}}^{ - 9}},{{\rm{2}}^{ - 8}}, \cdots ,2,4\} $。首先将数据集划分为训练集和测试集,参数的选择通过在训练集上进行五折交叉验证来确定。选定参数后,再在测试集上进行5遍五折交叉验证,将这25次的结果取平均值作为最终的测试结果。
本文比较了如下5种算法:
1) OPAUC:优化AUC单遍学习算法[。
2) OAMseq:优化AUC的在线学习算法[。
3) OAMgra:优化AUC的在线学习算法[。
4) Online Uni-Exp:优化加权单变量指数损失函数[。
5) Online Uni-Squ:优化加权单变量平方损失函数[。
实验结果如
表 1(Tab. 1
表 1 TPAUC在低维数据集上性能比较
Tab. 1 Comparisons of TPAUC on low-dim. datasets
数据集
diabetes
fourlcass
german
splice
usps
letter
magic04
a9a
TPAUC
0.841 1
0.830 9
0.798 1
0.915 1
0.971 3
0.811 5
0.831 9
0.900 5
OPAUC
0.830 9
0.831 0
0.797 8
0.923 1
0.962 0
0.811 4
0.838 3
0.900 2
OAMseq
0.825 4
0.830 6
0.774 7
0.859 4
0.931 0
0.754 9
0.823 8
0.842 0
OAMgra
0.829 5
0.829 5
0.772 3
0.886 4
0.934 8
0.760 3
0.825 9
0.857 1
Online Uni-Exp
0.821 5
0.828 1
0.790 8
0.893 1
0.953 8
0.811 3
0.835 3
0.900 5
Online Uni-Squ
0.825 8
0.829 2
0.789 9
0.915 3
0.956 3
0.805 3
0.834 4
0.894 9
表 1 TPAUC在低维数据集上性能比较
Tab.1 Comparisons of TPAUC on low-dim. datasets
表 2(Tab. 2
表 2 TPAUC在高维数据集上性能比较
Tab. 2 Comparisons of TPAUC on high-dim. datasets
数据集
real-sim
rcv
rcv1v2
sector.lvr
sector
news20
ecml2012
news20.b
TPAUC
0.975 3
0.990 3
0.976 5
0.996 6
0.923 7
0.891 0
0.962 0
0.640 1
OPAUC
0.974 5
0.980 2
0.963 3
0.996 5
0.929 6
0.884 0
0.963 0
0.640 6
OAMseq
0.984 0
0.988 5
0.968 6
0.996 5
0.916 3
0.854 3
0.920 0
0.631 4
OAMgra
0.976 2
0.985 2
0.960 4
0.995 5
0.904 3
0.834 6
0.965 7
0.635 1
Online Uni-Exp
0.991 4
0.990 7
0.982 2
0.996 9
0.921 5
0.888 0
0.982 0
0.634 7
Online Uni-Squ
0.992 0
0.991 8
0.981 8
0.966 9
0.920 3
0.887 8
0.953 0
0.623 7
表 2 TPAUC在高维数据集上性能比较
Tab.2 Comparisons of TPAUC on high-dim. datasets
本文选用8个高维稀疏数据集,分别为real-sim、rcv、rcv1v2、sector、sector.lvr、news20、ecml2012、news20.b。数据集中样本数量从9 619~456 886不等。特征维度的范围为20 985~1 355 191。实验设置与标准数据集相似,实验结果如
3 结束语
ROC曲线下的面积(简称AUC)是机器学习中一种重要的性能评价准则,由于AUC定义于正负样本之间,传统方法需存储整个数据而不能适用于大数据。为此Gao等提出优化AUC的单遍学习算法,该算法仅需遍历数据一次,通过存储一阶与二阶统计量来进行优化AUC学习。本文致力于减少二阶统计量的计算与存储开销,提出一种新的优化AUC两遍学习算法TPAUC。新提出的算法只需计算与存储一阶统计量,而不需要存储二阶统计量,从而有效地提高效率,最后本文通过实验验证了该算法的有效性。
算法衡量auc_优化AUC两遍学习算法相关推荐
- 机器学习算法系列(一)- 感知器学习算法(PLA)
阅读本文需要的背景知识点:数学基础知识.一丢丢编程知识 一.引言 前面一节我们了解了机器学习算法系列(〇)- 基础知识,接下来正式开始机器学习算法的学习,首先我们从最简单的一个算法--感知器学习算 ...
- labuladong的算法小抄pdf_推荐两个学算法的 GitHub 项目
我发现有两个算法学习项目登上了今日热榜,都是学习算法非常棒的项目,分享给大家,单日分别获得了 364 star 和 877 star.它们是: Hello Algorithm Fucking Algo ...
- em算法 实例 正态分布_Petuum提出序列生成学习算法通用框架
近日,来自人工智能创业公司 Petuum 的研究人员发表论文,提出序列生成学习算法的通用框架--广义的熵正则化策略优化框架(Generalized Entropy-Regularized Policy ...
- matlab 植物生长算法,基于模拟植物生长的BP神经网络学习算法研究
第29卷第3期 2 8年6月 JOURNAL OF DALIAN UNIVERSITY VOL29 N住3 Jun. 2 8 基于模拟植物生长的BP神经网络学习算法研究李彤*,于江波,温钰 (大连大学 ...
- 基于双层蚂蚁算法和区域优化的机器人导航新算法 翻译+总结
改进的蚁群算法 1.初始路径的确定 2.光滑路径的优化 摘要 摘要提出了一种用于机器人自主导航的双层蚁群优化算法DL-ACO.该DL-ACO由两个独立和连续运行的蚁群算法组成.首先,我们提出了一 ...
- 算法思想为什么重要,通过IMDB学习算法的设计思路
阅读本文大约需要2分钟 截至2018年,IMDB(互联网电影数据库)已收录电影470+万,该平台有一个特色的top250电影排名.为了保证排名的权威性,确保用户对平台的信任度,IMDB在推荐机制上花了 ...
- python 两阶段聚类_挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法...
转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...
- 推荐常用的排序学习算法——BPR(贝叶斯个性化排序)
文章目录 1. 排序学习 1.1 优势 1.2 排序学习在推荐领域的作用 1.3 排序学习设计思路 1.3.1 单点法(Pointwise) 1.3.2 配对法(Pairwise) 1.3.3 列表法 ...
- AlphaZero炼成最强通用棋类AI,DeepMind强化学习算法8小时完爆人类棋类游戏
[新智元导读]或许"智能爆炸"不会发生,但永远不要低估人工智能的发展.推出最强围棋AI AlphaGo Zero不到50天,DeepMind又一次超越了他们自己,也刷新了世人对人工 ...
最新文章
- 当pip安装因为网络超时而无法安装的时候慢
- laravel5.0升级到5.1
- 【控制】《多无人机协同控制技术》周伟老师-第4章-基于 PID 的无人机编队运动控制策略
- clover 主题_Clover主题更换
- 用c语言编程参赛信息查询,确定参赛者名单(C语言实现)
- go 中recover捕获异常
- 上帝视角-我是一个线程『转』
- Tic tac toe井字棋游戏python实现
- 微秒, 纳秒,毫秒, 时间单位换算[转]
- 神经网络在控制中的作用,神经网络控制基本原理
- 器件选型-温度传感器
- ctfshow--ssrf
- 不使用前端的pdf.js,通过pdfbox转换pdf为图片,拼接成html实现pdf前端预览
- 当我精通vue2的源码dep和watcher的关系时
- 数据结构与算法——深入理解哈希表
- 三阶行列式的题目_考研数学 | 线性代数中的行列式重难点分析
- php tp5上传图片到阿里云OSS
- java基础数据类型和运算符
- 沸点压力计算java_依据相律,恒沸混合物的沸点不随外压的改变而改变。
- 百度排名批量查询_一篇讲透百度霸屏引流细节思路与操作玩法
热门文章
- 作家的灵感宝库 电子版_读者-作家问题(快速版)
- 尚学堂Oracle学习笔记
- ECMA 2019(ES10) 特性
- Python(五) 包、模块、函数与变量作用域
- element.style样式错误问题
- 解决VS2008报错:unexpected precompiled head error, simply rerunning the compiler might fix this problem
- BUUCTF 隐藏的钥匙
- 汽车开源软件的“排头兵”——丰田首次搭载AGL
- Android图形系统之SurfaceFlinger/OpenGL/HWC/Gralloc/FrameBufer/ION/GPU等关系(十三)
- Python字符串替换replace、截取[]、查找find、计数count、分割split