1.2 这本书将教给你什么(以及不会教什么)
本书将全面展示不同应用领域正在使用的各种机器学习算法,以及使用它们时应当注意什么。然而,根据亲身经验,我们知道做这些很“酷”的事——使用和调整机器学习算法,比如支持向量机(SVM )、最邻近搜索(NNS ),或者同时支持两者——其实只需要耗费一位优秀机器学习专家的一点儿时间。看看下面这个典型的工作流程,你就会发现绝大部分时间将花费在一些相当平凡的任务上:
1. 读取和清洗数据;
2. 探索和理解输入数据;
3. 分析如何最好地将数据呈现给学习算法;
4. 选择正确的模型和学习算法;
5. 正确地评估性能。
在探索和理解输入数据的时候,我们需要一点统计学和基础数学知识。但当这样做的时候,你会发现,这些数学课上似乎十分枯燥的知识,用来处理有趣的数据时,其实真的很令人兴奋。
解读数据标志着旅程的开始。你面对诸如无效值或缺失值的问题时,会发现这更像是一种技艺而非一门精确的科学。这是一种非常有益的技艺,因为如果这部分做得正确,那么你的数据就能够适应更多的机器学习算法,从而成功的可能性大大提高。
数据在程序的数据结构中就绪之后,你要清楚自己正在跟何方神圣打交道。你有足够的数据来回答自己的问题吗?如果没有,也许应当考虑通过额外的途径来获取一些。或许你的数据过多?那么你可能要考虑怎样最有效地从中抽取样本。
你通常不会直接将数据输入机器学习算法,而是在训练前对部分数据进行提炼。很多时候,使用机器学习算法会让你得到性能提升的回报。一个简单算法在提炼后数据上的表现,甚至能够超过一个非常复杂的算法在原始数据上的效果。这部分机器学习流程叫做特征工程 (feature engineering),通常是一个非常令人兴奋的有意思的挑战。你有创意和智慧,便会立即看到结果。
选择正确的学习算法并不只是尝试一下工具箱中的三四个算法那么简单(工具箱中会有很多的算法)。它更需要的是深思熟虑,来权衡性能和功能的不同需求。你是否会为了快速得到结果而牺牲质量,还是愿意投入更多的时间来得到最好的结果?你是否对未来的数据有一个清晰的认识,还是应该在这方面更保守一点?
最后,性能评估是怀有远大抱负的机器学习初学者最常犯错误的地方。有一些简单的错误,比如使用了与训练相同的数据来测试你的方法。但还有一些比较难的,例如,你使用了不平衡的训练数据。再说一次,数据决定了你的任务是成功还是失败。
我们看到,只有第4点是关于那些花哨的算法的。虽然如此,希望这本书可以使你相信,另外4个任务并不是简单的杂务,它们同等重要,或许还更加令人兴奋。我们希望读过本书之后,你可以真正爱上数据,而非学到的算法。
最后,我们并不想让机器学习算法的理论把你压垮,因为这方面已经有很多优秀的著作了(可以在附录A中找到我们的推荐)。相反,我们会在各节中直观地介绍各种基础方法——这对于你大致理解其中的思想已经足够了,并且能够确保你走好第一步。因此,这本书并不是机器学习“权威指南”,而更像是初学者的工具。我们希望它能够激发你的好奇心,并足以让你保持渴望,不断探索这个有趣的领域。
在本章的余下部分,我们将着手介绍Python的基础库NumPy和SciPy,并且使用Scikit-learn进行第一个机器学习训练。同时我们将介绍基本的ML概念,它们稍后将贯穿于全书。本书余下的各章会详细讲述之前介绍的5个步骤,同时突出介绍使用Python的机器学习方法在各种应用场景中的不同方面。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论