本系列其他部分:
第十二章 支持向量机(SupportVector Machines)
1、优化目标(OptimizationObjective)
你也可以把这里的参数C考虑成 1/λ,同 1/λ 所扮演的角色相同。
2、大边界的直观理解
在这里,如果你加了这个样本,为了将样本用最大间距分开,也许我最终会得到一条类似这样的决策界,对么?就是这条粉色的线,仅仅基于一个异常值,仅仅基于一个样本,就将我的决策界从这条黑线变到这条粉线,这实在是不明智的。而如果正则化参数 C,设置的非常大,这事实上正是支持向量机将会做的。它将决策界,从黑线变到了粉线,但是如果 C 设置的小一点,如果你将 C设置的不要太大,则你最终会得到这条黑线。
要提醒你C的作用类似于1/λ,λ是我们之前使用过的正则化参数。粉色线是C非常大的情形,或者等价地λ非常小的情形,会得到过拟合的结果。但是实际上应用支持向量机的时候,当C不是非常非常大的时候,它可以忽略掉一些异常点的影响,得到更好的决策界。甚至当你的数据不是线性可分的时候,支持向量机也可以给出好的结果。
C 较大时,相当于λ较小,可能会导致过拟合,高方差。
C 较小时,相当于λ较大,可能会导致低拟合,高偏差。
3、数学背后的大边界分类(MathematicsBehind Large Margin Classification)
4、核函数(Kernels)
下面我们将核函数运用到支持向量机中,修改我们的支持向量机假设为:
给定x,计算新特征f,当θTf>=0 时,预测 y=1,否则反之。
相应地修改代价函数为:
支持向量机也可以不使用核函数,不使用核函数又称为线性核函数(linear kernel),当我们不采用非常复杂的函数,或者我们的训练集特征非常多而实例非常少的时候,可以采用这种不带核函数的支持向量机。
下面是支持向量机的两个参数C和σ的影响:
C 较大时,相当于λ较小,可能会导致过拟合,高方差;
C 较小时,相当于λ较大,可能会导致低拟合,高偏差;
σ较大时,导致高方差;
σ较小时,导致高偏差。
5、使用支持向量机
用以解决SVM最优化问题的软件很复杂,强烈建议使用高优化软件库中的一个,例如liblinear和libsvm。
在高斯核函数之外我们还有其他一些选择,如:
多项式核函数(PolynomialKernel)、字符串核函数(String kernel)、卡方核函数( chi-square kernel)、直方图交集核函数(histogram intersection kernel)。这些核函数的目标也都是根据训练集和地标之间的距离来构建新特征,这些核函数需要满足Mercer's定理,才能被支持向量机的优化软件正确处理。
尽管你不去写你自己的SVM(支持向量机)的优化软件,但是你也需要做几件事:
(1)是提出参数C的选择。
(2)你也需要选择内核参数或你想要使用的相似函数,其中一个选择是:我们选择不需要任何内核参数,也叫线性核函数。
(3)记住要对特征变量进行归一化。
下面是一些普遍使用的准则:n为特征数,m为训练样本数。
(1)如果相较于m而言,n要大许多,即训练集数据量不够支持我们训练一个复杂的非线性模型,我们选用逻辑回归模型或者不带核函数的支持向量机(此时两者性能效果相似)。
(2)如果n较小,而且m大小中等,例如n在 1-1000 之间,而m在10-10000 之间,使用高斯核函数的支持向量机。
(3)如果n较小,而m较大,例如n在1-1000之间,而m大于50000,则使用支持向量机会非常慢,解决方案是创造、增加更多的特征,然后使用逻辑回归或不带核函数的支持向量机。
神经网络在以上三种情况下都可能会有较好的表现,但是训练神经网络可能非常慢,选择支持向量机的原因主要在于它的代价函数是凸函数,不存在局部最小值。
第十三章 聚类(Clustering)
1、无监督学习:简介
2、K均值算法(K-MeansAlgorithm)
K-均值是一个迭代算法。
首先选择K个随机的点,称为聚类中心(cluster centroids)。用μ1,μ2,...,μk 来表示聚类中心,用c(1),c(2),...,c(m)来存储与第i个实例数据最近的聚类中心的索引;
Repeat {
for i = 1 to m
c(i) := index (form 1 to K) of cluster centroid closestto x(i)
for k = 1 to K
μk := average(mean) of points assigned to cluster k
}
算法分为两个步骤,第一个for循环是赋值步骤,即:对于每一个样例i,计算其应该属于的类。第二个for循环是聚类中心的移动,即:对于每一个类k,重新计算该类的质心。若存在一个聚类中心下没有任何样本,则剔除该聚类中心得到K-1个簇。
3、优化目标(OptimizationObjective)
4、随机初始化(RandomInitialization)
随机初始化聚类中心点的步骤:
(1)我们应该选择K<m,即聚类中心点的个数要小于所有训练集实例的数量
(2)随机选择K个训练实例,然后令K个聚类中心分别与这K个训练实例相等(3)针对局部最优问题,通常需要多次运行K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行的结果,选择代价函数最小的结果。这种方法在K较小的时候(2--10)还是可行的,若K较大,这么做也可能不会有明显地改善。
5、选择聚类数
肘部法则
关于“肘部法则”,我们所需要做的是改变K值,也就是聚类类别数目的总数。我们用一个聚类来运行K均值聚类方法。这就意味着,所有的数据都会分到一个聚类里,然后计算成本函数或者计算畸变函数J。K代表聚类数字。
另外,利用聚类结果的下游目的来辅助确定K值(人工选择)。
第十四章 降维(DimensionalityReduction)
1、动机1:数据压缩
2、动机2:数据可视化
3、主成分分析问题(PrincipalComponent Analysis Problem Formulation)
主成分分析(PCA)是最常见的降维算法。
在PCA中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。应用PCA之前,先对特征数据进行归一化和规范化,特征均值为0。
PCA是要将n维数据降至k维,目标是找到向量u(1),u(2),...,u(k)使得总的投射误差最小。
PCA 技术的一大好处是对数据进行降维的处理。我们可以对新求出的“主元”向量的重要性进行排序,根据需要取前面最重要的部分,将后面的维数省去,可以达到降维从而简化模型或是对数据进行压缩的效果。同时最大程度的保持了原有数据的信息。
PCA 技术的一个很大的优点是,它是完全无参数限制的。在PCA的计算过程中完全不需要人为的设定参数或是根据任何经验模型对计算进行干预,最后的结果只与数据相关,与用户是独立的。
但是,这一点同时也可以看作是缺点。如果用户对观测对象有一定的先验知识,掌握了数据的一些特征,却无法通过参数化等方法对处理过程进行干预,可能会得不到预期的效果,效率也不高。
4、主成分分析算法
对于一个 n×n 维度的矩阵,上式中的U是一个具有与数据之间最小投射误差的方向向量构成的矩阵。如果我们希望将数据从n维降至k维,我们只需要从U中选取前K个向量,获得一个n×k维度的矩阵,我们用Ureduce表示,然后通过如下计算获得要求的新特征向量
其中x是n×1维的,因此结果为k×1维度。注,我们不对方差特征进行处理。
5、选择主成分的数量
6、重建的压缩表示
7、PCA的应用建议
应用PCA时,除了对训练集进行压缩,还要对交叉验证集和测试集用Ureduce进行转换。
错误应用:
(1)将PCA用于减少过拟合,应使用归一化处理(正则化)
(2)滥用PCA,建议在必要的时候才应用PCA(算法运行太慢或占用内存太多)