CS231n A Few Useful Things to Know about Machine Learning
来源:互联网 发布:易语言在线更新源码 编辑:程序博客网 时间:2024/06/05 14:17
CS231n的第一个module的第一个further reading是这篇文章,这篇文章写了一些机器学习中容易被忽视的点或者说是“妖术“(black art)。
1.LEARNING = REPRESENTATION + EVALUATION + OPTIMIZATION
要明白如何去表示,如何去评价,如何去优化。
作者列举了一些不同的Representation Evaluation Optimization的方法,有一些还不特别了解,现在来梳理一下。
Representation
对于图模型还没什么了解,感觉日后得了解了解。
Evaluation
首先先来一个链接:http://pages.cs.wisc.edu/~dpage/cs760/evaluating.pdf
然后再来聊聊不同的评价方式。
cross validation
不用多说
confusion matrices
可以看出来不同的真实类别预测成了什么类别。
ROC曲线
我觉得这个评价标准很有意思,其实说白了就是这么个东西,首先每个instance都有一个confidence,按照confidence拍一个序。我们都听过一句话“宁可错杀一千,也不放过一个“,这个其实就是一个threshold的体现。ROC曲线其实就是想说,在坏人被误认为是好人的情况下,好人能够有多少被认为是好人,这句话说的有点绕口。
举个例子,好人坏人都在大街上走,警察根据一些特征比如说是“眼镜“,眼镜形状来决定是好人还是坏人,然后形状越奇怪,越是坏人。按照这个特征对于街上的所有行人进行排序。警察可以什么都不管,认为打架都是好人,这种情况下,thershold非常低,坏人也被认为是好人。但是标准逐渐提高的时候,警察开始盘查了,盘查的人被认为是坏人,但是被盘查的人中,可能有好人,也可能有坏人,而ROC曲线所关注的就是没有被盘查的人中的好人和坏人的数量。
也就是放走多少坏人对应着多少好人能够免遭冤枉。。。说到这儿我都觉得有点绕了。
如果提高threshold,能够使得tpr降低比较缓慢,但是fpr降低比较迅速,那么就说明当前的计算confidence的方式比较有助于区分positive和negative。
一个比较区分性明显的算法,应该是在保证好人不被冤枉的情况下,同时也保证坏人绳之以法。也就是意味着在roc曲线中,曲线最好纵轴变化不大,但是横轴变化很大。换句话说,斜率比较低。
一个fpr比较低的算法中,是否意味着算法所认为正确的样本中,分类正确的就比较多呢?实则不然,其实这个问题和数据分布有很大关系。
Precision/Recall rate
准确率和召回率曲线,首先,曲线的方向其实是不一定的,有可能斜率大于0,也有可能斜率小于0,从上一个roc曲线引申到precision/recall这一概念,会发现其实有这么几点的不一样。对于threshold来说,如果看tp、tn,fp、tn矩阵的话,其实可以看出,如果threshold放宽,那么其实tpr和fpr都会增大,只不过增大的比例是不一样的,所以roc曲线肯定是向右上方倾斜,但是斜率是不一样的。
与此不同的是presicion/recall curve。在threshold增大的过程中。其实recall肯定是降低的,但是precision的变化其实不一定会是怎么样,因为这其实和tp、fp的减少速率有关系。如果threshold增大,那么tp、fp减少,随之而来的是fn、tn增加,但是减少的比例不同其实会导致precision的不确定的增加或者降低。所以其实随着threshold的调整,如果能够刚好使得tp和fp能够正确的分配,其实有赖于特征的正确选择,或者说最后的confidence能够具有很强的区分性。
posterior probability
Ref:http://blog.csdn.net/u011467621/article/details/50040427
其实采样的x都是根据
information gain信息增益
可以看作是由于使用了某个特征导致的熵的降低,比如说在决策树中的应用。
K-L divergence
k-l散度,或者说是相对熵,在sparseAutoencoder中涉及。
Cost/Utility
比如说神经网络中的损失
margin
svm的度量标准
Optimization
Combinatorial optimization - Greedy search
Combinatorial optimization - Beam search
Ref:http://www.cnblogs.com/xxey/archive/2015/02/06/4277181.html
Beam search简而言之,就是受约束的宽搜,在宽搜的每一层扩展的时候,根据某种规则rule选择一定数量的点集加入度列中,这样保证一些可能性较低的点就不进行考虑了。
Combinatorial optimization - Branch-and-bound
Ref:http://blog.csdn.net/yinlili2010/article/details/39313035
分支限界
Continuous optimization - Unconstrained
Gradient descent
Conjugate gradient
Quasi-Newton methods
梯度下降法、共轭梯度下降、拟牛顿法
Continuous optimization - Constrained
Linear programming
Quadratic programing
线性规划、二次规划
11.简单和准确
另一个稍微有意思的是奥卡姆剃刀。
根据奥卡姆剃刀原理,无需必要,勿增实体。但是这其实不一定正确的。注意原来说的是无需必要,但是在很多实际情况中,我们是需要更多的或者说更复杂的假设和参数的,为了泛化能力或者扩展性等等,所以并不是无需必要。增加一下杂七杂八的东西确实没必要,简洁是人类的天性。
Reference:
[1]http://www.leexiang.com/a-few-useful-things-to-know-about-machine-learning
- CS231n A Few Useful Things to Know about Machine Learning
- a few useful things to know about machine learning
- A Few Useful Things to Know about Machine Learning
- 《A Few useful things to Know About machine Learning》读后感
- A Few Useful Things to Know About Machine Learning
- A Few Useful Things to Know about Machine Learning
- A Few Useful Things to Know about Machine Learning
- MACHINE LEARNING - 《A FEW USEFUL THINGS TO KNOW ABOUT MACHINE LEARNING》读后总结
- 【Paper Reading】A Few Useful Things to Know about Machine Learning【机器学习那些事】
- 机器学习_论文笔记_1: A few useful things to know about machine learning
- 关于机器学习必须要了解的几个要点(A Few Useful Things to Know about Machine Learning)
- 【每周一文】A Few Usefull Things to know about Machine Learning
- A few useful things to learn about ML
- A few things iOS developers ought to know about the ARM architecture
- A few things iOS developers ought to know about the ARM architecture
- A few things iOS developers ought to know about the ARM architecture
- A few things iOS developers ought to know about the ARM architecture
- A few things iOS developers ought to know about the ARM architecture
- Ubuntu下如何安装VMWave虚拟机?
- hdu5831(2016多校第8场,简单模拟)
- 2099 整除的尾数
- ACM模板——KMP算法
- range check instead of index usage mysql索引使用注意
- CS231n A Few Useful Things to Know about Machine Learning
- Postgresql 2
- Android:onNewIntent()触发机制及注意事项
- 黑客的狂欢:他们如何在里约奥运会掘金
- 位运算及其应用实例
- ==与===之间的区别
- find_shape_mode参数详解及时长优化
- ubuntu live cd制作
- AD10 对某个原件单独设置线距规则