实际实践中关于机器学习的全部内容是什么?


11

我是机器学习(还包括一些统计数据)的新手,一段时间以来一直在学习知识(有监督/无监督学习算法,相关的优化方法,正则化,一些哲学(例如偏差方差折衷?))。我知道,没有任何实际练习,我将不会对这些机器学习知识有深入的了解。

因此,我首先从真实数据的分类问题开始,例如手写数字分类(MNIST)。令我惊讶的是,在没有任何特征学习/工程设计的情况下,使用原始像素值作为输入的随机森林分类器,精度达到0.97。我还尝试了其他学习算法,例如支持参数调整的SVM,LR。

然后我迷路了,这太容易了还是我在这里错过了任何东西?只是从工具箱中选择学习算法并调整一些参数?

如果在实践中将全部与机器学习有关,那么我将对该领域失去兴趣。我思考并阅读了一些博客几天,然后得出一些结论:

  1. 机器学习在实践中最重要的部分是特征工程,即在给定数据的情况下,找出特征的更好表示。

  2. 使用哪种学习算法也很重要,参数调整也很重要,但最终选择更多是关于实验。

我不确定我是否理解正确,希望任何人都可以纠正我,并给我一些有关实践中机器学习的建议。


1
我认为我无法完全回答您的问题,但我想向您保证,除了功能质量较差之外,还有很多算法/工具不能令人满意的问题(以我的经验,社会科学非常普遍两种情况)。我认为这不是您唯一关心的问题,但是到目前为止,您似乎对项目的简便性感到不满意。

1
@Matthew,是的,当我遇到一个实际问题时,我迷失了自己,不知道从哪里开始,我应该分析数据以了解本质,以便提取有用的功能或选择学习算法并运行吗?
牛油果

我不会登上飞往正常97倍出的100飞机
lcrmorin

Answers:


12

实际上,机器学习(ML)取决于进行ML的目标。在某些情况下,进行可靠的预处理并应用一系列现成的ML方法可能就足够了。但是,即使在这些情况下,了解这些方法的工作方式也很重要,以便能够在出现问题时进行故障排除。但是,实践中的ML不仅限于此,MNIST是一个很好的例子。

在MNIST数据集上获得“良好”性能看似容易。例如,根据Yann Le Cun关于MNIST性能的网站,具有欧几里德距离度量(L2)的K个最近邻居(K-NN)的错误率也为3%,与您开箱即用的随机数相同森林。L2 K-NN大约和ML算法一样简单。另一方面,Yann,Yoshua,Leon和Patrick的最好镜头在该数据集LeNet-4上的错误率仅为0.7%,0.7%小于3%的四分之一,因此,如果将此系统放入练习读取手写数字时,幼稚算法需要四倍的人力来解决其错误。

Yann及其同事使用的卷积神经网络与该任务相匹配,但是我不称其为“特征工程”,就像努力理解数据并将这种理解编码为学习算法一样。

那么,有哪些经验教训:

  1. 使用开箱即用的方法和良好的预处理,很容易达到幼稚的性能基准。您应该始终这样做,以便知道基线在哪里以及该性能水平是否足以满足您的要求。但是要当心,开箱即用的ML方法通常是“易碎的”,即对预处理非常敏感。培训完所有开箱即用的方法之后,尝试打包它们几乎总是一个好主意。
  2. 棘手的问题要么需要特定领域的知识,要么需要更多数据,或者两者都需要解决。特征工程意味着使用特定领域的知识来帮助ML算法​​。但是,如果您有足够的数据,可以利用该数据学习复杂特征的算法(或方法)以及应用此算法的专家,则有时您可以放弃此知识(例如Kaggle Merck挑战)。而且,有时领域专家对于良好的功能是错误的。因此,更多的数据和ML专业知识总是有帮助的。
  3. 考虑错误率而不是准确性。精度为99%的机器学习方法所产生的错误是精度为98%的机器所产生的一半。有时这很重要。

2
+1,非常感谢。在阅读您的答案时,如果我没有特定领域的知识来进行特征工程,那么我应该专注于发明使用给定数据进行特征学习的好方法,并尝试不同的学习算法。
牛油果

@loganecolss或者,您也可以阅读其他人对类似数据所做的工作,或者与域专家交谈。
qdjm 2014年

7

我认为您在博客或网站上找到的示例是众所周知的常用方法有效的示例(即使可以改进)。

我的专长是功能工程,我可以告诉您,标准算法通常根本无法正常工作。(我对该领域没有任何了解,但经常与有知识的人合作。)。

我在这里工作了6个月,这是一个真正的问题:给定一个矩阵X,其中包含100个样本和10000个代表患者遗传价值的变量,并且输出y的大小为100 x 1,代表骨骼的密度。

你能告诉我哪些基因影响骨头的密度吗?

现在,我正在处理另一个问题。我有一个包含2000个样本和12000个变量的制造业生产数据集。我的老板想以无监督的方式从该数据集中提取30个以上的变量。
我尝试了一些算法,但不能选择少于600个变量,因为它们之间的相关性非常高。(我仍在努力中……)

要考虑的另一个重要思想是各种算法的速度性能。在许多情况下,您不能等待20分钟才能等待结果。例如,您需要知道何时使用NIPALS以及何时使用SVD计算PCA。

希望这可以使您了解ml中常见的问题。


n<<p
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.