机器学习中的有监督学习,无监督学习,半监督学习的区别

el/2024/7/17 22:34:30

在机器学习(Machine learning)领域,主要有三类不同的学习方法:

监督学习(Supervised learning)、

非监督学习(Unsupervised learning)、

半监督学习(Semi-supervised learning),


监督学习:通过已有的一部分输入数据与输出数据之间的对应关系,生成一个函数,将输入映射到合适的输出,例如分类。 

非监督学习:直接对输入数据集进行建模,例如聚类。 

半监督学习:综合利用有类标的数据和没有类标的数据,来生成合适的分类函数。

一、 监督学习

1、监督式学习(Supervised learning),是一个机器学习中的方法,可以由训练资料学到或建立一个模式( learning model),并依此模式推测新的实例。训练资料是由输入物件(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。 
    2、一个监督式学习者的任务在观察完一些训练范例(输入和预期输出)后,去预测这个函数对任何可能出现的输入的值的输出。要达到此目的,学习者必须以"合理"(见归纳偏向)的方式从现有的资料中一般化到非观察到的情况。在人类和动物感知中,则通常被称为概念学习(concept learning)。 

3、监督式学习有两种形态的模型。最一般的,监督式学习产生一个全域模型,会将输入物件对应到预期输出。而另一种,则是将这种对应实作在一个区域模型。(如案例推论及最近邻居法)。为了解决一个给定的监督式学习的问题(手写辨识),必须考虑以下步骤: 
1)决定训练资料的范例的形态。在做其它事前,工程师应决定要使用哪种资料为范例。譬如,可能是一个手写字符,或一整个手写的词汇,或一行手写文字。 
2)搜集训练资料。这资料须要具有真实世界的特征。所以,可以由人类专家或(机器或传感器的)测量中得到输入物件和其相对应输出。 
3)决定学习函数的输入特征的表示法。学习函数的准确度与输入的物件如何表示是有很大的关联度。传统上,输入的物件会被转成一个特征向量,包含了许多关于描述物件的特征。因为维数灾难的关系,特征的个数不宜太多,但也要足够大,才能准确的预测输出。 
4)决定要学习的函数和其对应的学习算法所使用的数据结构。譬如,工程师可能选择人工神经网络和决策树。 
5)完成设计。工程师接着在搜集到的资料上跑学习算法。可以借由将资料跑在资料的子集(称为验证集)或交叉验证(cross-validation)上来调整学习算法的参数。参数调整后,算法可以运行在不同于训练集的测试集上 
另外对于监督式学习所使用的词汇则是分类。现著有著各式的分类器,各自都有强项或弱项。分类器的表现很大程度上地跟要被分类的资料特性有关。并没有某一单一分类器可以在所有给定的问题上都表现最好,这被称为‘天下没有白吃的午餐理论’。各式的经验法则被用来比较分类器的表现及寻找会决定分类器表现的资料特性。决定适合某一问题的分类器仍旧是一项艺术,而非科学。 
目前最广泛被使用的分类器有 人工神经网络、支持向量机、最近邻居法、高斯混合模型、朴素贝叶斯方法、决策树和径向基函数分类 。

二、 无监督式学习

1、无监督式学习(Unsupervised Learning )是人工智能网络的一种算法(algorithm),其目的是去对原始资料进行分类,以便了解资料内部结构。有别于监督式学习网络,无监督式学习网络在学习时并不知道其分类结果是否正确,亦即没有受到监督式增强(告诉它何种学习是正确的)。其特点是仅对此种网络提供输入范例,而它会自动从这些范例中找出其潜在类别规则。当学习完毕并经测试后,也可以将之应用到新的案例上。

2、无监督学习里典型的例子就是聚类了。聚类的目的在于把相似的东西聚在一起,而我们并不关心这一类是什么。因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了。

三、半监督学习

1、半监督学习的基本思想是利用数据分布上的模型假设, 建立学习器对未标签样本进行标签。 
形式化描述为:给定一个来自某未知分布的样本集S=L∪U, 其中L 是已标签样本集L={(x1,y1),(x2,y2), … ,(x |L|,y|L|)}, U是一个未标签样本集U={x’1,x’2,…,x’|U|},希望得到函数f:X → Y可以准确地对样本x预测其标签y,这个函数可能是参数的,如最大似然法;可能是非参数的,如最邻近法、神经网络法、支持向量机法等;也可能是非数值的,如决策树分类。其中, x与x’  均为d 维向量, yi∈Y 为样本x i 的标签, |L| 和|U| 分别为L 和U 的大小, 即所包含的样本数。半监督学习就是在样本集S 上寻找最优的学习器。如何综合利用已标签样例和未标签样例,是半监督学习需要解决的问题。

2、半监督学习问题从样本的角度而言是利用少量标注样本和大量未标注样本进行机器学习,从概率学习角度可理解为研究如何利用训练样本的输入边缘概率 P( x )和条件输出概率P ( y | x )的联系设计具有良好性能的分类器。这种联系的存在是建立在某些假设的基础上的,即聚类假设(cluster  assumption)和流形假设(maniford assumption)。




http://www.ngui.cc/el/5557070.html

相关文章

B树、B-树、B+树、B*树 ---浅层次讲解

B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: …

Linux进程管理之“四大名捕”ps、dstat、top、htop

一、四大名捕 四大名捕,最初出现于温瑞安创作的武侠小说,是朝廷中正义力量诸葛小花的四大徒弟,四人各怀绝技,分别是轻功暗器高手“无情”、内功卓越的高手“铁手”、腿功惊人的“追命”和剑法一流的“冷血” 本文四大名捕由linux命…

系统级性能分析工具 — Perf详解讲解

从2.6.31内核开始,Linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找。通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题 (per thread)&…

hdfs:error Initialization failed for block pool Block pool registering service

一、执行start-dfs.sh后&#xff0c;datenode没有启动 查看日志如下&#xff1a;   2014-06-18 20:34:59,622 FATAL org.apache.Hadoop.hdfs.server.datanode.DataNode: Initialization failed for block pool Block pool <registering> (Datanode Uuid unassigned) se…

CentOS 开启关闭防火墙

CentOS 6: 1&#xff09; 永久性生效&#xff0c;重启后不会复原 开启&#xff1a; chkconfig iptables on 关闭&#xff1a; chkconfig iptables off 2&#xff09; 即时生效&#xff0c;重启后复原 service iptables status 查看防火墙状态 service iptables …

lxc如何修改配置参数

Linux 容器的资源管理 https://www.ibm.com/developerworks/cn/linux/1404_caojh_lxc/

Linux Container(LXC容器)基本命令使用简介

lxc能做什么: 可以为容器绑定特定的cpu和memory&#xff0c;分配特定比例的cpu时间、IO时间&#xff0c;限制可以使用的内存大小&#xff08;包括内存和swap空间&#xff09;&#xff0c;提供device访问控制&#xff0c;提供独立的namespace&#xff08;网络、pid、ipc、mnt、u…

perf stat 输出解读

perf stat 输出解读 原文链接&#xff1a;http://zhengheng.me/2015/11/12/perf-stat/ task-clock&#xff1a;用于执行程序的CPU时间&#xff0c;单位是ms(毫秒)。第二列中的CPU utillized则是指这个进程在运行perf的这段时间内的CPU利用率&#xff0c;该数值是由task-clock除…

centos的SSH远程连接服务慢的解决方法

连接慢的主要原因是DNS解析导致 解决方法&#xff1a; 1、在ssh服务端上更改/etc/ssh/sshd_config文件中的配置为如下内容&#xff1a; UseDNS no # GSSAPI options GSSAPIAuthentication no 然后&#xff0c;执行/etc/init.d/sshd restart重启sshd进程使上述配置生效&#xff…

java字符串处理常用函数(数字型和字符串转换,字符串拆分、查找、截取)

一、字符串转化成数字型 String s "123.456 "; //要确保字符串为一个数值&#xff0c;否则会出异常 double d Double.parseDouble(s); float f Float.parseFloat(s); String s "123 "; int i Integer.parseInt(s); 二、…