\quad \quad 机器学习是实现人工智能的手段,从数据中获得决策(预测)函数使得机器可以根据数据进行自动学习,通过算法使得机器能从大量历史数据中学习规律从而对新的样本做决策。
机器学习也类似于数据挖掘,但数据挖掘是发现数据中未知模式和关系的科学,ML将先前推断的知识应用于新数据,在实际应用中做出决策
示例(instance)或样本(sample): 每条记录是关于一个事件或对象的描述,被称为示例或样本
属性(attribute)或特征(feature):事件或对象在某方面的表现或性质的事项
特征向量(feature vector):特征的集合,通常用一个向量来表示一个样本的所有特征,其中每一维都表示一个特征。
数据集(data set): 记录(数据)的集合
在机器学习中,一般将数据集分为两部分:
训练集(train set):训练集中的样本是用来训练模型,建立模型的,也叫训练样本
测试集(test set):测试集中的样本是用来检验模型好坏的,也叫测试样本。
标记(label):实例类别的标记
\quad \quad 机器学习是从有限的观测数据中学习(或猜测)出具有一般性的规律,并可以将总结出来的规律推广应用到未观测数据样本上。机器学习可以粗略地分为三个基本要素:模型、学习准则、优化算法(统计学习三要素:模型、策略、算法)
\quad \quad 机器学习的目标是找到一个模型来近似真实映射函数 g ( x ) g(x) g(x)或真实条件概率分布 P r ( y ∣ x ) P_r(y|x) Pr(y∣x)表示输入和输出之间的关系。
\quad \quad 模型的假设空间(hypothesis space)包含所有可能的条件概率分布或决策(映射)函数(其实就是他们的集合)。
\quad \quad 常见的假设空间可以分为线性和非线性两种,对应的模型f也分别称为线性模型和非线性模型。最终,采取的模型是基于数据本身从假设空间选择代价最小的模型。
\quad \quad 模型 f ( x ; θ ) f(x;\theta) f(x;θ)的好坏可以通过期望风险 R ( θ ) R(\theta) R(θ)来衡量,定义为:
损失函数用来评价模型的预测值和真实值不一样的程度,损失函数越小,通常模型的性能越好。不同的算法使用的损失函数不一样。
1、适应于分类问题的损失函数:
0-1损失函数
0-1损失是指,预测值和目标值不相等为1,否则为0:
L ( y , f ( x ) ) = { 1 y!=f(x) 0 y=f(x) L(y,f(x))= \begin{cases} 1& \text{y!=f(x)}\\ 0& \text{y=f(x)} \end{cases} L(y,f(x))={10y!=f(x)y=f(x)
感知机就是用的这种损失函数。但是由于相等这个条件太过严格,因此我们可以放宽条件,即满足 |Y−f(X)|
0-1损失函数可以直观的刻画分类的错误率,但是因为其非凸,非光滑的特点,使得算法很难对其进行直接优化
绝对值损失函数
L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y−f(X)| L(Y,f(X))=∣Y−f(X)∣
log对数损失函数
逻辑斯特回归(logistic回归)的损失函数就是对数损失函数,在逻辑斯特回归的推导中,它假设样本服从伯努利分布(0-1)分布,然后求得满足该分布的似然函数,接着用对数求极值。逻辑斯特回归并没有求对数似然函数的最大值,而是把极大化当做一个思想,进而推导它的风险函数为最小化的负的似然函数。从损失函数的角度上,它就成为了log损失函数。
log损失函数的标准形式:
L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) L(Y,P(Y|X))=−logP(Y|X) L(Y,P(Y∣X))=−logP(Y∣X)
交叉熵损失函数(Cross-Entropy Loss Function)
2、适应于回归问题的损失函数:
平方损失函数
L ( Y ∣ f ( X ) ) = ∑ n i = 1 ( Y − f ( X ) ) 2 \displaystyle L(Y|f(X))=\sum_{n}^{i=1}(Y−f(X))^2 L(Y∣f(X))=n∑i=1(Y−f(X))2
两个准则(策略)
1、经验风险最小化
在假设空间、 损失函数以及训练数据集确定的情况下,经验风险函数式就可以确定。
模型关于训练数据集的平均损失称为经验风险
当样本容量足够大时,经验风险最小化能保证有很好的学习效果。比如,极大似然估计(就是经验风险最小化的一个例子,当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。
但当样本容量很小时,经验风险最小化容易导致“过拟合”。
2、结构风险最小化
结构风险最小化是为了防止过拟合而提出来的策略。
结构风险最小化等价于正则化。结构风险在经验风险上加上表示模型复杂度的正则化项(regularizer)或罚项(penalty term)。结构风险的定义是:
其中J(f)为模型的复杂度,是定义在假设空间F上的泛函(泛函(functional)通常是指一种定义域为函数,而值域为实数的“函数”。换句话说,就是从函数组成的一个向量空间到实数的一个映射。也就是说它的输入为函数,而输出为实数)。模型f越复杂,复杂度J(f)就越大;反之,模型f越简单,复杂度J(f)就越小。也就是说,复杂度表示了对复杂模型的惩罚。 λ > = 0 \lambda>=0 λ>=0是系数,用于权衡经验风险和模型的复杂度。结构风险小需要经验风险与模型复杂度同时小。结构风险小的模型往往对训练数据以及未知的测试数据都有较好的预测。
\quad \quad 我们有了数据,有了学习模型的策略,然后就要开始去构造模型了,如果模型的基本形式有了,就是一个优化模型参数的问题了。因此,机器学习中的算法问题就是优化算法。也就是说,机器学习的训练过程其实就是最优化问题的求解过程。
\quad \quad 我们的目标是让算法尽量高效,更少的计算机内存代价,更快的运算速度,更有效的参数优化结
优化算法1——梯度下降
\quad \quad 机器学习算法按照不同的标准,有不同的分法:
机器学习一般分为下面几种类别
监督学习 ( Supervised Learning):训练集每个样本有标签,教会机器怎么学习。
按照标签类型的不同,监督学习又可以分为回归问题、分类问题和结构化学习问题
1)回归: 输入变量与输出变量均为连续变量的预测问题称为回归问题。
2)分类: 输出变量为有限个离散变量的预测问题称为分类问题,并且类别已知。
3)结构化学习: 结构化学习问题是一种特殊的分类问题。在结构化学习中,标签y通常是结构化的对象,比如序列、树或图等。
常用的监督学习算法有:
K近邻算法
线性回归
逻辑回归
支持向量机(SVM)
决策树和随机森林
神经网络
无监督学习( Unsupervised Learning):训练集无标签,让机器自己学习。典型的无监督学习问题有聚类、密度估计、特征学习、降维等。
强化学习( Reinforcement Learning,增强学习):强化学习是一类通过交互来学习的机器学习算法。在强化学习中,智能体根据环境的状态做出一个动作,并得到即时或延时的奖励。智能体在和环境的交互中不断学习并调整策略,以取得最大化的期望总汇报。
半监督学习( Semi-supervised Learning):部分有标签(有标签的训练集+有无标签的训练集)。半监督学习就是从大规模的无标注数据中充分挖掘有用的信息,降低对标注样本数量的要求。
详情见特征工程
\quad \quad 只有选择与问题相匹配的评估方法,才能快速地发现模型选择或训练过程中出现的问题,迭代地对模型进行优化。针对分类、排序、回归、序列预测等不同类型的机器学习问题,评估指标的选择也有所不同。知道每种评估指标的精确定义、有针对性地选择合适的评估指标、根据评估指标的反馈进行模型调整,这些都是机器学习在模型评估阶段的关键问题。
错误率: 在分类任务中,错分的样本数占样本总数的比例称为错误率(error rate)。
精度:在分类任务中,正确分的样本数占样本总数的比例称为精度(accuracy)。精度 = 1 - 错误率。
误差: 学习器的实际预测输出与样本的真实输出之间的差异称为误差(error)。根据产生误差的数据集,可分为:
训练误差(training error): 又称为经验误差(empirical error),学习器在训练集上的误差
测试误差(test error): 学习器在测试集上的误差。
泛化误差(generalization error):学习器在未知新样本上的误差。
因为,泛化误差无法测量,因此,通常我们会将测试误差近似等同于泛化误差。
过拟合: 所谓过拟合(over-fitting)其实就是所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳,亦称过配。。
从【数据】着手:
【增加数据的途径】:一般来说直接增加训练数据很困难,但可以通过一定的规则来扩充训练数据。
从【模型】着手:
降低模型复杂度:在数据较少时,模型过于复杂是产生过拟合的主要因素,适当降低模型复杂度可以避免模型拟合过多的采样噪声。
正则化方法:给模型的参数加上一定的正则约束,比如将权值的大小加入到损失函数中。常用的惩罚项有 l1 惩罚项和 l2 惩罚项。
集成学习方法:把多个模型集成在一起,来降低单一模型的过拟合风险。
降低 “欠拟合” 风险的方法
从【数据】着手:
从【模型】着手:
在现实任务中,我们往往有多种学习算法可供选择,甚至对同一个学习算法,当使用不同的参数配置时,也会产生不同的模型,那么,我们该选用哪一个学习算法、使用哪一种参数配置呢?这就是机器学习中的 模型选择(model selection) 问题。.理想的解决方案当然是对候选模型的泛化误差进行评估,然后选择泛化误差最小的那个模型。然而泛化误差无法直接获取,而经验误差又存在着过拟合问题,不适合作为标准,下面从以下三个方面进行模型的选择的考量
评估方法: 用什么数据做评估?如何获得这些数据?
性能度量: 评估时如何衡量模型的好坏?有哪些评价标准?
比较检验: 如何比较模型的性能?
见另一篇幅模型评估与选择1——评估方法
性能度量可细分为分类问题性能度量、回归问题性能度量以及聚类问题性能度量。
见模型评估与选择2——性能度量(分类问题)
见模型评估与选择2——性能度量(回归问题)
见模型评估与选择3——比较检验