机器学习一词来源于Machine Learning的翻译,主要研究计算机模拟或者实现人类的行为,顾名思义,像学生一样,通过学习获取新的知识或者技能,完善自身的知识结构,并不断提升自己的性能。机器学习是人工智能的核心,其应用编辑人工智能的多个领域,如图像处理、人脸识别、自然语言处理(NLP)、数据挖掘、生物特征识别、检测信用卡欺诈、证券市场分析、语音和手写识别等。
传统的计算机工作,人赋予一串指令(称为程序),计算机根据这串指令一步一步执行下去。这个过程因果关系明确,只要人的理解不出偏差,运行结果是可以准确预测的。机器学习,打破了传统模式,计算机确实还需要人类赋予它一串指令,但这串指令往往不能得到直接的结果,相反,这串指令赋予了机器“学习能力”,从中学习出最终的结果。这个结果往往不能直接编程得到。这就有了机器学习的一种定义:是一种让计算机利用数据而非指令来进行各种工作的方法。在这背后,关键就是“统计学”思想,它所推崇的“相关而非因果”的概念是机器学习的理论根基。在此基础上可以说机器学习是计算机使用输入给它的数据,利用人类赋予它的算法得到某种模型的过程,其最终目的是使用该模型预测未知数据的信息。
机器学习的基础是数据,但是核心是各种算法模型,只有通过这些算法,机器才能消化吸收各种数据,不断完善自身性能。机器学习的算法很多,很多算法是一类的算法只是实现过程略有不同,而有些算法是从其他算法延伸出来的。根据学习方式的不同一般分为监督学习算法、非监督学习算法、半监督学习算法、强化学习算法。
- 监督学习算法
- 一个人类监督学习的案例:当一个孩子逐渐认识事物的时候,父母会给他一些苹果和橘子,并且告诉他苹果是什么样的,有哪些特征;橘子是什么样的,有哪些特征。经过父母的不断介绍,这个孩子已经知道苹果和橘子的区别,如果孩子在看到苹果和橘子的时候给出错误的判断,父母会指出错误的原因,经过不断的学习,再见到苹果和橘子的时候,孩子立即就可以判断出哪个是苹果哪个是橘子。
- 上面这个例子就是监督学习的过程,学习中不仅提供事物的具体特征还提供了事物的名称或者分类。不过人类可以去触摸去体会,但是机器不一样,必须提供每个样本的特征及其类别,使用这些数据,通过算法让机器学习,进行判断,逐步减小误差概率。
- 不妨这样理解:监督学习是从给定的训练数据集中“学习”出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集的数据要求包括输入和输出,也可以说是包括特征和目标,目标是人类事先标注的。
- 监督学习主要应用于分类(Classify)和回归(Regression)。常见的监督学习算法有**k-近邻算法(KNN)、决策树、朴素贝叶斯(NB)、Logistic回归、支持向量机(SVM)、AdaBoost算法、线性回归(LR)、局部加权线性回归(LWLR)、收缩和树回归等。
- 非监督学习算法
- 一个人类非监督学习的案例:当一个孩子逐渐认识事物的时候,父母会给他一些苹果和橘子,但是没有告诉他哪个是苹果哪个是橘子,而是让他根据两个事物的特征自己进行判断,会把苹果和橘子分到两个不同的组中。下次再给孩子一个苹果,他会把苹果分到苹果组中,而不是分到橘子组中。
- 上面的这个例子就是非监督学习的过程,也就是说,在学习的过程中,只是提供事物的具体特征,但不提供事物的名称,让学习者自己总结归纳。所以非监督学习又被称为归纳性学习(Clustering),是指将数据集合分成由类似的对象组成的多个簇或者组的过程。当然,在机器学习的过程中,人类只提供样本的特征,使用这些数据,通过算法让机器学习,进行自我归纳,以达到同组内的事物特征非常接近,不同组的事物特征相距很远的结果。
- 非监督学习主要应用于聚类。常见的非监督学习算法有k-均值(k-means)、Apriori和FP-Growth等。
- 增强学习算法
- 我们都玩过迷宫游戏,从一个入口进去,穿过不同的路线,从另外一个入口出来,中间很多路是不通的。如何走出来能?只有分布==分别尝试不同的路线,如果一个走错,那么久记录下来,再尝试其他的路线,有可能回到上一个路口,走过的路是否正确,自己心中已经有一个规划,最终找到最合理的路径。这就是增强学习的一个例子。
- 增强学习(Reinforcement Learning,RL)又叫做强化学习,是近年来机器学习和智能控制领域的主要方法之一。通过增强学习,人类或者机器可以知道在上面状态下应该采取什么样的行为。增强学习是从环境状态到动作的映射的学习,把这个映射称为策略,最终学习到一个合理的策略。它通过试错的方式获得最佳策略。另外,由于增强学习指导信息很少,往往事后(最后一个状态)才得到反馈信息,以及采取某个行动是获得正回报还是负回报,如何将回报分配给前面的状态以改进相应的策略,规划下一步动作。
- 增强学习的算法主要有动态规划、马尔可夫决策过程等。
- 简要比对
- 监督学习:提供数据特征,也提供数据类别,主要用于预测和分类。
- 非监督学习:提供数据特征,不提供数据类别,主要用于发现事物内部结构。
- 增强学习:在学习过程中根据外部状态实时调整自己的策略,主要用于路径规划。
机器学习是人工智能的一部分,而深度学习(源于人工神经网络的研究)是机器学习的一部分。即人工智能>机器学习>深度学习。
DataSet,数据的集合,每一条数据成为样本(Sample),一般而言每一个样本相互独立。(特殊的是隐含马尔可夫模型和条件随机场模型)。
- 训练集(Training Set)
- 用来训练模型的数据集,一般选取一部分数据作为训练集。
- 测试集(Test Set)
- 用来测试、评估模型泛化能力的部分,测试集不会用于训练,对模型而言是“未知”的。一般,选取一部分数据作为测试集。
- 交叉验证集(CV Set)
- 比较特殊的一部分数据,它是用来调整模型具体参数的。
训练集用来估计模型,交叉验证集用来确定网络结构和控制模型复杂程度的参数,测试集用来检验最终选择最优的模型性能如何。一个典型划分为训练集占50%其余各占25%。但是,当样本过少时这个划分就不太合理,此时选取少部分作为测试集对其余N个样本使用K折交叉验证法。
对于每个样本,通常具有一些“属性”(Attribute)或者说是“特征”(Feature),特征所取的具体的值为“特征值”(Feather Value)。特征和样本所组成的空间被称为“特征空间”(Feather Space)和样本空间(Sample Space),可以把它们简单理解为特征和样本“可能存在的空间”。
与之对应的有“标签空间”(Label Space),它描述了模型的输出“可能存在的空间”;当模型是分类器时,通常会称为“类别空间”。
参考书籍推荐为《Python3数据分析与机器学习实战》。