文章目录
  1. 1. 常见问题
    1. 1.1. 和svm相关的
      1. 1.1.1. 如何组织训练数据
      2. 1.1.2. 如何调节惩罚因子
      3. 1.1.3. 如何防止过拟合
      4. 1.1.4. svm的泛化能力
      5. 1.1.5. 增量学习
    2. 1.2. 交叉验证

承接机器学习面试问题4.

常见问题

和svm相关的

如何组织训练数据

1)将数据分开为训练集、测试集;
2)对训练集寻优,构建好决策函数,训练分类器;
3)用测试集验证准确率,达到满足需要的准确率后,就可以用新数据分类。

如何调节惩罚因子

惩罚因子(参数C):为了使用松弛变量才引入的,表示对离群点的重视程度。C越大越重视,越不想丢掉离群点。可用来解决数据集偏斜问题,方法是调整惩罚因子,给样本数量少的类更大的惩罚因子。

惩罚因子C决定了你有多重视离群点带来的损失,显然当所有离群点的松弛变量的和一定时,你定的C越大,对目标函数的损失也越大,此时就暗示着你非常不愿意放弃这些离群点,最极端的情况是你把C定为无限大,这样只要稍有一个点离群,目标函数的值马上变成无限大,马上让问题变成无解,这就退化成了硬间隔问题。

惩罚因子C不是一个变量,整个优化问题在解的时候,C是一个你必须事先指定的值,指定这个值以后,解一下,得到一个分类器,然后用测试数据看看结果怎么样,如果不够好,换一个C的值,再解一次优化问题,得到另一个分类器,再看看效果,如此就是一个参数寻优的过程,但这和优化问题本身决不是一回事,优化问题在解的过程中,C一直是定值,要记住。

详细可参见:
http://blog.csdn.net/qll125596718/article/details/6910921

如何防止过拟合

过拟合表现为在训练数据上模型的预测很准,在未知数据上预测很差。过拟合主要是因为训练数据中的异常点,这些点严重偏离正常位置。我们知道,决定SVM最优分类超平面的恰恰是那些占少数的支持向量,如果支持向量中碰巧存在异常点,那么我们傻傻地让SVM去拟合这样的数据,最后的超平面就不是最优的。

解决过拟合的办法是为SVM引入了松弛变量ξ。

详细可参见:
http://blog.csdn.net/vincent2610/article/details/52033250

综上,可以得出:为了解决离群的异常点引入了松弛变量,为了解决松弛变量的引入带来的分类精度的影响问题,引入了惩罚因子,松弛变量用来舍弃离群点,而惩罚因子用来保护离群点。

除却svm,一般防止模型过拟合,提高模型泛化能力时,最常用的方法是:正则化,即在对模型的目标函数或代价函数加上正则项。此外,为了防止过拟合,我们也会用到一些其他方法,如:early stopping、数据集扩增(Data augmentation)、Dropout等。

详细可参见:
http://blog.csdn.net/heyongluoyao8/article/details/49429629

svm的泛化能力

泛化能力是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。

svm进阶可参考:
http://www.cnblogs.com/tornadomeet/archive/2013/05/26/3100603.html

增量学习

增量式学习是计算机视觉中的一种学习算法,主要用于分类问题中。

增量式算法:就是每当新增数据时,并不需要重建所有的知识库,而是在原有知识库的基础上,仅做由于新增数据所引起的更新,即只需修改因数据变化而涉及的规则。

svm增量学习可参见:
http://xueshu.baidu.com/s?wd=paperuri%3A%280cb9ee19ed8568e081958ce3e457ae31%29&filter=sc_long_sign&tn=SE_xueshusource_2kduw22v&sc_vurl=http%3A%2F%2Fwww.docin.com%2Fp-478883661.html&ie=utf-8&sc_us=7212435835612971359

交叉验证

交叉验证的基本思想是把在某种意义下将原始数据进行分组,一部分做为训练集,另一部分做为验证集,首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型,以此来做为评价分类器的性能指标。

常见的交叉验证形式:
1)Holdout 验证
常识来说,Holdout 验证并非一种交叉验证,因为数据并没有交叉使用。 随机从最初的样本中选出部分,形成交叉验证数据,而剩余的就当做训练数据。 一般来说,少于原本样本三分之一的数据被选做验证数据。
2)K-fold cross-validation
K折交叉验证,初始采样分割成K个子样本,一个单独的子样本被保留作为验证模型的数据,其他K-1个样本用来训练。交叉验证重复K次,每个子样本验证一次,平均K次的结果或者使用其它结合方式,最终得到一个单一估测。这个方法的优势在于,同时重复运用随机产生的子样本进行训练和验证,每次的结果验证一次,10折交叉验证是最常用的。
3)留一验证
正如名称所建议, 留一验证(LOOCV)意指只使用原本样本中的一项来当做验证资料, 而剩余的则留下来当做训练资料。 这个步骤一直持续到每个样本都被当做一次验证资料。 事实上,这等同于和K-fold 交叉验证是一样的,其中K为原本样本个数。 在某些情况下是存在有效率的演算法,如使用kernel regression 和Tikhonov regularization。

文章目录
  1. 1. 常见问题
    1. 1.1. 和svm相关的
      1. 1.1.1. 如何组织训练数据
      2. 1.1.2. 如何调节惩罚因子
      3. 1.1.3. 如何防止过拟合
      4. 1.1.4. svm的泛化能力
      5. 1.1.5. 增量学习
    2. 1.2. 交叉验证