学学机器学习……
概念学习的定义
-
概念(Concept):
每个概念可被看作一个大集合下的子集。例如:在人类集合中, 中国人这个子集可被视为一个概念。概念还可被看作是一个布尔函 数,例如,IsChinese()这个布尔函数它对所有中国人返回True,其 他人返回False
-
概念学习(Concept Learning):
“Inferring a boolean-valued function from training examples of its input and output. ” —— Tom M.Mitchell 简单翻译一下: 概念学习就是从有关某个布尔函数的输入输出的训练集中,推测出 这个布尔函数。 例如: 我们有训练集 Training Examples:<非洲人,False>,<美国人,False>,<亚洲人,True>,<欧洲人,False>, <南极人,False> 对此训练集进行概念学习后,学习器会给我们几个假设h的集合H, 其中,h(x) = IsAsian(x)是我们的一个假设,它表示: 对所有亚洲人返回True,其余返回False
实例空间
听起来高大上哈,其实没什么
实例空间有多简单呢?
举个例子,如果我们想要预测一个人是否肥胖,假如有3个评判指标:
身高,体重,三围
这三个评判指标的取值如下:
身高:矮,偏矮,中等,偏高,高
体重:轻,偏轻,中等,偏重,重
三围:差,好(对不起,实在不知道该怎么编了)
那么这个实例空间的大小就为:
5*5*2=50
即,取遍“身高,体重,三围”的所有组合情况:
<矮,轻,差>
<矮,中等,差>
……
目标概念
目标概念实际上就是一个布尔函数。例如我们之前提到的IsChinese()。
不过,为了方便抽象描述,我们常常将目标概念布尔函数记为c。
正例
c(x)=True,就是正例
反例
c(x)=false,就是反例
训练样例的表示
知道了目标概念的概念,又知道了实例空间,那我们来看看如何表示训练样例
训练样例的表示可由一个序偶对<x,c(x)>完成。其中x是一个训练样本,
c(x)表明x是否属于概念c。例如:
x = 中国人 and 日本人 and 美国人
c(x) = false
则这个训练样例可表示为
<中国人 and 日本人 and 美国人,c(中国人 and 日本人 and 美国人)>
假设空间
我们知道,概念学习的目的就是去学这个c,看看它到底是什么。那么我们就需要一堆假设。这些假设的集合也就构成了假设空间
我们来看看Tom老先生是如何定义假设空间的:
"We use the symbol H to denote the set of all possible hypotheses
that the learner may consider regarding the identity of the target
concept." —— Tom M.Mitchell
简单翻译一下:
“我们用符号 H 来表示学习器所有可能的假设的集合,这个集合是考虑目标概念的
范围”
哦,我们知道了H是所有可能假设的集合,那么每个“假设”又如何定义呢?
事实上,我们不妨记这些“假设”为h,那么h应该也是一个定义在实例空间上的布尔
函数,它与c的定义无二。我们最终的目的便是找到这么几个h,它们能够使得
c(x) = h(x)对每一个x属于训练样例均成立。
偏置(Bias)
归纳偏置是什么?好高级
偏置高级吗?
其实并不高级。
我们把偏置分成两个部分来看:
“偏”和“置”。
偏指偏向一部分,置表明闲置一部分。
进一步的,偏置在机器学习中就是说我们仅取“全”假设空间的“一部分”作为假设空间。
例如,某个全假设空间为
H={a,b,c,d,e,f}
然而,我们在进行学习的时候,仅用H'作为假设空间,其中H'为
H'={a,d,f}
这就是“偏置(bias)”
后记
事实上,概念学习部分只要弄清楚了这几个空间,弄清楚了这些符号背后的含义,后面的内容看起来就不费力了,例如什么
find-s算法,
List-then算法,
candidate-elimination算法
另外,博主Deadpool推荐大家千万不要为了概念而记概念。概念是人抽象出来的。这意味着什么呢?
这意味着先有现象,才有概念。对于这个“概念学习”来说,我们为什么要有定义,这仅仅是为了描述方便且严谨。但是对于学生来说,特别是中国学生来说——因为我们常常先将概念,再讲现象,这会导致我们学习时走不少弯路——不过学习不就是这样吗,误打误撞,最后摸清楚规律,哈哈,今天就先这样了。