在大数据特别热门的今天,出现了各种培训课程。但我发现这些课程的重点都放在算法的学习上。如何理解logistic回归或深度学习的确很酷,但一旦你开始处理数据,你会发现还有其他的东西更为重要。
我在大学里教了很多年的深度学习,这些课程和讲座总是特别注重特定的算法,你学习支持向量机器、高斯混合模型的聚类、k-均值等等,但是只有在你写硕士论文的时候你需要用到这些方法。
那么什么才是正确的呢?关键就是你要保证你做的模型对于未来的数据也能有好的表现。所以我在这里教你三个书本不能教给你的知识。
一、对模型的有正确的认识是关键
、 机器学习或是数据科学(总之是这个领域)的主要目的,就是建立一个能预测未来数据的系统。在普通情况中,你很难发现监督学习(例如分类)和无监督学习(例 如聚类)之前的区别,你通常会使用你构建和设计的方法去搜集一些数据,但最终你希望你设计的模型可以应用到未来的数据,并且确保该模型行之有效,可以同你 对原始数据的测验结果相同。
初学者经常会犯的一个错误就是,只看到了已有数据的表现,就认为这对未来数据是适用的。很不幸的是事实通常不是这样。例如在一个监督学习的案例中,任务是根据你的输入输出的行为来预测,例如把电子邮件分为垃圾邮件和非垃圾邮件。
如果你只考虑训练数据,那么对机器来说很容易返回完美的预测结果,只是通过死记硬背就可以。机器因为其容量大,可以存储和检索大量的数据,但这导致过度拟合,缺乏概括。
所以适当的评估方式是通过分割数据,分析一个部分,然后预测其他部分来模拟未来的结果。通常,训练部分是庞大的,过程也要重复数次,以获得几个数字来看看什么才是合适的方法,这个过程称为交叉验证。
尽 管方法看起来如此可靠,还是经常会发生错误,特别是当数据是不稳定时,例如数据的基础分布会随时间变化,在现实中这是经常发生的,6月的销售数字和12月 的就会有很大不同。或者数据点之间具有大量相关性,也就是说,如果你知道一个数据点意味着你已经知道了很多关于另一个数据点的信息。例如,股票价格通常在 一天之内会从一个价格跳到另一个价格,如果你搜集这些数据,并做了测试,很可能会推导出和它有相关性的数据。
每当出现这种情况,你就会得到过于乐观的数字,你的方法将无法在未来真正的数据中很好地工作。在最坏的情况下,当你终于说服别人来使用你的方法时这个方法并不能达到预期效果。所以学习如何正确评估是关键!
二、一切都在于特征提取
学习到一种新的方法是令人兴奋的,但事实是,大部分最复杂的方法执行起来基本是相同的,而真正的区别是在通过学习把原始数据的特征提取出来。
现代的学习方法是非常强大的,很容易在几十秒内处理成百上千的数据点,但事实是,这些方法是非常愚蠢的,特别是线性模型(如Logistic回归,线性支持向量机)方法基本上同你的计算器一样傻乎乎。
它们善于通过足够的数据鉴定出特征,但是如果信息不足,或者没有通过输入线性组合展现特征的,它们就什么也做不了。它们也无法通过洞察数据的来实现数据自身的缩减。
换句话说,你可以通过合适的特征来大量减少数据所需的量。假设说你减少了所有要预测的函数的特征,还有什么东西需要学习,对不对?那是多么强大的特征提取!
这 意味着两件事。首先,你需要确保你掌握了这些方法中的一个,而且要坚持下去。所以你真的不需要Logistic回归和线性向量机都学习,只学习其中一个就 行。这也包括你需要理解哪些方法是类似的,这其中的关键点在于底层的模型。所以深度学习是不一样的,但线性模型在表现上来看是差不多的,尽管这些方法有些 不同,但是在大多数的案例中都可以得到类似的预测结果。
第二点,你需要学习所有关于这个行业的特征。不幸的是这是一门艺术,而且几乎没有任何教科书可以提供,因为只有很少的理论。正常化有一个很长的道路,有时特征需要提前对数。每当你可以消除一些自由度,你就可以显著地减少你所需要训练的数据量。
有时候发现这些类型的转化是很容易的。例如如果你正在做手写字符的识别,如果有前景色和背景色的区别,字符的颜色就会变的很重要。
教科书往往只提供一些看起来很强大的方法,你需要用数据测试一下就能得出结果,这也可能是从理论观点和数据源来说是对的,但是在现实中,数据和我们的时间是有限的,所以寻找大信息量的特点是非常有必要的。
三、选型大多数是看周期,而不是数据集的大小。
你不想在大数据时代过多的表达自己的观点,但是大多数数据会完美的融入你的主内存。你的方法可能不会在跑数据上花费很长时间,但是你会花很多时间从原始数据中提取出特征,进行交叉验证。为你的学习方法比较不同特征提取管道和参数。
对 于模型的选择,你可以通过大量的参数组合,评估一个相同的数据副本的性能。现在的问题就是所有的组合爆炸,比方说你有两个参数,它需要大约一分钟来训练你 的模型,并获得一个结果来评估数据集的性能。如果每一个参数有5个候选数值,并且执行5倍交叉验证(把数据分割成5部分,测试5次,在每次迭代中使用不同 的数据来测试),这意味着你需要运行25次来找出哪种方法的效果更好,这可能需要花费两个小时的时间。
好消息是这是很容易并行化的,因为不同的运行是完全相互独立的。这同样适用于特征提取,您通常使用相同的操作(解析,提取,转换等),以每个数据独立设置,导致一些“ 密集并行”(是的,这是一个技术术语)。
坏消息是这对做数据分析的人来说是很多的,因为所有的这些意味着对复杂办法实现拓展实现是没有什么需求的,但是对于储存的并行数据运用一些相同的算法在大多数情况下都非常有帮助。
最 后有很多数据并不意味着你需要所有的数据,问题是有关于潜在学习问题的复杂性。如果这个问题可以用一个简单的模型解决,你就不需要用那么多的数据来推断模 型的参数。这种情况下,采用数据的随机子集可能会有很大的帮助。正如我上面所说的,有时候正确的共您可以帮助他们减少所需要的数据点的数量。
总之知道如何正确的评价可以帮助你减少一个方法不能应用与未来数据的风险。获取正确的特征提取可能是最有效的方法来获得最好的结果。最后。并不总是大数据,分布式计算也可以帮助你。
网友评论