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

Representation method main idea Instances K-nearest neighbor k近邻算法 Support vector machines 支持向量机 ,svm和knn都是对于样本的分类 Hyperplanes Naive Bayes 朴素贝叶斯。和上面Instance的区别就是,上面的Instance是对于样本有一个最终明确的分类,但是NB则是有一个概率模型,可能说的超平面就是对于空间的每个点的分布有一个判断吧。或者说空间的概率分布根据已有的数据进行超平面的划分 Logistic regression 逻辑斯蒂回归也和朴素贝叶斯有相似的地方就是对于样本进行概率分布的求解 Decision trees 决策树是通过最开始根据样本的特征来构建规则,每一个叶子节点就是一个类别了 Sets of rules Propositional rules Logic programs 逻辑编程?和上面的Propositional一样都完全不知道是啥,http://www1.se.cuhk.edu.hk/~seem5750//Lecture_6.pdf有一种回到了离散数学课上的感觉| Neural networks 神经网络,啥都能干 Graphical models Bayesian networks 图模型的贝叶斯网络 Conditional random fields 条件随机场

对于图模型还没什么了解,感觉日后得了解了解。

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都是根据θ来生成出来的,但是我们要通过x来估计出θ,因此,通过这样的方式,我们就能够尽可能的推断出来可能的生成的参数们,但是有一个问题就比如说,我们知道参数可能是怎么样的分布,比如说这个参数θ可能就是在某些取值附近可能性更高一些,但是其他的更低一些,那么我们就可以有一个概率来估计可能性的大小,这个可能性是根据事实+先验来进行计算的。

information gain信息增益

可以看作是由于使用了某个特征导致的熵的降低,比如说在决策树中的应用。

K-L divergence

k-l散度,或者说是相对熵,在sparseAutoencoder中涉及。

Cost/Utility

比如说神经网络中的损失

margin

svm的度量标准

Optimization

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

0 0
原创粉丝点击