机器学习(二十四)——单分类SVM&多分类SVM, Stacking, 花式采样, 数据清洗
source link: http://antkillerfarm.github.io/ml/2017/06/18/Machine_Learning_24.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Optimizer(续)
https://mp.weixin.qq.com/s/o10Fp2VCwoLqgzirbGL9LQ
如何估算深度神经网络的最优学习率
https://zhuanlan.zhihu.com/p/73441350
从物理角度理解加速梯度下降
https://mp.weixin.qq.com/s/n1Ks8I3Ldgb-u-kVbGBZ5Q
机器学习中的优化方法
https://mp.weixin.qq.com/s/4XOI8Dq6fqe8rhtJjeyxeA
超级收敛:使用超大学习率超快速训练残差网络
http://mp.weixin.qq.com/s/Q5kBCNZs3a6oiznC9-2bVg
Michael Jordan新研究官方解读:如何有效地避开鞍点
https://mp.weixin.qq.com/s/idmt0F49tOCh-ghWdHLdUw
吴恩达导师Michael I.Jordan学术演讲:如何有效避开鞍点。这是Jordan半年后的另一个演讲,有些新内容。
https://mp.weixin.qq.com/s/jVjemfcLzIWOdWdxMgoxsA
超越Adam,从适应性学习率家族出发解读ICLR 2018高分论文
https://mp.weixin.qq.com/s/B9nUwPtgpsLkEyCOlSAO5A
1cycle策略:实践中的学习率设定应该是先增再降
https://mp.weixin.qq.com/s/dseeCB-CRtZnzC3d4_8pYw
AMSGrad能够取代Adam吗
https://zhuanlan.zhihu.com/p/81020717
从SGD到NadaMax,十种优化算法原理及实现
https://zhuanlan.zhihu.com/p/22252270
深度学习最全优化方法总结比较(SGD,Adagrad,Adadelta,Adam,Adamax,Nadam)
https://www.zhihu.com/question/64134994
如何理解深度学习分布式训练中的large batch size与learning rate的关系?
https://mp.weixin.qq.com/s/2wolhiTrWVeaSHxOpalUZg
深度学习中的优化算法串讲
https://zhuanlan.zhihu.com/p/261134624
pytorch的余弦退火学习率
单分类SVM&多分类SVM
原始的SVM主要用于二分类,然而稍加变化,也可用于单分类和多分类。
单分类SVM
单分类任务是一类特殊的分类任务。在该任务中,大多数样本只有positive一类标签,而其他样本则笼统的划为另一类。
单分类SVM(也叫Support Vector Domain Description(SVDD))是一种单分类算法。和普通SVM相比,它不再使用maximum margin了,因为这里并没有两类的data。
单分类SVM的目标,实际上是确定positive样本的boundary。boundary之外的数据,会被分为另一类。这实际上就是一种异常检测的算法了。它主要适用于negative样本的特征不容易确定的场景。
这里可以假设最好的boundary要远离feature space中的原点。左边是在original space中的boundary,可以看到有很多的boundary都符合要求,但是比较靠谱的是找一个比较紧(closeness)的boundary(红色的)。这个目标转换到feature space就是找一个离原点比较远的boundary,同样是红色的直线。
当然这些约束条件都是人为加上去的,你可以按照你自己的需要采取相应的约束条件。比如让data的中心离原点最远。
下面我们讨论一下SVDD的算法实现。
首先定义需要最小化的目标函数:
minF(R,a,ξi)=R2+C∑i=1Nξis.t.(xi−a)T(xi−a)≤R2+ξi,ξi≥0
这里a表示形状的中心,R表示半径,C和ξ的含义与普通SVM相同。
Lagrangian算子:
L(R,a,αi,ξi)=R2+C∑i=1Nξi−∑i=1Nγiξi−∑i=1Nαi(R2+ξi−(xi−c)T(xi−c))
对偶问题:
L=∑i=1Nαi(xiT⋅xi)−∑i,j=1Nαiαj(xiT⋅xi)
使用核函数:
L=∑i=1NαiK(xi,xi)−∑i,j=1NαiαjK(xi,xj)
预测函数:
y(x)=∑i=1NαiK(x,xn)+b
根据计算结果的符号,来判定是正常样本,还是异常样本。
https://www.projectrhea.org/rhea/index.php/One_class_svm
One-Class Support Vector Machines for Anomaly Detection
https://www.zhihu.com/question/22365729
什么是一类支持向量机(one class SVM)
https://mp.weixin.qq.com/s/04rKUq2q70iyvgOEWQMs0g
20年单类别(One-Class)分类全面综述论文,从2001到2020
多分类SVM
多分类任务除了使用多分类算法之外,也可以通过对两分类算法的组合来实施多分类。常用的方法有两种:one-against-rest和DAG SVM。
one-against-rest
比如我们有5个类别,第一次就把类别1的样本定为正样本,其余2,3,4,5的样本合起来定为负样本,这样得到一个两类分类器,它能够指出一篇文章是还是不是第1类的;第二次我们把类别2的样本定为正样本,把1,3,4,5的样本合起来定为负样本,得到一个分类器,如此下去,我们可以得到5个这样的两类分类器(总是和类别的数目一致)。
但有时也会出现两种很尴尬的情况,例如拿一篇文章问了一圈,每一个分类器都说它是属于它那一类的,或者每一个分类器都说它不是它那一类的,前者叫分类重叠现象,后者叫不可分类现象。
分类重叠倒还好办,随便选一个结果都不至于太离谱,或者看看这篇文章到各个超平面的距离,哪个远就判给哪个。不可分类现象就着实难办了,只能把它分给第6个类别了……
更要命的是,本来各个类别的样本数目是差不多的,但“其余”的那一类样本数总是要数倍于正类(因为它是除正类以外其他类别的样本之和嘛),这就人为的造成了“数据集偏斜”问题。
DAG SVM
DAG SVM(也称one-against-one)的分类思路如上图所示。
粗看起来DAG SVM的分类次数远超one-against-rest,然而由于每次分类都只使用了部分数据,因此,DAG SVM的计算量反而更小。
其次,DAG SVM的误差上限有理论保障,而one-against-rest则不然(准确率可能降为0)。
显然,上面提到的两种方法,不仅可用于SVM,也适用于其他二分类算法。
http://www.blogjava.net/zhenandaci/archive/2009/03/26/262113.html
将SVM用于多类分类
Hinge Loss
在之前的SVM的推导中,我们主要是从解析几何的角度,给出了SVM的计算公式。但SVM实际上也是有loss function的:
ℓ(y)=max(0,1−t⋅y)
其中,t=±1表示分类标签,y=w⋅x+b表示分类超平面计算的score。可以看出当t和y有相同的符号时(意味着 y 预测出正确的分类),loss为0。反之,则会根据y线性增加one-sided error。
由于其函数形状像个合叶,因此又名Hinge Loss函数。
多分类SVM的Hinge Loss公式:
ℓ(y)=∑t≠ymax(0,1+wtx−wyx)
http://www.jianshu.com/p/4a40f90f0d98
Hinge loss
http://mp.weixin.qq.com/s/96_u9QM63SISwTbimmH6wA
支持向量回归机
https://mp.weixin.qq.com/s/0yvu3oG7YXUdeQz4QwEJ-A
线性分类原来是这么一回事
https://mp.weixin.qq.com/s/1ZNCbj5kMFENzP_SapQYgg
Softmax分类及与SVM比较
https://mp.weixin.qq.com/s/j_LzPcESaou0FOS2Z4f3kA
关于SVM,面试官们都怎么问
数据不平衡问题
SVM中超参数C决定了错误分类的惩罚值,为了处理不平衡类别的问题,我们可以给C按类加权重:
Ck=C∗Wk
其中,权值和类别K出现的频率成反比。
Platt scaling
https://blog.csdn.net/giskun/article/details/49329095
SVM的概率输出(Platt scaling)
Stacking
模型融合的方法除了Bagging和Boosting,还有Stacking。
https://mp.weixin.qq.com/s/lYj-GVNSDp26czRXbf0iNw
如果你会模型融合!那么,我要和你做朋友!!
https://mp.weixin.qq.com/s/-MbiSkgkF11gt5t9W0ExTw
模型融合方法最全总结
GBDT+LR
《Practical Lessons from Predicting Clicks on Ads at Facebook》
GBDT除了单独使用之外,也可以和其他模型Stack使用。
上图就是GBDT+LR的示意图。上图中,GBDT有红蓝两个子树。黑色样本经子树分类后,落在子树打勾的分支中。将分类结果进行编码,然后交给LR进行进一步的分类。
当然了,把GBDT换成其他决策树,如XGBoost,把LR换成SVM,显然也是可行的。相对于LR之类的模型,决策树在特征提取方面,还是很有优势的。
https://www.cnblogs.com/wkang/p/9657032.html
GBDT+LR算法解析及Python实现
https://blog.csdn.net/losteng/article/details/78378958
学习GBDT+LR
- 分层采样(stratified random sampling)
假设我们需要估计选举中每个候选人的平均票数。现假设该国有3个城镇:
A镇有100万工人,B镇有200万工人,以及C镇有300万退休人员。
如果我们选择从A、B和C镇分别抽取10、20和30个随机样本,那么我们可以在总样本一定的情况下,产生较小的估计误差。
- 蓄水池采样(Reservoir sampling)
采样过程:集合中总元素个数为n,随机选取k个元素。
step1:首先将前k个元素全部选取。
step2:对于第i个元素(i>k),以概率k/i来决定是否保留该元素,如果保留该元素的话,则随机丢弃掉原有的k个元素中的一个(即原来某个元素被丢掉的概率是1/k)。
结果:每个元素被最终被选取的概率都是k/n。
- 欠采样(Undersampling)和过采样(Oversampling)
- Tomek Links
在这个算法中,我们最终从Tomek Links中删除了大多数元素,这为分类器提供了一个更好的决策边界。
- SMOE(Synthetic Minority Oversampling Technique)
在现有元素附近合并少数类的元素。
https://mp.weixin.qq.com/s/d3bpfnx-JGY7whqnHwAmWw
机器学习中不得不知的5种采样方法,分层、水塘等!
https://mp.weixin.qq.com/s/OZ-HfxBgFSvqeH8AEjGluQ
采样算法哪家强?一个针对主流采样算法的比较
https://mp.weixin.qq.com/s/YrCC8CmP6UKuCmSdF2K_3g
数据挖掘中的数据清洗方法大全
https://mp.weixin.qq.com/s/FHdo2DTapoTryA-hOM-y_w
还在为数据清洗抓狂?这里有一个简单实用的清洗代码集
https://mp.weixin.qq.com/s/r7ngZOM9tO-_OSfvs2aDJw
数据清洗&预处理入门完整指南
https://mp.weixin.qq.com/s/r4ycLnjOl5hSPBMwKpnmsQ
如何打造高质量的NLP数据集
Recommend
-
47
环境变量配置文件 管道符 shell变量
-
29
经过前文讲述,我们的微服务架构日趋完善,已可使用Spring Cloud构建一个非常健壮的系统! 但假设,你的项目一旦出现问题,如何才能快速定位出来呢?一般项目上要求我们快速定位两种问题: 调用发生失败,快速定位...
-
18
状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题 模式动机 很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态。一个对象可以拥有多个状态,这些状态可以相互转...
-
15
机器之心编辑部 让机器狗走梅花桩,让小摩托自己保持平衡,这是腾讯 Robotics X 实验室的最新成果。 刚刚,腾讯 Robotic...
-
8
机器学习教程 二十四-[吐血整理]涉及面最广的机器学习资料大全 大数据...
-
3
Stacking或Stacked Generalization是一种集成的机器学习算法。它使用元学习算法来学习如何最佳地组合来自两个或多个基础机器学习算法的预...
-
6
深度目标跟踪 原图地址: https://github.com/foolwood/benchmark_results 这也是一个Visual Tracking的Paper List。 https://mp.weixin.qq.com/s/i5TyVvaRuTZ8c54Iiu4VHg 跟踪综述推荐:目标跟踪40年 htt...
-
6
Docker 与 K8S学习笔记(二十四)—— 工作负载的使用 我...
-
4
Java开发学习(二十四)----SpringMVC设置请求映射路径 ...
-
6
salesforce零基础学习(一百二十四)Postman 使用 本篇参考:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK