◆ 机器学习算法分类 有监督学习、无监督学习、半监督、强化学习
有监督学习
指对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程; 只要模型被确定,就可以应用到新的未知数据上。
这类学习过程可以进一步分为「分类」(classification)任务和「回归」(regression)任务。
在分类任务中,标签都是离散值;
而在回归任务中,标签都是连续值。
1. 线性回归
线性回归是用于预测回归问题的算法。算法根据训练数据计算参数,使得损失最小,这种做法是有监督学习算法的共同之处。
表示误差和学习参数之间关系的函数叫做 误差函数(或损失函数)。线性回归中,通常会用均方误差作为误差函数。L ( w 0 , w 1 ) = ∑ i = 1 n [ y i − ( w 0 + w 1 x i ) ] 2 n L(w_0,w_1)=\frac{\sum_{i=1}^n[y_i-(w_0+w_1x_i)]^2}{n}L(w0,w1)=n∑i=1n[yi−(w0+w1xi)]2
- 一元回归:只有一个独立特征变量的线性回归;
- 多元回归:有两个及以上的独立特征变量的线性回归;
- 多项式回归:尽管独立特征变量只有一个,但包含 x 2 x^2x2、x 3 x^3x3 这种特征变量的次方项的线性回归。
2. 正则化
正则化是防止过拟合的一种方法,与线性回归等算法配合使用。通过向损失函数增加惩罚项的方式对模型施加制约,有望提高模型的泛化能力。
过拟合是模型在验证数据上产生的误差比在训练数据上产生的误差大得多的现象,过拟合的一个原因是机器学习模型过于复杂。正则化可以降低模型的复杂度,有助于提高模型的泛化能力。
2.1 岭回归
以岭回归的误差函数为例进行说明。简单起见,这里考虑对二次线性回归应用正则化的情况。R ( w ) = ∑ i = 1 n [ y i − ( w 0 + w 1 x i + w 2 x i 2 ) ] 2 + α ( w 1 2 + w 2 2 ) R(w)=\sum_{i=1}^n[y_i-(w_0+w_1x_i+w_2x_i^2)]^2+\alpha(w_1^2+w_2^2)R(w)=i=1∑n[yi−(w0+w1xi+w2xi2)]2+α(w12+w22)等号右边的第 1 项 ∑ i = 1 n [ y i − ( w 0 + w 1 x i + w 2 x i 2 ) ] 2 \sum_{i=1}^n[y_i-(w_0+w_1x_i+w_2x_i^2)]^2∑i=1n[yi−(w0+w1xi+w2xi2)]2 是线性回归的损失函数,第 2 项 α ( w 1 2 + w 2 2 ) \alpha(w_1^2+w_2^2)α(w12+w22) 被称为惩罚项(或者正则化项)。
其中 α ( α ≥ 0 ) \alpha(\alpha \ge 0)α(α≥0) 是控制正则化强度的参数,α \alphaα 越大,对学习参数的抑制越强;α \alphaα 越小,对训练数据过拟合的可能性越大。惩罚项具有 “对绝对值大的学习参数给予损失变大的惩罚” 作用。这个作用可以抑制学习参数变大。这里的 α \alphaα 其实就是一个超参数。
2.2 Lasso 回归
Lasso 回归的惩罚项是学习参数的绝对值之和。R ( w ) = ∑ i = 1 n [ y i − ( w 0 + w 1 x i + w 2 x i 2 ) ] 2 + α ( ∣ w 1 ∣ + ∣ w 2 ∣ ) R(w)=\sum_{i=1}^n[y_i-(w_0+w_1x_i+w_2x_i^2)]^2+\alpha(|w_1|+|w_2|)R(w)=i=1∑n[yi−(w0+w1xi+w2xi2)]2+α(∣w1∣+∣w2∣)Lasso 回归计算的是函数与某个四边形函数的交点。因此具有 学习参数容易变为 0 的特点。利用这个特点,我们可以使用学习参数不为 0 的特征来构建模型,从而达到利用 Lasso 回归选择特征的效果。这样不仅能提高模型的泛化能力,还能使模型的解释变容易。
3. 逻辑回归
逻辑回归是一种学习某个事件发生概率的算法。利用这个概率,可以对某个事件发生或不发生进行二元分类。所以,虽然算法的名字中包含 “回归” 二字,但其实是一种分类算法。
逻辑回归的基本思想与线性回归一样,对数据 x xx 乘以权重向量 w ww ,再加上偏置 w 0 w_0w0 ,计算 w T x + w 0 w^Tx+w_0wTx+w0 的值。与线性回归不同的是,为了计算概率,逻辑回归的输出范围必须限制在 0 和 1 之间,逻辑回归使用 S i g m o i d SigmoidSigmoid 函数 σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}}σ(z)=1+e−z1 返回 0 和 1 之间的数值。
我们对输入数据 x xx 使用 S i g m o i d SigmoidSigmoid 函数 σ ( z ) \sigma(z)σ(z) ,即使用 p = σ ( w T x + w 0 ) p=\sigma(w^Tx+w_0)p=σ(wTx+w0) 计算标签为 y yy 的概率 p pp 。
4. 支持向量机
间隔:训练数据中,最接近决策边界的数据与决策边界之间的距离,称为间隔。
线性支持向量机的学习方式是:以间隔最大化为基准,让决策边界尽可能地远离数据。
不允许数据进入间隔内侧的情况称为 硬间隔。但一般来说数据并不是完全可以线性分离的,所以要允许一部分数据进入间隔内侧,这种情况叫做 软间隔。
我们将间隔上的数据和间隔内侧的数据特殊对待,称为支持向量。支持向量是确定决策边界的重要数据。
软间隔的学习结果不容易受到偏离值的影响。在使用软间隔时,允许间隔内侧进入多少数据由超参数决定。
5. 支持向量机(核方法)
核方法的一个常见解释是 “将数据移动到另一个特征空间,然后进行线性回归”。
假设有一个比训练数据更高维的空间,训练数据中的每一个点都对应着这个高维空间中的一个点。在这个高维空间中,训练数据对应的点是可以线性分离的,实际的训练数据是来自该高维空间的投影。一旦有了这样的空间模型,模型就可以在高维空间使用支持向量机来学习决策边界。最后,将高维空间的决策边界投影到由原始特征形成的向量空间上,得到决策边界。
使用不同的核函数,得到的决策边界的形状也不同。但是使用核方法后,我们就无法清楚地知道支持向量机使用的是什么特征了。所以,核方法适合用于 相比特征的可解释性,更看重精度 的场景。
6. 朴素贝叶斯
朴素贝叶斯是一个基于概率进行预测的算法,在实践中被用于分类问题。具体来说,就是计算数据为某个标签的概率,并将其分类为概率值最大的标签。朴素贝叶斯主要用于文本分类和垃圾邮件判定等自然语言处理中的分类问题。
朴素贝叶斯是自然语言分类的基础算法,但是不适合预测天气预报中的降水概率那种预测值是概率本身的情况。朴素贝叶斯基于 “每个单词的概率可以独立计算” 的假设,就是为了使概率的计算方法尽量简单。
7. 随机森林
随机森林的目标是利用多个决策树模型,获得比单个决策树更高的预测精度。
随机森林的多数表决就像找别人商量事情一样,不只听一个人的意见,而是在听取许多人的意见之后综合判断。机器学习也一样,通过创建多个模型,采取多数表决的方式,可以期待获得更为妥当的结果。
决策树是通过将训练数据按条件分支进行划分来解决分类问题的方法,在分割时利用了表示数据杂乱程度(或者不均衡程度)的不纯度的数值。决策树为了使表示数据杂乱程度的不纯度变小,对数据进行分割。
通过Bootstrap 方法 和 随机选取特征值 这两种方法,可以训练出具有多样性的决策树。
随机森林可以让我们知道每个特征对预测结果的重要度。
8. 神经网络
神经网络在输入数据和输出结果之间插入了中间层,能够学习复杂的决策边界。它既可以用于回归,也可以用于分类,但主要还是应用于分类问题。
神经网络通过设置中间层的方式,可以利用单一算法学习各种决策边界。通过调节中间层的数量及层的深度,神经网络可以学习更复杂的边界。
但是,神经网络模型变得复杂之后,容易过拟合,我们可以使用 E a r l y S t o p p i n g Early{\,}StoppingEarlyStopping(早停法) 的方法防止过拟合。E a r l y S t o p p i n g Early{\,}StoppingEarlyStopping 进一步划分训练数据,将其中一部分作为训练中的评估数据。在训练过程中使用评估数据,依次记录损失等评估指标,以了解训练的进度。在训练过程中,如果评估数据的损失开始恶化,开始出现过拟合的趋势,就停止训练,结束学习。
9. KNN
KNN(K-Nearest Neighbor)算法是一种与众不同的机器学习算法,它只是机械地记住所有的数据。KNN 既可以用于分类,也可以用于回归。
相较于其他算法要经历 “根据训练数据计算最佳参数” 的训练阶段和 “使用计算出的学习参数进行预测” 的预测阶段,KNN 在训练阶段不进行任何计算,直到进入预测阶段之后才进行具体的计算。
算法使用训练数据对未知输入数据进行分类时的步骤如下:
- 计算输入数据与训练数据之间的距离。
- 得到距离输入数据最近的 k 个训练数据。
- 对训练数据的标签进行多数表决,将结果作为分类结果。
最近邻点 K 的数量是一个超参数。在二元分类时,通常取 k 为奇数,这样多数表决才能决定结果是其中的哪一个。
当数据量较小或维度较小时,KNN 的效果很好,但是当数据量较大或维度较大时,建议考虑其他方法。
数据量较大时,由于要处理大量的训练数据,所以分类将变慢。这是由于在对未知数据进行分类时,KNN 需要在大量的训练数据上进行近邻搜索以找到最近的点。这就意味着需要同时存储大量的训练数据,也就意味着需要存储容量。为了高效地进行近邻搜索,人们经常借助于利用树结构存储训练数据的技术,但一般来说 KNN 不适合处理大规模的训练数据。
KNN 起作用的前提是 只要拥有的训练数据多,就能在未知数据的附近发现训练数据 这一假设。但对于高维数据来说,这个假设不一定成立。
无监督学习
指对不带任何标签的数据特征进行建模,通常被看成是一种“让数据自己介绍自己” 的过程。
这类模型包括「聚类」(clustering)任务和「降维」(dimensionality reduction)任务。
聚类算法可以将数据分成不同的组别,而降维算法追求用更简洁的方式表现数据。
聚类算法(Cluster Analysis):聚类算法是将数据集分成若干个互不相交的子集,每个子集被称为一个簇。常用的聚类算法有K-Means、层次聚类、DBSCAN等。
降维算法(Dimensionality Reduction):降维算法是将高维数据映射到低维空间的过程,以便更好地进行可视化或者加快计算速度。常用的降维算法有主成分分析(PCA)、独立成分分析(ICA)等。
关联规则挖掘算法(Association Rule Mining):关联规则挖掘算法是一种基于频繁项集的算法,通过挖掘数据集中项之间的关联关系,来发现有趣的规则。常用的关联规则挖掘算法有Apriori、FP-Growth等。
自组织映射算法(Self-Organizing Maps,SOM):自组织映射算法是一种基于神经网络的无监督学习算法,可以将高维数据映射到二维平面上,从而进行可视化。SOM算法常用于图像处理、文本分类等领域。
概率图模型算法(Probabilistic Graphical Model):概率图模型是一种描述变量间关系的图结构,在图中节点表示变量,边表示变量之间的关系。常用的概率图模型算法有朴素贝叶斯、隐马尔可夫模型(HMM)等。
独立成分分析算法(Independent Component Analysis,ICA):独立成分分析算法是一种将多个信号分解成独立成分的算法,常用于语音信号分离、脑电图信号分析等领域。
半监督学习
另外,还有一种半监督学习(semi-supervised learning)方法,介于有监督学习和无监督学习之间。通常可以在数据不完整时使用。
1、生成模型算法(Generate semi-supervised models)
思想如下:假设一个模型,其分布满足:p(x ,y)=p(y) p(x | y)。其中,p(x | y)是已知的条件概率分布。那么大量未经标记数据的联合分布就可以被确定。生成模型算法的流程图如下。
半监督学习方法可以对同时含有已标记的和未标记的数据集进行聚类,然后通过聚类结果中,每一类中所含有的任何一个已标记数据实例来确定该聚类全体的标签。
更进一步的,考虑聚类算法可能存在误差。我们对聚类结果(某个分类)中未标记的的标记需要更加慎重。这个时候可以考虑表决法,根据聚类结果中某已标记分类的样本多少来决定是否“感染”,也就是否未未标记样本进行标记。而处在聚类边缘的样本,可以考虑通过其他算法完成标记。这样可以保证情报收集过程中小样本标记工作更高的准确性。
2、自训练算法(Self-training)
思想如下:首先训练带有标记的数据(这一步也可以理解为监督训练),得到一个分类器。然后我们就可以使用这个分类器对未标识的数据进行分类。根据分类结果,我们将可信程度较高的未标记数据及其预测标记加入训练集,扩充训练集规模,重新学习以得到新的分类器。
3、联合训练(Co-training)
思想如下:首先我们需要根据已标记数据的两组不同特征来划分出不同的两个数据集,然后根据这两个不同的数据集分别训练出两个分类器。每个分类器用于无标识的数据集的分类,并且给出分类可信程度的概率值。流程图如下:
事实上,不同分类器可以给出不同的概率值。概率值高低分类加入数据集,然后进而影响每个判别器的重新生成,逐步提升判别器泛化能力。
4. 半监督支持向量机(S3VMs)
半监督支持向量机(Semi-supervised support vector machines,S3VM或S3VMs)是由直推学习支持向量机(Transductive Support Vector Machines, TSVM)变化而来。S3VM算法同时使用带有标记和不带标记的数据来寻找一个拥有最大类间距的分类面。
上图则为S3VM的示意图。其中实心图形(原形、正方形)代表已标记数据,而空心图形代表为标识数据。和支持向量机的组成原理类似,分类面的生成一样使用了最大-最小理论,S3VM的判别面生成依据下式:
w用于控制模型复杂性(分类面的维度)。
↑↑ 两个多项式项依次代表了标记数据和未标记数据的损失。
↑↑ 代表已标记的数据和未标记的数据均拥有很大的间距。
为了约束平衡,我们规定:
式子的目的在于确认一个用于分类面的向量w,它满足最低损失条件和其他约束条件。定义B为先验知识的前提下,S3VM分类器界面如下:
S3VMs处于混合整数程序中,通常难以处理。通常用于文本分类,邮件分类,图像分类以及生物医疗和命名实体分别等情景。
5.基于图论的方法
基于图论的方法思想:首先从训练样本中构建图。图的顶点是已标记或者未标记的训练样本。两个顶点xi,xj之间的无向边表示两个样本的相似性,又称两个样本的相似性度量。根据图中的度量关系和相似程度,构造k-聚类图。然后再根据已标记的数据信息去标记为未标记数据。算法流程图如下
强化学习
强化学习不同于监督学习,它将学习看作是试探评价过程,以"试错" 的方式进行学习,并与环境进行交互已获得奖惩指导行为,以其作为评价。
此时系统靠自身的状态和动作进行学习,从而改进行动方案以适应环境。
-
Q-learning:基于值函数的强化学习算法,通过学习最优策略来最大化累积奖励。
-
SARSA:基于值函数的强化学习算法,与Q-learning类似,但是它采用了一种更加保守的策略,即在当前状态下采取的动作。
-
DQN:深度强化学习算法,使用神经网络来估计值函数,通过反向传播算法来更新网络参数。
-
A3C:异步优势演员-评论家算法,结合了演员-评论家算法和异步更新的思想,可以在多个并发环境中学习。
-
TRPO:相对策略优化算法,通过限制策略更新的步长来保证策略的稳定性。
-
PPO:近似策略优化算法,通过使用一种近似的目标函数来更新策略,可以在保证稳定性的同时提高学习效率。
-
SAC:软策略优化算法,通过最大化熵来鼓励探索,可以在复杂环境中学习更加鲁棒的策略。