机器学习小白上路,过去一个月在西瓜书上学习笔记与感悟。
作者:互联网
一些术语
- 数据集(data set):所有数据的集合.
- 示例(instance)或样本(sample):对一个特定示例,如一个西瓜的所有数据。
- 属性(attribute)或特征(feature):反应事件或对象在某方面的表现或性质的事项。
- 属性值:属性具体的特点。
在这里,属性和属性值很容易混:
个人认为:属性是放在这个地方合适,而在其他地方不合适。如西瓜的色泽(属性)是绿色(属性值),你不可以说手机的色泽如何,但可以说手机是绿色的(虽然不准确)显然属性的使用范围不如属性值的广泛。可以利用这一点区分。 - 属性空间(attribute space)样本空间(sample space)或输入空间:属性张成的空间。
- 特征向量(feature vector):将属性构成坐标轴,形成坐标系后每一个特征都可以对应一个个体。也就是具有这几个特征的个体。
- 维数(dimensionality):有几个属性维数是几。
- 学习(learning)或训练(training):从数据中学得模型的过程,通过执行某个算法来完成。
- 训练数据(training data):训练过程中使用的数据。
- 训练样本(training sample):训练数据中的样本。
- 训练集(training set):训练样本组成的集合。
- 假设(hypothesis):学得了模型对应了某种潜在规律。
- 真相(ground-truth):这种规律本身。
- (Xi,Yi):表示第i个样例Yi是标记,Y是标记的集合。
- 正类(positive)反类(nagetive):在只涉及两个类别的二分类,其中一个叫正类另一个叫反类。
- 测试(testing):学习万模型以后,用它进行预测的过程叫作测试。
- 测试样本(testing sample):被预测的样本。
- 聚类(clustering)聚类:将训练集中的西瓜分为若干组,每组称为一个“簇”
可以帮助我们了解数据内在的规律,能为更深入的了解数据建立基础 - 根据是否有标记信息学习任务分为两大类:有监督学习和无监督学习,分类和回归是前者的代表,而聚类是后者的代表。
- 泛化能力:指学的的模型在适用于新样本的能力。
- 版本空间:所有有效假设的集合。
如何获得具有强泛化能力的模型?
通常假设样本空间中的样本服从一个未知分布D,我们获得的每个样本都是独立的从这个分布(概率分布,指每个样本从样本空间中被抽到的概率遵循统一的概率分布)上采样获得的及独立分布,一般而言,训练样本越多,我们可以得到更多的D信息,就可以获得更强泛化能力的模型。
假设空间
归纳与演绎:
前者是从具体的事物归纳出一般性规律
后者是从一般到特殊的转化,即从基础原理归纳出具体情况。
归纳学习:从示例归纳出规律有狭义和广义之分
广义:从样例中学习
狭义:从训练数据中得出概念,也称为概念学习。概念学习中最基本的是布尔学习。
我们把学习过程看作一个在所有假设组成的空间中进行搜索的过程,搜索目标是找到与训练集匹配的假设
有许多搜索策略如自顶向下,从一般到特殊或自下而上,从特殊到一般,搜索过程可以不断的删除和正例不一样的假设和(或)与反例一致的假设,最终得到与训练集一致(即对所有训练样本能够进行正确判断)的假设,这就是我们学的的成果。
归纳偏好(用于当版本空间中的假设互相相悖时使用):机器学习过程中会出现对某种类型假设的偏好。
如图,图中的曲线A和B都是穿过点,机器必须有一种偏好才能选出它认为正确的模型。
奥卡姆剃刀(Occam’s razor):若有多个假设与观察一至,则选择最简单的那个。
没有免费午餐定理:不论是聪明算法还是笨拙算法,都会出现相同情况(一个算法a在那些地方比b好那也有算法b在一些地方比a好。
脱离实际问题空谈“什么算法更好”毫无意义。
模型评估与选择
1. 错误率:分类错误的样本数/样本总数=错误率。
2. 精确度:1-错误率=精确度。
3. 误差:样本实际输出值与样本真实输出之间的差异。
4. 泛化误差:在新样本上的误差。
5. 我们希望得到泛化误差小的模型,然而我们不能让精确度达到100%,因为如果让训练样本太好了的话,很可能把训练样本自身的一些特点当作了所有潜在样本都会具有的一般性质,这会导致泛化能力的下降,它被称为“过拟合”【“过配”反义“欠配”】,我的认识是:不小心把一些样本独有的特点认为是所有样本都有的特点,从而产生错误。
6.产生原因是学习能力过强或太弱【学习能力由学习算法和数据内涵决定】,欠拟合比较容易克服,如:在决策树中扩展分支,神经学习中增加轮数,而过拟合不可避免只可以缓解,(p问题:就是在多项式时间内可以算出答案的问题,也就是说可以在一个比较短的时间内(人类可以接受的时间,比如一个小时啊一天之类的,不是什么一百年啊一千年这么长的时间)可以算出答案的问题。
np问题:就是可以(多项式时间内)短时间内验证一个答案正确性的问题。
np完全问题:第一个条件,可以这么说,就是你如果能解决a问题,则通过a问题可以解决b问题,那么a问题比b问题复杂,当所有的问题都可以通过a问题的解决而解决的话,那么a问题就可以称为np完全问题,第二个条件,就是a问题属于np问题。
np难问题:这个就是np完全问题中满足第一个条件并且不满足第二个条件的问题。)可以这么理解:机器学习通常是NP难甚至是更难,那么有效的算法是在多项式时间内可以运行完成;若可以避免过拟合,则可以使经验误差最小化就可以获得最优解,这就是我们构造性的证明了p=NP,但p!=NP,所以,过拟合不可避免。
那么在,面对那么多的算法,我们应该选择哪一个,使用哪一种配置参数,理想的方法当然是对泛化误差进行评估,选择小误差的那个,‘那么,如何评估?
模型评估
可以考虑通过实验测试来对学习的泛化误差进行评估。
需要一个测试集,然后以测试误差作为泛化误差的近视 注意:测试集尽量与训练集互斥,测试样本不在训练集中出现,未在训练过程中使用过。
但我们只有一个数据集,即要测试也要训练该怎么办:通过对D进行适当的处理,从中产生训练集S和测试集T。以下有几种方法:
- 留出发:暴力拆D变为两个互斥的集合即
D=S∪T,S∩T=Ø. - 尽量保持数据的分布的一致性,避免因数据划分过程引入额外的误差。如样本比例。要进行若干次的划分与测试,在得出平均值作为评估结果。
- 交叉验证法:将D分成k个大小相似的互斥子集,尽可能保持一致性,然后每次使用k-1个子集的并集作训练集,余下的那个子集作测试集,最常分为10个。注意:测试集是一个,不是几个的并集。也要使用不同的划分重复p次,最后的结果是平均值
- 留一法:有几个数据分成几个样本。这种方法往往被认为准确,没有免费午餐定理也适用于评估。
- 自助法(有放回采样):用于减少训练样本规模不同造成的影响(估计偏差),同时还能比较高效的进行实验估计。
方法,从有m个数据样本的D中随机挑数据到D2,然后把数据放回去,重复m次后,D2中就有了吗M个样本,而有一部分不会出现,那么,我们可以把D2作为训练集,把没有选进去的作为测试集这样的测试结果也称“包外估计“。
可以在数据集小,难以有效划分训练集或测试集时使用,由于数据集改变了初始数据集的分布会引入估计偏差
调参与最终模型
大多数学习算法都有些参数需要哦设定,参数配置不同,学到的性能模型性能往往有显著差异,因此往往要调参。
调参和算法选择没有什么本质区别:对每种参数配置都训练出模型,然后把最好的模型的参数作为结果,但由于是在实数范围内,所有基本不可能一个一个实验出结果。所以只能一小段一小段来试。
选定模型以后,应该用D重新训练模型,使用了M个数据,这才是最后模型
注意:现实中我们通常把实际使用中用到的数据称为测试数据,而评估测试的数据称为验证集,也就是说,把训练数据分为训练集和实验集。
性能度量
不仅需要有效可行的实验估计方法,还要度量模型泛化能力的评价标准,这就是性能度量。
回归任务最常用的性能度量是“均方误差“类似与方差公式:
E(f.D)=1/m ∑_(i=1)^m▒(f(x_i )-y_i )^2
更一般的,对于数据分布D和概率密度p(⋅),均方误差可以表示为:
E(f;D)=∫_(x~D)▒〖(f(x)-y)^2 P(x)ⅆx〗.
错误率与精确
分类错误率定义为:
精确度定义为
查准率 查全率与F1
对于二分类问题而言:
查准率P与全率R关系:
这是一对相互矛盾的量。可以产生P-R曲线
若一个机器学习的P-R曲线被另一个完全包裹住,则称后者的性能高于前者。但有时两个曲线有交点,这个时候则可以可以判断曲线下面的面积的大小,但这个值不容易表现。因此人们又设计了一些综合考量查准率查全率的性能度量。比如:BEP平衡点,F1。
这里要明白,在一些应用中对查准率与查全率重视程度不同。而F1的一般形式F_β可以让我们表达出对查准率与查全率不同偏好
(β>0)
以上内容来自于西瓜书
2020 12.18
标签:感悟,泛化,训练,模型,样本,学习,测试,书上 来源: https://blog.csdn.net/qq_52540764/article/details/111353189