Advertisement

有监督学习、无监督学习、半监督学习有什么区别?分别有哪些代表算法?

阅读量:

有监督学习、无监督学习与半监督学习是机器学习中的三大核心框架。有监督学习利用带有标签的数据训练模型;无监督学习完全依赖未标记数据进行模式识别;而半监督学习结合了两者的优势,在一定程度上标注数据以提高准确性的同时降低标注成本。从算法角度来看,有 supervision 学习包括朴素贝叶斯、决策树(如 ID3 和 C4.5)、随机森林等;无 supervision 学习涉及 K-means 聚类、层次聚类等;半 supervision 学习则融合了少量标注数据与大量未标注数据进行训练(如自训练算法)。三种方法各有优劣:有 supervision 学习精度高但成本高;无 supervision 学习成本低但效果受限;半 supervision 学习介于两者之间,在实际应用中尤为重要(尤其是标注数据获取困难的情况下)。

一、有监督学习、无监督学习、半监督学习的区别

有监督学习、无监督学习、半监督学习的概念是简单明了的,基本上与字面含义完全一致,并基于是否带有标签来进行分类。

1. 有监督学习

监督学习被称为基于标注过的训练数据进行分析和建模的任务...其过程包括通过优化分类器参数以实现预期性能的目标...在这些情况下...使用经过标注的数据,并使计算机能够识别其中的关系。

2. 无监督学习

现实生活中普遍存在的问题是缺少相关的先验知识,这使得人工进行类别标注变得困难且费用过高.理所应当地希望计算机能够协助执行这些任务,并为它们提供辅助支持.对于未加标记的训练样本,在模式识别领域中解决各种相关问题的方法被称为无监督学习.

3. 半监督学习

半监督学习(Semi-Supervised Learning, SSL)被视为模式识别与机器学习领域中的一个重点研究课题。它作为一种结合了监督学习与无监督学习的学习方法,在实际应用中展现出显著的优势。具体而言,在进行模式识别时,该方法不仅充分利用了大量未标注的数据资源,并且巧妙地结合了有限的标注数据进行训练。这样一来,在应用该方法时通常能够显著减少所需的人力投入的同时又能保证较高的识别精度水平;因此,在当前的研究和实践中该方法逐渐受到广泛关注并展现出重要的应用价值。

二、有监督学习、无监督学习、半监督学习的代表算法

1. 有监督学习

(1)朴素贝叶斯算法

该算法通过概率关系评估标签与特征间的联系,并作为监督学习方法具备广泛的应用潜力。既能应用于回归分析也能用于分类任务,在实际应用中对分类问题的关注度更高。其核心原理基于贝叶斯定理的概率统计方法。

(2)决策树&随机森林

该决策树构建算法主要包括ID3、C4.5以及C5.0等方法。作为一种典型的层次结构模型,在该决策树中,每一个内部节点对应于某个属性的具体判断;每一个分支则对应于特定条件下的结果输出;而每一个叶子节点则对应于某一种分类结果。

随机森林是一种以决策树为基础的学习器的集成学习算法。若用于分类任务,则通过投票机制进行预测;若用于回归任务,则取预测结果的平均值作为最终输出。

(3)Logistic Regression 和 Linear Regression

逻辑回归属于分类模型这一领域,在统计学中有着重要的地位;而线性回归则是一种经典的统计分析方法,在预测连续型变量方面具有广泛的应用;从原理上来说,在某些条件下两者具有一定的相似性;具体而言,在线性回归的基础上引入了Sigmoid函数这一关键步骤就可以得到逻辑回归模型

(4)Xgboost

XGBoost的官方名称被称为Extreme Gradient Boosting( Extreme Gradient Boosting)。它是一个经过优化设计的分布式梯度提升框架,在实现高效的计算性能、高度灵活的设计以及良好的跨平台兼容性方面具有显著优势。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Obj分数越小,代表树的结构越好。这些公式理解起来是非常繁琐的,简而言之,xgboost的原理是在决策树的基础上,一棵一棵地添加决策树,由多棵决策树共同来分类,每次添加决策树时尽可能保证性能在提升,采用的是集成学习的思想,多个弱分类器组成一个强分类器。实际上,不理解公式也不影响,现在Xgboost已经开源了封装好的python库,直接调用即可。下面举一个例子:

复制代码
    import xgboost
    from numpy import loadtxt
    from xgboost import XGBClassifier
    from sklearn.model_selection import train_test_split
    from sklearn.metrics import accuracy_score
    
    dataset = loadtxt('./data/pima-indians-diabetes.csv', delimiter=',')
    # 提取特征和标签
    X = dataset[:, 0:8]
    Y = dataset[:, 8]
    
    seed = 7
    test_size = 0.33
    X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size = test_size, random_state=seed)
    
    model = XGBClassifier()
    eval_set = [(X_test, y_test)]
    # 连续10次没有提升终止算法(收敛)
    model.fit(X_train, y_train, early_stopping_rounds=10, eval_metric='logloss', eval_set=eval_set, verbose=True)
    
    y_pred = model.predict(X_test)
    predictions = [round(value) for value in y_pred]
    
    accuracy = accuracy_score(y_test, predictions)
    print('Accuracy: %.2f%%' %(accuracy * 100.0))

数据集可从上述链接下载:`
此外需要指出的是 GBDT 算法属于监督学习范畴

(5)KNN(K近邻)

KNN既可以被视为分类问题也可以被视为聚类问题。值得注意的是虽然现在大家普遍认为KNN属于有监督学习但这种观点并非毫无争议因为从本质上讲该算法并不包含真正意义上的学习过程然而在执行过程中确实需要带标签的数据因此在某些情况下人们也会将其归类为有监督学习的一种方法

(7)SVM

(8)神经网络

在监督学习领域中,神经网络模型无疑是最为卓越的代表,在这种算法中需要以预测值与真实值(label)为基础构建损失函数以实现迭代优化。

2. 无监督学习(聚类)

在无监督学习领域中,聚类被视为一个典型的应用案例。其主要目标在于将具有相似特征的数据点归为一类,在此过程中,我们并不关注具体该类别代表什么意义。这表明,在实际应用中,只要能够定义数据间的相似性度量方法即可启动聚类过程。

从分类方法的角度来看,在实际应用中通常会遇到两种主要类型的划分方法:一种是基于划分的策略(Partitioning-based),另一种是基于层次化的策略(Hierarchical-based)。基于划分策略的方法需要预先指定类别数目K作为输入参数,并通过优化特定的目标函数来进行数据集的分割操作。

其中最具代表性的划分方法包括以下几种:首先是经典的K-means算法(K-Means Algorithm),其次是有抗噪声能力的K-medoids算法(K-Medoids Algorithm)[1]以及改进型的CLARANS算法(CLARANS Algorithm)。这些方法的主要优势在于计算效率较高且实现相对简单易懂。

另一方面,在层次化策略的基础上发展起来的方法则具有更强的学习能力与适应性特点[2]。这类方法通过递归地构建嵌套式的子簇结构来实现对数据的不同粒度级别的抽象与归纳能力,在一定程度上克服了传统划分式方法对初始参数敏感的问题。然而由于这种方法需要人工设定终止条件以决定最终分类粒度水平[3]这一显著缺点限制了其在某些复杂场景下的应用效果

主流的无监督学习算法还包括主成分分析方法(即PCA)等。具体而言,该领域中采用了多种降维技术以处理高维数据问题。其中较为著名的包括isometric mapping、local linear embedding (LLE)、Laplacian eigenmaps、 黑塞局部线性嵌入(Hessian locally linear embedding, HLLE)以及local tangent space alignment (LTSA)等多种方法。这些技术在数据降维和非监督学习中发挥着重要作用。

目前深度学习中的无监督学习主要分为两种类型:一种是基于确定性的自编码器技术及其优化版本;另一种是基于概率型的受限玻尔兹曼机及其优化版本。前者的主要目标是从抽象后的数据中尽可能无损地还原出原始的数据;后者的主要目标则是使受限玻尔兹曼机达到稳定状态下原始数据呈现最高概率。

3. 半监督学习

(1)自训练算法

在监督学习过程中,在线可调参数的优化是关键问题之一。基于此,在线可调参数的最优解可以通过求解凸优化问题获得。这一过程生成一个凸优化问题,并通过求解该问题获得最优解向量w*和b*。这些参数能够使判别函数达到最小化损失函数的目的。

在这里插入图片描述
Co-Training(1998),Tri-Training(2005),Co-forest(2007),其中,后两种都是周志华提出的。

(2)半监督支持向量机

The semi-supervised support vector machine (S3VM, often abbreviated as S3VM) extends the traditional support vector machine into the realm of semi-supervised learning.

当忽略未标记样本时,支持向量机旨在确定最大间隔分类器;而当纳入未标记样本后,S3VM寻求一种能够分离两类有标签数据并穿越数据稀疏区域的分类器。这一核心假设即'低密度分隔'(low-density separation),显然这是将聚类方法应用于线性可分情况后的自然延伸。

在这里插入图片描述

(3)Semi-supervised GANs ; Semi-supervised VAEs;部分GNN;SimCLRv2等

这些都是很多paper中提出的,无法一一列举,如果有需要请留言~

三、总结

有监督学习、无监督学习以及半监督学习的任务划分主要取决于是否存在标签数据。具体而言,在存在标签数据的条件下完成的学习任务属于有监督学习范畴;而完全脱离标签数据进行的学习任务则属于无监督学习范畴;当一部分标签数据缺失或者无法获取时,则被视为半监督学习任务。在实际研究中发现,在科研项目中由于各种原因导致部分标签难以获得的情况十分普遍,并且这也成为当前学术界关注的重点研究方向之一。

全部评论 (0)

还没有任何评论哟~