0 绪论
人工智能>机器学习>深度学习
人工智能:让机器变得像人一样拥有智能的学科;
机器学习:让计算机像人一样能从数据中学习出规律的一类算法;
深度学习:神经网络类的机器学习算法
人工智能具体应用领域:
计算机视觉(Computer Vision,CV):让计算机拥有视觉能力;
自然语言处理(Natural Language Processing,NLP):让计算机拥有语言能力;
推荐系统(Recommender System,RS):让计算机精确分析出人的喜好;
第一章 绪论
1.1省略
1.2基本术语:
数据集示例/样本属性/特征属性值
属性空间/样本空间/输入空间
数据集:对于一类事件或对象在某方面的描述的数据的集合
示例/样本:数据集中的一条描述
属性/特征:反映事件或对象在某方面的表现或性质的事项
属性值:属性上的取值
属性空间/样本空间/输入空间:属性张成的空间
(在属性空间中,每个点对应一个坐标向量,因此我们也把…个示例称为一个“特征向量”)
在一个空间内,每一个示例的属性个数都相等,此时每个示例可以被称为空间的向量,并且这个个数被称为维数,即n维空间
机器学习学得模型的过程称为“学习”或“训练”
“训练“过程中使用的数据称为”训练数据“,其中每个样本称为一个“训练样本", 训练样本组成的集合称为"训练集”
要建立预测,仅靠示例是不够的,还需在示例的基础上增加标记
即,将示例看做一个元素,将其与结果一起放在一个新的向量,由示例引出的结果被称为标记。
若我们需要预测的是离散值,例如判断西瓜好坏,该类任务被称为“分类”;
若我们预测的是连续值,例如判断西瓜成熟度,该类任务被称为“回归”;
若我们需要将数据集分为不同的类别,每一类的区别我们也无法提前知晓,该类任务被称为“聚类”;
前两类有标记,被称为“监督学习”;后一种无标记,被称为“无监督学习”
1.3假设空间
归纳:特殊到一般的“泛华”
演绎:一般到特殊的“特化”
很明显,机器学习是一个泛华的过程,因此也被称为“归纳学习”
假设空间即为所有假设组成的空间,可看做一个包含了所有假设的集合。机器学习即为在假设空间中搜寻所有与训练集匹配的假设(需注意,假设空间包括两个极端,即标记与所有示例均无关和根本不存在某种标记这种概念)
“版本空间”为所有与训练集一致的假设
1.4归纳偏好
为避免由于等效假设对机器学习产生的迷惑,算法会向某一方向去偏好
同时,我们需要清楚,不同的偏好对于同一组数据会产生不同的算法,如图
图1.1
图中实心点为所有示例,A,B两曲线为不同的算法在不同点时的预测结果
其中,A曲线遵循“奥卡姆剃刀”原则(若有多个假设与观测一致,则选最简单的那个)。
但是,事实上,“奥卡姆剃刀”并非唯一可以被遵循的原则。
图1.2
显然易得,在图1.2(a)中 ,选择A算法优于B算法;但在(b)中,B算法发而明显优于A算法;
那么,我们应如何确定哪一类算法更优呢?
为方便理解,笔者将推导过程省略,将直接展示结果
. (1.2)
令人惊讶的是,总误差竟与算法选择无关!
即对于任意两个算法和,有
(1.3)
也就是说,无论算法多么聪明,他们的期望性能竟然一致。这就是著名的“没有免费的午餐”定理(NFL定理)。
需要注意到上述定理有一个重要前提:所有问题出现机会相同,或所有问题同等重要。
我们在实际解决问题时,往往会对所有的问题进行重要程度划分,即不可能满足NFL定理的前提条件。
这告诉我们,在实际解决问题时,需要将实际情况带入考虑。
1.5至1.7省略
第二章 模型评估与选择
2.1经验误差与过拟合
错误率=错误个数/样本总数,精度=1-错误率
学习器在训练集上产生的误差被称为“训练误差”或“经验误差”,在新样本上的误差被称为“泛化误差”。
原则上讲,我们希望得到一个在新样本上表现得很好的学习器。为了这个目的,我们需从样本集中尽可能的学出一种“普遍规律”。但同时,如果学习器将训练集学得太“好”时,可能会将只存在于训练集上的特性当做是存在于所有样本的一般性质。这种现象被称为“过拟合”。
与之相对的便是“欠拟合”,这是因为对训练样本为学好。
通常,“欠拟合”是由于学习器学习能力不够,无法学到一本的特性;而“过拟合”是由于学习器学习能力过强,将本不适用于所有样本的“非一般特性”当做一般特性学习了下来。
对于以上两问题,解决“欠拟合”较为简单,如在决策树学习中扩展分支、在神经网络学习中增加训练轮数等,而过拟合则很麻烦.在后面的学习中,我们将看到,过拟合是机器学习面临的关键障碍,各类学习算法都必然带有一些针对过拟合的措施。
2.2评估方法
评估时,需用一个“测试集”来测试学习器对新样本的判别能力,然后以测试集上的“测试误差”近似为泛化误差。(测试集应尽可能的与训练集互斥)。
可是,我们只有一个包含m个样例的数据集,可用以下几种方法产生训练集S和测试集T
2.2.1留出法
直接将原数据集划分为两互斥集合,一个作为训练集S,另一个作为测试集T,即
需注意,在随机分类时,若训练\测试集个体差异大,则误差将会随之变动;另,在使用留出法时,一般会对原数据集随机分割若干次,重复评估后取平均值作为其结果。
留出法可能面临的窘境:若S过大,则T小,可能导致其测试不够准确;若S小T大,则连训练都无法接近D。这个问题没有最优解,常见做法是将大约2/3~4/5的样本用于训练,其余用于测试。
2.2.2交叉验证法(k折交叉验证)
先将原数据集划分为k个大小相似的互斥子集,即
每次用k-1个子集的并集作为训练集,其余作为测试集;这样就可以得到k组训练集/测试集,进行k次训练和测试,最终返回k个训练值的均值。
该方法的稳定性和保真率很大程度上取决于k值,通常k值取10,称为10折交叉验证,下图为其示意图
图2.1 10折交叉验证示意图
其特殊情况为“留一法”,即对于包含m个样本的集合D,令k=m,其分得的测试集仅含一个样本,优点:得到的模型往往与期望的模型很相似,因此,留一法的评估结果往往被认为比较准确。
缺点:当数据集中所含样本数量巨大时,计算次数过多(如若数据集中包含100万个样本,则需要训练100万个数据模型)
2.2.3自助法
该方法中,我们将数据集D中随机挑选一个样本,将其拷贝至D’中,然后再放回D中,使其在下一次依旧可以被采集到;重复上述过程m次我们就得到包含m个样本的数据集D’。显然,D’中一部分数据是重复的,而另一部分不会出现,利用简单的数学知识可知,样本在m次采集过程中不被采集到的可能是,取极限可得
优点:数据集较小、难以有效划分训练\ 测试集很有用;能从初始数据集中产生多个不同训练集,对集成学习有很大好处;
缺点:改变初始数据集分布,引入估计偏差
2.2.4调参与最终模型
由于参数不同,也可能导致算法性能产生误差。因此,还需对模型进行“参数调节”,简称“调参”。
调参的做法一般为,现将参数确定在一个范围内,固定其步长,依次进行测试。但是,当范围跨度与步长相差很大时,调参依旧是一件令人非常苦恼的事。当最终模型选择确定,学习算法和参数配置已选定时,应重新用数据集D进行训练,得到最终交给客户的模型,称为“最终模型”