今天QQ群跟一个大牛谈话很受益啊

果然是是科研人才啊:

都是很技术的话题,我整理了一下,废话给省了(黑体字是我说的,红体字是那位大牛说的)

问个问题啊:有篇博客上说:“调整权重时,SVM是全局最优,ANN是局部最优”怎么理解啊

 ANN得到的几乎永远是局部最优 , ANNoptimization是非凸的。 除非使用极个别的输入函数,ANN才可能是凸的。 SVMoptimization是凸的,很容易得到全局最优。

全局最优和局部最优 对分类有什么影响吗

对于实际性能来说,区别不大。 ,凸的模型很容易受到complexity的限制。

 

SVM复杂度,它的优势不是处理高纬空间吗 ,通过核函数以内积形式映射到高维空间,不是不怕复杂吗

普通的rbf kernelSVM是没办法处理高维问题的

囧啊,svm的高斯核不是很擅长搞这玩意吗

高维空间里,SVM一样受curse of dimensionality影响。  

不做feature selectionSVM在高维的表现很多时候非常扯淡。

 

现在先不讨论高深的了,话说libsvm直接可以做多分类吗,我这两天也是刚接触,还没测试过,只要更改数据格式就ok

嗯。libsvm应该用的是DAG。 只要label是多类,libsvm就会自动处理的。

高维小样本数据的话可以试试LIBLINEAR

不过还有一个理论问题,是有些文献说svm能克服ANN过学习的问题

 

速度更快,性能也不差。  SVM就是通过regularization来实现的。  

你看到的\|w\|^2就是防止overfitting的一种方法。 但实际上overfitting还是存在的。 所以现在大家使用更radicalpenalty

就是设置惩罚因子来实现,其实我看就是在支持向量那里设置一个阈值

难道ANN没有类似设置?

嗯,那个penalty就是所谓的克服。 , ANN也可以做类似的设置。

还有就是不太明白的是:svm针对小样本,这里的小样本如何理解

 d>>n  dfeature数量,n是样本数量。  SVMprimal问题是在d为空间里求解。  dual问题再n维空间里求解。 如果n<<d,那么肯定是dual问题更好解了。

 dual问题 我实在没怎么看懂啊,哎




凸优化里的Lagrangian。你看过Andrew NgMachine Learning的视频么?
里面有讲。不过建议把BoydOptimization看一遍。Machine Learning和凸优化密不可分啊



另一个问题:我感觉自己的分类问题,数据量也不大(样本最多100,分类数据最多2000),维数也不多(最多30维),选择svmann貌似都可以呀

你这个dimension很低。已经不错了。

我是做遥感图像分类的,现在刚接触这块,先了解了下,现在正在想如何选择分类器,不过看文献大家都用svm也做得相当success.维数是比较低的,但我想关键是精度问题,大家分析下,这样的分类问题,选择那个classifier精度会最好呢


你的分类数据都有label么?用全部数据来做cross validation,看看validation error大概是多少。



都用,我处理的是图像分割后的区域,每个区域都用region_ID

这个结果大概就是你能做到的极限了。
没有一个模型是完美的。有他们自己的适用范围。
有专门做noisy labellearning问题
认为label有很多outlier


用全部数据来做cross validation,看看validation error大概是多少。
这个验证对选择分类器有什么影响吗?


每个分类器一个validation error
基本就是你在现有数据上能做到的极限。这个只是极限。极限性能好,不代表样本数量减少时性能仍然能最好。只是一个参考



我想或许做个分类器融合效果可能更好


简单的把这些强分类器做融合的话意义不大。会增加更多的参数。
一般都要有相应的领域知识,局限于领域内的应用.比如图像的分类器融合,融合不同的信息会更有意义。同样的feature,使用不同的分类器,性能提升非常有限.



融合不同的信息这句怎么理解啊

比如图像的不同频率域的feature。举个例子,比如harr小波处理过的图像。
或者gabor滤波使用不同尺度和不同频率得到的图像。

哦,这样啊,另外还有一个热门就是模糊分类器

fuzzy
也就是国内还在做吧。我觉得国外已经没人搞这个了。
你做遥感,应用和改进现有模型就行了吧。

另外KNN貌似应用的也比较多

这玩意最容易实现,而且性能也不算差。

貌似是,虽然存储样本费事,但是程序实现容易,呵呵,无需改动了就
样本太大可以做sampling


另一网友:

基本上在数据维度特别大的时候 我还是比较喜欢用线性核或者径向核 如果使用sigmoid核则svm就变成了一个包含一个隐层的多层感知器 只不过隐层节点个数不用咱们自己去定且不会陷入局部最优 我觉得这点挺爽
关于软间隔优化有一阶软间隔和二阶软间隔 可以用一个通式来表示 这样研究时候也比较方便
目前解支持向量机的算法基本分两种 求解原问题或者求解其对偶问题 当然不同算法适合于不同场景 没有最好的只有最适合的
对于对偶问题我想多说一点 这时候计算的复杂度不再取决于空间维数而取决于样本数(特别是支持向量个数)因此虽说feature越少越具有代表性越好 不过我不知道某些情况下是不是可以弱化特征提取的作用 换句话说我觉得svm是最不依赖于特征提取过程的分类算法

  支持向量机研究工作有待深入的四个方面:

  1. huge training data
  2. high dimensional data
  3. noise
  4. unbalanced training data
  5. 第1个问题他们提出的一个解决方法是seperable boundary detection: 找到处于边界的数据以减少数据量,通过聚类等方式找到数据集的结构,将两者混合训练出的模型比传统的SVM 算法得到的模型要快速.

    第2个问题的一个解决方法是feature selection: 首先将每个特征按照敏感度(我的第一反应是按方差,但是他提到的是什么我忘了)排序, 取最有效的特征子集; 然后用correlated based方法将特征聚类(Affinity propogation, 2007 science), 得到一个更好的特征集用于训练.

    讲第3个问题时可能去接电话了,没注意到.

    第4个问题是将数据按照第1个问题的方法找到边界数据,然后再用聚类方法得到一些local training data训练出若干个local SVM, 接着将他们组合起来构成一个SVM. 但是这样的方式在预测时效率较低,通过每个Local svm的输出分段,然后训练出一个SVM来预测,这样可以解决相应的疑问(这里听得不太清楚).

    训练样本少,那么,置信范围就很大,真实风险与期望风险之间的误差就比较大,用真实风险来代替期望风险就会产生很大的偏差,也就意味着,训练得到的模型,推广型(泛化能力)很差。

    svm主要做分类或者回归的.以分类为例,一般情况下,数据不是线性可分的,因此如果要分类非线性数据,就必须将数据映射为线性可分的空间,但是这会伴随着数据维数的增加,甚至会到无穷的情况.那这样就没法计算了.幸亏svm的特点决定了并不需要考虑数据的维数,它的相关计算只与两个数据的内积有关,当数据映射到高维空间后,需要计算数据的内积,但是又不知道映射函数以及数据的具体维数时.核函数很好的解决了这个矛盾,它使计算高维空间的内积转换为在原来空间数据点的核函数计算.可以这样理解,核函数就是高维空间数据点的内积,但它的计算是原来空间计算的.
    这个特点是svm成功的基础,也是svm的核心内容,相当的完美.要真正理解这个概念,需要一些泛函的知识,但是开始的时候你无须知道所有细节,什么mercer条件你都不要管.现在研究的核函数只有那么几种,先用他们再说.


    个人使用觉得SVM稳定些
    BP每次训练结果都不同,比较难取合适的网络
    更重要的是SVM可以解决神经网络过拟合的问题 对样本的选取也不会很苛刻

原文地址:https://www.cnblogs.com/xiangshancuizhu/p/2149688.html