小时候经常会跟着爸爸一起去买西瓜,每次他买西瓜的时候,总会拿起西瓜敲一敲,听听响声,我问他为什么要这么做,他说响声浊响的西瓜甜。长大以后,我开始自己挑西瓜,我发现除了听响声,还要看西瓜的颜色和条纹,颜色深的和条纹清晰的西瓜一般比较甜。
挑西瓜体现了我们人类学习的过程,我们从过去的挑西瓜经验中总结出甜瓜的规律,然后用这个规律指导我们怎样挑西瓜。
其实机器学习也是类似的,最大的区别是机器替换了人类,过去的经验对于机器来说就是历史数据,机器通过机器学习算法对历史数据进行学习得到一个模型,模型对应于人类总结出来的规律,可以用来判断一个西瓜是甜还是不甜。举个例子,下面这个表格包含四个西瓜的历史数据:
敲声 | 颜色 | 条纹 | 标记 |
---|---|---|---|
浊响 | 乌黑 | 清晰 | 甜 |
浊响 | 乌黑 | 模糊 | 甜 |
清脆 | 浅绿 | 清晰 | 不甜 |
沉闷 | 绿色 | 模糊 | 不甜 |
每一行代表一个西瓜的数据,敲声、颜色和条纹是西瓜的三个特征或者属性,标记代表了这个西瓜是甜还是不甜。
有了历史数据之后,机器需要一个算法去学习这些历史数据,训练出一个模型,模型可以用来对未来的数据做判断,不同的算法可能训练出不同的模型,比如通过上面4个西瓜的数据,机器可能得出下面两种模型:
- 敲声浊响并且颜色乌黑的西瓜都是甜的。
- 敲声浊响的西瓜都是甜的。
这两种模型对于四条西瓜数据来说都是对的,这里可以看出,模型的好坏依赖于历史数据的规模和质量以及机器学习算法的偏好。
根据机器学习的方式,机器学习可以分为:
- 有监督学习,在监督式学习下,输入数据被称为“训练数据”,每组训练数据有一个明确的标识或结果,比如上面挑西瓜的学习就属于有监督学习。监督式学习的常见应用场景如分类问题和回归问题。
- 非监督学习,在非监督式学习中,数据并不被标识,学习模型是为了推断出数据的一些内在结构。常见的应用场景包括关联规则的学习以及聚类等。
- 半监督学习,在此学习方式下,输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。
- 增强式学习,在这种学习模式下,输入数据作为对模型的反馈,不像监督模型那样,输入数据仅仅是作为一个检查模型对错的方式,在强化学习下,输入数据直接反馈到模型,模型必须对此立刻作出调整。常见的应用场景包括动态系统以及机器人控制等。
如果你是一名程序员又不想止步于理论,可以从scikit-learn开始玩一玩机器学习。