【问题标题】:Machine learning, best technique机器学习,最佳技术
【发布时间】:2011-07-23 13:00:33
【问题描述】:

我是机器学习的新手。我熟悉 SVM、神经网络和 GA。我想知道学习对图片和音频进行分类的最佳技术。 SVM 做得不错,但需要很多时间。有人知道更快更好的吗?另外我想知道 SVM 最快的库。

【问题讨论】:

  • 提高 SVM 性能的一种方法是使用 k-means(或其他聚类方法)对原始数据进行预处理,以减少 SVM 处理的数据量。您可以将音频转换为频谱表示,然后在由(频率、电平、时间)形成的 3 空间上进行聚类

标签: artificial-intelligence machine-learning svm


【解决方案1】:

您的问题很好,并且与分类算法的最新水平有关,正如您所说,分类器的选择取决于您的数据,对于图像,我可以告诉您,是一种称为 Ada-Boost 的方法,请阅读 thisthis 以了解更多信息,另一方面,您会发现很多人正在做一些研究,例如在 Gender Classification of Faces Using Adaboost [Rodrigo Verschae,Javier Ruiz -del-Solar 和 Mauricio Correa] 他们说:

“Adaboost-mLBP 优于所有其他基于 Adaboost 的方法,以及基线方法(SVM、PCA 和 PCA+SVM)” 看看吧。

【讨论】:

  • 感谢您的回复。我会读的。您是否也碰巧知道 SVM 的好库?我知道 SVMlight 和 libSVM。 SVM 灯更快。
  • 我用过[weka][1],它是一个很好的java分类工具;看到这个minimal reproducible example[2] 在 weka [2] 中运行 svm:stat.nctu.edu.tw/~misg/WekaInC.ppt [1]:cs.waikato.ac.nz/ml/weka
  • 谢谢。我会看看它。我再等一天再接受。我正在等待更多的意见。谢谢你的。
  • 预处理是否有帮助,例如对输入执行 K-means 聚类,然后将聚类结果呈现给 SVM?
  • 通常你以随机方式启动一些算法,但如果你做某种预处理它会对算法有很大帮助,当你说聚类时,你的意思是无监督学习??,如果你这样做,那么您可以使用可以使用 k-means 的 EM 算法,然后知道您有多少 k 或类,然后让 svm 对它们进行分类
【解决方案2】:

如果您主要关心的是速度,您可能应该看看VW,一般来说看看用于训练 SVM 的基于随机梯度下降的算法。

【讨论】:

    【解决方案3】:

    如果特征的数量与训练样本的数量相比很大 那么你应该选择没有内核的逻辑回归或 SVM

    如果特征数量较少且训练样本数量居中 那么你应该使用带有高斯内核的SVN

    是特征数量少,训练样例数量多 使用逻辑回归或不带内核的 SVM。

    这是根据 stanford ML-class 规定的。

    【讨论】:

      【解决方案4】:

      对于此类任务,您可能需要先提取特征。只有这样分类才可行。

      【讨论】:

      • 您能否澄清您的答案,可能提供一些更具体的信息?
      • 例如,如果要进行人脸识别,最好先提取一些典型的人脸部位——鼻子、嘴巴等,然后提取它们的关键点,然后尝试将ML应用于关键点跨度>
      【解决方案5】:

      我认为特征提取和选择很重要。

      对于图像分类,有很多特征如原始像素、SIFT特征、颜色、纹理等。最好选择一些适合你的任务。

      我不熟悉音频分类,但可能有一些频谱特征,比如信号的傅立叶变换,MFCC

      用于分类的方法也很重要。除了问题中的方法外,KNN 也是一个合理的选择。

      实际上,使用什么特性和方法与任务密切相关。

      【讨论】:

        【解决方案6】:

        该方法主要取决于手头的问题。对于任何问题,没有一种方法总是最快的。话虽如此,您还应该记住,一旦您选择了速度算法,您将开始在准确性上妥协。

        例如,由于您尝试对图像进行分类,与手头的训练样本数量相比,可能会有很多特征。在这种情况下,如果您使用带有内核的 SVM,您最终可能会因方差过高而过度拟合。 因此,您需要选择一种具有高偏差和低方差的方法。使用逻辑回归或线性 SVM 是一些方法。

        您还可以使用不同类型的正则化或 SVD 等技术来删除对输出预测贡献不大且仅具有最重要的特征的特征。换句话说,选择它们之间几乎没有或没有相关性的特征。一旦你这样做了,你就可以在不牺牲准确性的情况下加速你的 SVM 算法。

        希望对你有帮助。

        【讨论】:

          【解决方案7】:

          在学习机器方面有一些很好的技术,例如 boosting 和 adaboost。 一种分类方法是boosting方法。该方法将迭代地操作数据,然后在每次迭代时由特定的基分类器进行分类,进而构建分类模型。 Boosting 在每次迭代中使用每个数据的权重,其权重值将根据要分类的数据的难度级别而变化。 而adaBoost方法是一种集成技术,利用损失函数指数函数来提高预测的准确性。

          【讨论】:

            猜你喜欢
            • 2012-08-12
            • 1970-01-01
            • 2013-06-21
            • 2015-01-16
            • 2017-01-14
            • 1970-01-01
            • 2018-09-26
            • 1970-01-01
            • 2015-07-31
            相关资源
            最近更新 更多