本章展示了几种概念学习算法,并讨论了这些算法能收敛到正确假设的条件。这里还分析了归纳学习的本质以及任意程序能从训练数据中泛华的理由。
2.1概念学习:
从有关某个布尔函数的输入输出训练样例中推断出该布尔函数
2.2概念学习任务:
实例的集合、实例集合上的目标函数、候选假设的集合以及训练样例的集合。
术语定义:
实例集合:X
待学习的概念或函数成为目标概念:c
训练样例:每个样例X中的一个实例x,以及它的目标概念值c(x);c(x) = 1为正例,c(x) = 0为反例
训练样例的集合:D
假设函数:h
归纳学习假设:
机器学习的任务是在整个实例集合X上确定与目标概念c相同的假设h,然而我们对于c仅有的信息只是它在训练样例上的值。
因此归纳学习算法最多只能保证输出的假设能与训练样例相拟合。
如果没有更多的信息,我们只能假定,对于未见实例最好的假设就是与训练数据最佳拟合的假设。
在后面5、6、7章节将更形式地和定量地审定和分析这一假定:
《 任意假设如果在足够大的训练样例集中很好地逼近目标函数,它也能在未见实例中很好地逼近目标函数 》
2.3作为搜索的概念学习:
概念学习可以看做是一个搜索的过程,范围是假设的表示所隐含定义的整个空间。
搜索的目标是为了寻找最好地拟合训练样例的假设。
必须注意到,当假设的表示形式选定后,那么也就隐含地为学习算法确定了所有假设的空间。
这些假设是学习程序所能表示的,也是它能够学习的。
假设的一般到特殊序:
许多概念学习算法中,搜索假设空间的方法依赖于一种针对任意概念学习都很有效的结构:假设的一般到特殊序关系。
利用假设空间的这种自然结构,我们可以在无限的假设空间中进行彻底的搜索,而不需要明确地列举所有的假设。
首先,对X中的任意实例x和H中的任意假设h,我们说当且仅当h(x)=1时x满足h。
令hj和hk为在X上定义的布尔函数。称hj更一般(hj >=g hk),当且仅当
(对于任意的 x 属于X),hk(x) = 1 -> hj(x) = 1
2.4FIND-S算法:寻找极大特殊假设
####################################################################
def find_s():
x1 = [ 'sunny', 'warm', 'nurmal', 'strong', 'warm', 'same' , 1 ]
x2 = [ 'sunny', 'warm', 'high', 'strong', 'warm', 'same' , 1 ]
x3 = [ 'rainy', 'cold', 'high', 'strong', 'warm', 'change', 0 ]
x4 = [ 'sunny', 'warm', 'high', 'strong', 'cool', 'change', 1 ]
h = [ None, None, None,
2.1概念学习:
从有关某个布尔函数的输入输出训练样例中推断出该布尔函数
2.2概念学习任务:
实例的集合、实例集合上的目标函数、候选假设的集合以及训练样例的集合。
术语定义:
实例集合:X
待学习的概念或函数成为目标概念:c
训练样例:每个样例X中的一个实例x,以及它的目标概念值c(x);c(x) = 1为正例,c(x) = 0为反例
训练样例的集合:D
假设函数:h
归纳学习假设:
机器学习的任务是在整个实例集合X上确定与目标概念c相同的假设h,然而我们对于c仅有的信息只是它在训练样例上的值。
因此归纳学习算法最多只能保证输出的假设能与训练样例相拟合。
如果没有更多的信息,我们只能假定,对于未见实例最好的假设就是与训练数据最佳拟合的假设。
在后面5、6、7章节将更形式地和定量地审定和分析这一假定:
《 任意假设如果在足够大的训练样例集中很好地逼近目标函数,它也能在未见实例中很好地逼近目标函数 》
2.3作为搜索的概念学习:
概念学习可以看做是一个搜索的过程,范围是假设的表示所隐含定义的整个空间。
搜索的目标是为了寻找最好地拟合训练样例的假设。
必须注意到,当假设的表示形式选定后,那么也就隐含地为学习算法确定了所有假设的空间。
这些假设是学习程序所能表示的,也是它能够学习的。
假设的一般到特殊序:
许多概念学习算法中,搜索假设空间的方法依赖于一种针对任意概念学习都很有效的结构:假设的一般到特殊序关系。
利用假设空间的这种自然结构,我们可以在无限的假设空间中进行彻底的搜索,而不需要明确地列举所有的假设。
首先,对X中的任意实例x和H中的任意假设h,我们说当且仅当h(x)=1时x满足h。
令hj和hk为在X上定义的布尔函数。称hj更一般(hj >=g hk),当且仅当
(对于任意的 x 属于X),hk(x) = 1 -> hj(x) = 1
2.4FIND-S算法:寻找极大特殊假设
####################################################################
def find_s():
x1 = [ 'sunny', 'warm', 'nurmal', 'strong', 'warm', 'same' , 1 ]
x2 = [ 'sunny', 'warm', 'high', 'strong', 'warm', 'same' , 1 ]
x3 = [ 'rainy', 'cold', 'high', 'strong', 'warm', 'change', 0 ]
x4 = [ 'sunny', 'warm', 'high', 'strong', 'cool', 'change', 1 ]
h = [ None, None, None,