http://blog.csdn.net/passball/article/details/5204132 特征提取简介
http://blog.csdn.net/abcjennifer/article/details/7639681 sift原理
http://www.cnblogs.com/cfantaisie/archive/2011/06/14/2080917.html sift原理
http://blog.csdn.net/michellehsiao/article/details/9452455 sift原理
本文主要是用来记录我在看李航的《统计学习方法》和《机器学习实战》这两本书的网络参考文献以及我的一些见解。
1.k近邻法,简单来说就是哪个点离得近就把实例点归到哪一类中。特殊情况是最近邻算法-----1近邻算法。算法主要包括算法的模型,距离度量、k值的选择和算法的具体实现。
其中算法的实现主要有两种形式:线性扫描法和构建数据索引。改善算法最好的当属kd树。我认为当特征数目很小的时候没有必要用kd树,(嘿嘿,主要是kd树太难理解。)
等以后遇到大的特征集的时候再来研究kd树。
http://blog.csdn.net/v_july_v/article/details/8203674
http://blog.sina.com.cn/s/blog_72e1c7550101dsc3.html
2.决策树算法。简单的形式化的例子可以见:http://blog.csdn.net/v_july_v/article/details/7577684中的母亲给女儿推荐男友的例子。决策树的主要算法有ID3,C4.5,CART。cart算法在opencv库中已经有实现。决策树中主要包括:特征选择、决策树生成、决策树剪枝组成。其中决策树的剪枝主要是为了解决决策树在生成过渡拟合的曲线的一种应对策略。
3.朴素贝叶斯
http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/
http://www.cnblogs.com/leoo2sk/archive/2010/09/17/naive-bayesian-classifier.html 算法的较通俗的解释,但有一定的公式推导。
朴素贝叶斯是根据好算的概率来倒推希望得到的难以得到的概率,感觉算得的概率的最大值来确定y的分类。
我理解的算法描述如下(下面的符号的意义可以见:《统计学习方法》p49):
(1)首先根据极大似然估计法估计出P(Y=Ck),最大似然就是根据已有的经验来推出来的。例如1出现了20次,0出现了28次那么P(Y=1) = 20/(20+28)......P(Y=0)= 28/(28+20);
(2)根据贝叶斯公式计算出当y= ck发生的情况下xj = ajl的概率。
(3)感觉公式4.4算出各个式子的概率
(4)找出最大值。y= 最大值。
贝叶斯算法 改进:由于可能出现分母为0的情况,所以要去掉这种情况,可以依据4.10式进行laplace 平滑。从而去掉分母等于0的情况。通常平滑系数取1
下面摘抄了参考网址(2)的一副算法流程图:
4支持向量机
http://blog.csdn.net/passball/article/details/7661887 介绍了一些SVM需要的一些基础概念。
http://www.cnblogs.com/LeftNotEasy/archive/2011/05/02/basic-of-svm.html svm入门理论知识。
http://www.ilovematlab.cn/thread-62252-1-1.html SVM的入门视频地址。
http://pan.baidu.com/share/link?shareid=3773566526&uk=2652154893&fid=4039787328 libsvm的安装的视频。
http://pan.baidu.com/share/link?shareid=3773566526&uk=2652154893&fid=870528073 svm理论讲解视频。
http://www.support-vector.net/software.html svm相当于官网吧。
支持向量机和神经网络的理论基础均是“感知机”,感知机的函数模型:f(x) = sign(w*x+b), 其中sign(x)的取值可以取-1,+1,并不是0,1;w是超平面w*x+b = 0的法向量。感知机的数据集的必须是线性可分的,只有这样的数据集才能使损失函数L(W,B)可以为0。感知机学习算法有两种形式:1原始形式,2对偶形式。(详见p32-p35)
支持向量机有很多种算法。
(1)最简单的算法:最大间隔法。算法过程参看p100算法7.1.
训练集中的样本点中与分离平面距离最近的点的实例成为支持向量。yi*(w*xi+b)+1=0为正实例点。yi*(w*xi+b)-1=0为fu实例点。由于确定分离平面进决定与支持向量,所以支持向量机只有很少的点来决定。
这种算法要求训练集T是线性可分的,但可以证明最大间隔法所找出的超平面是存在的唯一的(定理7.1)。但在实际中基本上不存在线性可分的训练集,因此这种算法只有理论价值。
(2)最大间隔法的对偶算法。算法过程见:p106算法7.2.
根据定理7.2和拉格朗日函数推导出来的,这个算法引进了一个Alpha*这个参数。只要求出Alpha*依据定理7.2就可以推导出w和b。但是跟上个算法一样没有给出具体的求解方法,只能依靠自己的数学经验来算出Alpha*。
(3)线性支持向量机算法,算法过程见p112 算法7.3;
上面的两种算法要求训练样本线性可分,这样的条件过强,一般的样本由于有噪声的存在,样本一般为线性不可分的,所以上面两种算法不具有实用价值。
这种算法引入了一个惩罚参数C>0,惩罚参数越大对误分类的惩罚越大,容易产生过拟合,C越小对误分类的惩罚越小,容易产生欠拟合,一般惩罚参数通过实验来获得。另外这种算法产生的超平面并不是一个,w*是唯一的,但是B*不是唯一的。
(4)非线性支持向量机学习算法。
尚未看懂。