监督学习
监督学习(supervised learning):是机器学习中的一种方法,可以由训练数据中学习到或通过建立一个模式(函数 / learning model),并依此模式推测新的实例。训练数据是由输入数据(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。[1]
通俗的说就是:监督学习算法训练含有很多特征的带标签(label 或 target)的数据集,来对新的数据集的标签做出预测。我们把需要训练的数据集称为训练集(trainset),需要预测的数据集称为测试集。
无监督学习
无监督学习(unsupervised learning):已知数据不知道任何标签,按照一定的偏好,训练一个智能算法,将所有的数据映射到多个不同标签的过程。相对于有监督学习,无监督学习是一类比较困难的问题,所谓的按照一定的偏好,是比如特征空间距离最近,等人们认为属于一类的事物应具有的一些特点。举个例子,猪和鸵鸟混杂在一起,算法会测量高度,发现动物们主要集中在两个高度,一类动物身高一米左右,另一类动物身高半米左右,那么算法按照就近原则,75 厘米以上的就是高的那类也就是鸵鸟,矮的那类是第二类也就是猪,当然这里也会出现身材矮小的鸵鸟和身高爆表的猪会被错误的分类。
常见的非监督式学习是数据聚类。在人工神经网路中,生成对抗网络(GAN)、自组织映射(SOM)和适应性共振理论(ART)则是最常用的非监督式学习。
半监督学习
半监督学习是一种结合有监督学习和无监督学习的一种学习方式。它是近年来研究的热点,原因是在真正的模型建立的过程中,往往有类标的数据很少,而绝大多数的数据样本是没有确定类标的。这时候,我们无法直接应用有监督的学习方法进行模型的训练,因为有监督学习算法在有类标数据很少的情况下学习的效果往往很差。但是,我们也不能直接利用无监督学习的方式进行学习,因为这样,我们就没有充分的利用那些已给出的类标的有用信息。
强化学习
强化学习(reinforcement learning):智能算法在没有人为指导的情况下,通过不断的试错来提升任务性能的过程。“试错”的意思是还是有一个衡量标准,用棋类游戏举例,我们并不知道棋手下一步棋是对是错,不知道哪步棋是制胜的关键,但是我们知道结果是输还是赢,如果算法这样走最后的结果是胜利,那么算法就学习记忆,如果按照那样走最后输了,那么算法就学习以后不这样走。
“数据集”(Data Set):就是数据的集合的意思。其中,每一条单独的数据被称为“样本”(Sample)。若没有进行特殊说明,本书都会假设数据集中样本之间在各种意义下相互独立。事实上,除了某些特殊的模型(如隐马尔可夫模型和条件随机场),该假设在大多数场景下都是相当合理的。
对于每个样本,它通常具有一些“属性”(Attribute)或说“特征”(Feature),特征所具体取的值就被称为“特征值”(Feature Value)。
特征和样本所张成的空间被称为“特征空间”(Feature Space)和“样本空间”(Sample Space),可以把它们简单地理解为特征和样本“可能存在的空间”。
相对应的,我们有“标签空间”(Label Space),它描述了模型的输出“可能存在的空间”;当模型是分类器时、我们通常会称之为“类别空间”。
其中、数据集可以分为以下三类:
训练集(Training Set);顾名思义、它是总的数据集中用来训练我们模型的部分。虽说将所有数据集都拿来当做训练集也无不可,不过为了提高及合理评估模型的泛化能力、我们通常只会取数据集中的一部分来当训练集。
测试集(Test Set);顾名思义、它是用来测试、评估模型泛化能力的部分。测试集不会用在模型的训练部分;换句话说,测试集相对于模型而言是“未知”的、所以拿它来评估模型的泛化能力是相当合理的。
交叉验证集(Cross-Validation Set,简称 CV Set);这是比较特殊的一部分数据,它是用来调整模型具体参数的。
误差
机器学习分为有监督学习、无监督学习、半监督学习、强化学习,有监督学习是指数据集中的数据是有标签的,即具体取出一个数据,是知道它具体是哪一类(分类)或具体的值(回归)。给定一组数据,我们知道正确的输出结果应该是什么样子,并且知道在输入和输出之间有着一个特定的关系。
经验误差,也叫训练误差。在有监督学习中,模型在训练数据集上的误差,称为训练误差。在测试集上的误差为测试误差。
欠拟合、过拟合
在训练模型时,有时会出现在训练集上的性能指标很好,如准确率等,但是在测试集及新的数据上性能指标很差。这种情况就可能出现了过拟合。我们训练模型,是希望模型经过学习能找到数据的”内在规律”,从而在新的数据上能产生比较好的效果,即有很好的泛化能力(举一反三的能力),但是有时后模型在训练集上学习的”太好了”(或许是我们模型过于复杂),导致在训练集上能拟合的很好,误差很小,但在新数据上误差却很大,没有很好的预测能力(泛化能力)。这就极可能产生了过拟合情况。相比欠拟合比较好理解,在训练集上拟合能力就很差,预测结果不佳,指标偏低,一般是欠拟合问题。
欠拟合多数情况下是因为选定的模型类型过于简单,特征选取不够导致的。而过拟合则相反,可能是模型太过复杂,特征选择不当(过多或组合不当)造成的。欠拟合比较好克服,增加模型复杂度增加特征等。相比过拟合处理比较麻烦,后续将了解到,过拟合是机器学习及深度学习的一个大的优化课题。必须认识到,过拟合是无法彻底避免的,我们所能做的只是"缓解'气或者说减小其风险,后续会继续分享优化方面的知识。先理解概念即可。
混淆矩阵
对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准,这就是性能度量(performance measure)。性能度量反映了任务需求,在对比不同模型的能力时,使用不同的性能度量往往会导致不同的评判结果;这意味着模型的"好坏"是相对的,什么样的模型是好的?不仅取决于算法和数据,还决定于任务需求。
常见的性能度量:
错误率与精度
通常我们把分类错误的样本数占样本总数的比例称为"错误率" (errorrate) ,即如果在 m 个样本中有 α 个样本分类错误,则错误率 E= α/m; 相应的,1 一 α/m 称为"精度" (accuracy) ,即"精度 =1 一错误率";
查准率、查全率与 Fl
对一个分类模型而言,给它一个输入,它就会输出一个标签,这个标签就是它预测的当
前输入的类别。
假设数据 data1 被模型预测的类别是 Class_A 。那么,对于 data1 就有两种可能性:
data1 本来就是 Class_A (预测正确),data1 本来不是 Class_A (预测错误)。
当一个测试集全部被预测完之后,相对于 Class_A ,会有一些实际是 Class_A 的数据
被预测为其他类,也会有一些其实不是 Class_A 的,被预测成 Class_A ,这样的话就
导致了下面这个结果(混淆矩阵):
精准率:
即在所有被预测为 Class_A 的测试数据中,预测正确的比率。
召回率:
即在所有实际为 Class_A 的测试数据中,预测正确的比率。
F1值:
显然上面三个值都是越大越好,但往往在实际当中 P 和 R 是矛盾的,很难保证双高。
F1 度量的一般形式 : 能让我们表达出对查准率/查全率的不同偏好,它定义为
关注-微-公众号【学习与成长资源库】获取更多免费学习资料
参考
周志华机器学习
博客
https://blog.csdn.net/App_12062011/article/details/50425009
http://m.elecfans.com/article/618768.html
https://www.jianshu.com/p/429320f81d61