机器学习基础

机器学习基础

五月 30, 2018

开始学习机器学习

在没接触机器学习之前, 一提起机器学习,就会觉得深奥、难懂、一般人很难入门,貌似是科学家做的事情。真的是这样吗?事实却非如此,它并不要求计算机能像人一样有情感,也不会与计算机探讨人生的意义,更不会对你有非分之想。

何谓机器学习

有幸,有机会、有时间接触到大数据和机器学习。机器学习早在 20 世纪 50 年代到 60 年代就属于热烈时期,发展至今,机器学习已经应用于多个领域,远超出我们的想象。比较典型的应用有人脸识别,垃圾邮件过滤、商品推荐、天气预报、预测交通拥堵情况等等。

我们还可以做更多有趣的事情,比如根据这篇文章最高词频预测文章在讲什么;根据爱好,性格推荐最合适的相亲对象。

真正的有趣必然是你深深陷入了其中,或者你了解世界上的一切奥妙,试图探求世界的本质,或者你天马行空,又勇气可嘉,能用最好的技术去实现最美好的事。

人们很难直接从海量数据获取关键信息,但可以告诉计算机用什么算法,去提炼和预测所需的点。简单的说,机器学习(Machine learning)就是把无序的数据转换成有用的信息

机器学习算法

机器学习算法

机器学习领域中常用的有 10 几种算法,它们用于分类,回归,聚类,降维,其中分类和回归是监督学习,所谓监督学习(Supervised Learning),意为必须知道预测什么,即目标变量的分类信息。举个栗子,我收集了一批数据,数据中包含人体特征和分类标识男 / 女 / 其
它,用训练好的算法预测另一批带人体特征的性别分类,确认这批人是男是女。

与监督学习相对应的是无监督学习(Unsupervised learning),不得而知,它的数据没有类别信息。举个相反的栗子,我收集了一批数据,数据中只包含人体特征,并没有告诉计算机哪些是男,哪些是女,而是让它自己去判断和分类。总结出性别的差异。

开发步骤

开发机器学习应用的步骤

开发大多数机器学习的应用通常遵循以下步骤:

  1. 收集数据:可以是多种方法收集数据,如爬虫、数据生成器、公开数据集等。初学及测试算法建议使用公开数据源,具备一定的权威性,准确度高,节省时间,后续文章会有所涉及。
  2. 准备数据:在程序中加载收集的数据,创建方便处理的数据对象,建议转换成 numpy 或 pandas 库支持的数据格式,它们支持灵活的矩阵处理和计算能力。
  3. 分析数据:观察数据是否存在空值和无效内容,如果有条件,建议数据图形化,更直观的看到数据分布。在处理大量特征的复杂数据时,还需要对数据进行降维和归一化操作。
  4. 训练算法:算法是机器学习的核心,相同的数据应用不同的算法会有不同的结果,选择合适的算法至关重要。这一步会把样本数据放到算法里进行训练,使得算法模型具备预测和判断能力。需要注意的是无监督学习没有训练过程。
  5. 测试算法:也叫评估算法,测试算法的效果,算法的成功率、准确率。
  6. 使用算法:将训练的算法模型转换成可执行应用,在实际业务场景中工作。

技术准备

Python 是机器学习最受欢迎的语言之一,可以很方便的集成科学计算库、图表库,和其它语言相比,它更像是工具。建议使用 Python 3,Python 2 将在 2020 年停止维护。Anaconda 是用于科学计算相关的 Python 发行版,为了节省时间,建议安装它快速上手,它集成了常用的机器学习相关库,下面几个库在机器学习中很重要,已经被集成在 Anaconda,建议学习一遍。

  • numpy:矩阵计算,多维数组
  • scipy:科学工具集
  • matplotlib:强大的画图工具库
  • scikit-learn:重点,高效的数据挖掘和数据分析工具,集成了机器学习中大多数算法,可直接使用
  • pandas:高效地操作大型数据集