Feature Exploitation Techniques
这几篇博客介绍的第一个feature transform方法就是kernel。kernel先出现是在SVM里面,原因就是为了减少 內积计算的复杂度,把特征转换和內积计算结合到一起。特征转换其实也是一种特征的提取。介绍过的kernel:polynomial kernel,Gaussion kernel,stump kernel。另外,不同的kernel相加或者是相乘做uniform或者是combination可以提取更加复杂的特征,比如Network。但是使用kernel是需要满足Mercer条件的,对称半正定。不同的kernel可以搭配不同的模型,SVM,SVR,probability SVM,或者是kernel ridge regression等等。之前学过的PCA,kmean这些算法都包括了內积的计算,所以它们各自也有对应的kernel函数,比如之前使用的Kmean是用的高斯距离,那么kernel就是Gaussion kernel了。
kernel是使用的第一种特征转换的方法,第二种方法就是aggregation了,之前介绍的所有的hypothesis都可以看做是一种特征转换,比如之前学过的decision tree,RBF Network。如果g是已知的,那我们可以把它们进行uniform的组合,non-uniform和conditional组合。如果g是未知的,那么我们就可以使用bagging或者Adaboost来建立模型。
其实就是总结了一下aggregation model。特征转换是一种寻找特征的方法,特征提取是另外学习到的,提取出隐藏的特征,hidden feature。一般通过unsupervised learning,从原始数据中提取特征,有点像生成模型,先摸清楚数据的情况分布特点,再进行模型的建立。比如:聚类算法,kmeans,mean shfit等等,PCA都是。
另外还有一种就是维度的压缩了,其实有点像特征提取,因为维度压缩其实就是先看看哪一个特征重要,然后把重要的特征留下了,不重要的去掉,比较有代表性的就是PCA,autoencode,matrix factorization,这种方法可以把数据从高纬度降到低纬度是很有用的。
顺带提一下,decision stump是遍历所有的维度看看哪一个维度分开的purity是最小的,random forest可以进行特征的重要性选择,通常也是随机选择一两个或者是做OOB特征重要性选择得到重要的特征。
总结一下特征处理的方法:
特征转换:可以使用kernel,aggregation
特征提取:matrix factorization,autoencode
降维:PCA,autoencode
Error Optimization Techniques
对于Ein的优化,首先第一个就是梯度下降或者是梯度上升,这两个方法都是比较常用的一次逼近方法,SGD、Steepest Descent和Functional GD都是利用了梯度下降的技巧。
除了梯度下降,还有一些是做不了的,比如SVM的dual problem和α的求解,都是需要数学上的一些推导和技巧来转换成其他形式之后再处理。
如果原始问题比较复杂,可以拆分求解,拆分成多个子问题进行求解,比如multi-stage。另外也可以使用交叉迭代,matrix factorization的优化方法就是一种。刚刚拆分子问题的也就是分而治之的方法就是decision tree了。
最后再来探讨一下梯度下降方法,梯度下降是一次逼近的方法,意味着他只是求了一次导数,也就是Taylor展开一次,它的视野就只能看到一阶的地方,所以他选取的方向就是一阶的方向而已。对于另外一种optimization 方法牛顿法就不太一样。牛顿法的是二次逼近,意味着牛顿法它看的更加远,看的是再二次导数的地方哪个是最远的,当然牛顿法也可以Taylor三次展开,但是一般都是二次了,所以牛顿法比梯度下降迭代的更加快,因为它看的更加远,走的就更加稳。
Overfitting Elimination Techniques
Feature Exploitation Techniques和Error Optimization Techniques都是为了优化复杂模型减小Ein,但是Ein过小就会造成overfitting的问题。因此机器学习中过拟合的处理是非常重要的。
处理过拟合的方法之前介绍过:large margin,regularization,voting。
除了上面提到的方法,还可以使用validation来处理
这个章节的东西比较少,也没有什么代码,是看机器学习技法课程最后一张总结的了,最后贴一下十大data mining算法: