贝叶斯信念网络
这个贝叶斯信念网络和上一章学的朴素贝叶斯分类,最大的不同点在于:
假定类条件独立,即给定元组的类标号,假定属性的值可以条件地相互独立。这一假定简化了计算。
允许在变量的子集间定义独立性。他提供一种因果关系的图形模型可以在其上进行学习。训练后的贝叶斯信念网络可以用于分类。
如下图所示:
那么,这样一个网络我们如何从训练集中学习到呢?
1、专家构成或数据导出
2、学习算法
给定网络拓扑,如何训练信念网络?
1、梯度下降算法(贪心爬山法)
用后向传播分类——一种神经网络学习算法
神经网络:
输入层、隐藏层、输出层
缺点:可解释性差、训练时间长
优点:对噪声数据的高承受能力、对未经训练的数据的模式分类能力
多层前馈神经网络
前馈:权重都不回送到输入单元、或前一层的输入单元
给定足够多的隐藏单元和足够的训练样本,多层前馈神经网络可以逼近任意函数
定义网络拓扑
如何设计网络拓扑?
在开始训练之前,用户必须确定网络拓扑,说明输入层的单元数、隐藏层数、每个隐藏层的单元数和输出单元数
对于最好的隐藏层单元数,没有明确的规则确定。网络设计是一个反复试验的过程,并可能影响结果训练网络的准确性。权重的初值也可能影响结果的准确性。
后向传播
通过迭代地处理训练元组数据集,把每个元组的网络预测与实际已知的目标值相比进行学习
对于每个训练样本,修改权重使得网络预测和实际目标值之间的均方误差最小。这种“修改”后向进行,由输出层----->隐藏层----->第一个隐藏层
初始化权重
向前传播输入
输入=权重×输出+偏倚
向后传播误差
通过更新权重和反映网络预测误差的偏倚,向后传播误差
终止条件
黑盒内部:后向传播和可解释性:网络提取规则、灵敏度分析
网络规则提取:先剪枝,再聚类,导出规则
灵敏度分析:评估一个给定的输入变量对网络输出的影响
支持向量机-SVM
SVM之前就有一些了解
线性可分
最大边缘超平面、支持向量
线性不可分
映射至高维空间、核函数降维计算。
使用频繁模式分类
关联分类:找出频繁模式,构建规则进行分类
关联规则挖掘:频繁模式挖掘和关联规则产生
支持度(support):P(A∪B),即A和B这两个项集在事务集D中同时出现的概率。
置信率(confidence):P(B|A),即在出现项集A的事务集D中,项集B也同时出现的概率。
CBA、CMAR和CPAR
CBA:基于分类的关联,迭代方法挖掘频繁项集
CBA(classification based on association)是基于关联规则发现方法的分类算法。该算法分两个步骤构造分类器。第一步:发现所有形如xi1∧x => Ci 的关联规则,即右部为类别属性值的类别关联规则(classification association rules,CAR)。第二步:从已发现的CAR中选择高优先度的规则来覆盖训练集,也就是说,如果有多条关联规则的左部相同,而右部为不同的类,则选择具有最高置信度的规则作为可能规则。文献[4]对该过程进行了较深入的研究,使得算法在此步骤不需要对训练数据集进行过多的扫描。
CBA算法的优点是其分类准确度较高,在许多数据集上比C4.5更精确。此外,上述两步都具有线性可伸缩性。
CMAR:基于多关联规则的分类,借助树结构进行有效的存储和检索规则,使用多种规则剪枝策略 根据类标号将规则进行分组
基于多维关联规则的分类算法CMAR(Classification Based on Multiple Class-Association Rules)是利用FP-Growth算法挖掘关联规则,建立类关联分布树FP-树。采用CR-树(Classification Rulc Trcc)结构有效地存储关联规则。基于置信度、相关性和数据库覆盖来剪枝。分类的具体执行采用加权厂来分析。与CBA和C 4.5相比,CMAR性能优异且伸缩性较好。但CMAR优先生成的是长规则,对数据库的覆盖效果较差;利用加权x统计量进行分类,会造成x统计量的失真,致使分类值的准确程度降低。
CPAR:基于预测关联规则的分类
CPAR(Classification Based on Predictive Association Rules)整合了关联规则分类和传统的基于规则分类的优点。为避免过度适合,在规则生成时采用贪心算法,这比产生所有候选项集的效率高;采用一种动态方法避免在规则生成时的重复计算;采用顶期精确性评价规则,并在预测时应用最优的规则,避免产生冗余的规则。另外,MSR(Minimnm Set Rule)针对基于关联规则分类算法中产生的关联规则集可能太大的问题,在分类中运用最小关联规则集。在此算法中,CARS并不是通过置信度首先排序,因为高置信度规则对噪声是很敏感的。采用早期剪枝力方法可减少关联规则的数量,并保证在最小集中没有不相关的规则。实验证实,MSR比C45和CBA的错误率要低得多。
基于有区别力的频繁模式分类
并不是所有的频繁模式都有很强的区别能力,也就是所并非所有频繁模式都是有用的
在构建分类模型时,除了单个特征外,把频繁模式看作组合特征。
基于有区别力的频繁模式分类一般框架:
惰性学习法(或从近邻学习)
KNN算法——基于距离
基于距离,排序之后,选择最近的元组的类标号作为分类的依据
基于案例的推理
使用一个存放问题解的数据库来求解新问题
首先检查是否存在一个同样的训练案例:
1、如果找到一个,则返回附在该案例上的解;
2、如果找不到同样的案例,则基于案例的推理搜索具有类似于新案例成份的训练案例。
其他分类方法
遗传算法
自然进化的思想
1、编码
2、定义祖先
3、后代通过使用诸如交叉和变异等遗传操作来创建。交叉:来自规则对的子串交换;变异:规则串中随机选择的位被反转
4、继续进化,直到拟合度阈值
优点:易于并行
参考资料:
粗糙集方法
发现不准确数据或噪声数据内的机构联系。用于离散值属性。
基于给定训练数据内部的等价类的建立。
定义两个结合的近似:上近似和下近似
模糊集方法
书上的例子不错:
关于分类的其他问题
多类分类
顾名思义,给两个以上的类分类:
1、1对所有:m个类,训练m个分类器,对每一个类学习一个分类器,得到类别最多的就是结果;
2、所有对所有:对每一对类学习一个分类器,构建m(m-1)/2
以上方案存在的问题:一个分类器出错,则它可能影响投票结果。怎么办?
纠错码。基于海明距离。即使个体二元分类器对给定的位置元组做出来错误的预测,我们仍然可以正确地标记该元组。
半监督分类
使用有类标号的数据和无类标号的数据构建分类器
自我训练
半监督分类最简单的形式,
1、首先对有标号的数据建立一个分类器
2、对无标号的数据加标号
协同训练
两个或多个分类器互教互学
主动学习
主动学习如何克服这种标号瓶颈?
为了克服尽可能少的有标号的实例来获得高准确率。
基于池的主动学习方法:
迁移学习
旨在从一个或多个源任务提取知识,并将这种知识用于目标任务。
在传统的机器学习的框架下,学习的任务就是在给定充分训练数据的基础上来学习一个分类模型;然后利用这个学习到的模型来对测试文档进行分类与预测。然而,我们看到机器学习算法在当前的Web挖掘研究中存在着一个关键的问题:一些新出现的领域中的大量训练数据非常难得到。我们看到Web应用领域的发展非常快速。大量新的领域不断涌现,从传统的新闻,到网页,到图片,再到博客、播客等等。传统的机器学习需要对每个领域都标定大量训练数据,这将会耗费大量的人力与物力。而没有大量的标注数据,会使得很多与学习相关研究与应用无法开展。其次,传统的机器学习假设训练数据与测试数据服从相同的数据分布。然而,在许多情况下,这种同分布假设并不满足。通常可能发生的情况如训练数据过期。这往往需要我们去重新标注大量的训练数据以满足我们训练的需要,但标注新数据是非常昂贵的,需要大量的人力与物力。从另外一个角度上看,如果我们有了大量的、在不同分布下的训练数据,完全丢弃这些数据也是非常浪费的。如何合理的利用这些数据就是迁移学习主要解决的问题。迁移学习可以从现有的数据中迁移知识,用来帮助将来的学习。迁移学习(Transfer Learning)的目标是将从一个环境中学到的知识用来帮助新环境中的学习任务。因此,迁移学习不会像传统机器学习那样作同分布假设。
我们在迁移学习方面的工作目前可以分为以下三个部分:同构空间下基于实例的迁移学习,同构空间下基于特征的迁移学习与异构空间下的迁移学习。我们的研究指出,基于实例的迁移学习有更强的知识迁移能力,基于特征的迁移学习具有更广泛的知识迁移能力,而异构空间的迁移具有广泛的学习与扩展能力。这几种方法各有千秋。
1.同构空间下基于实例的迁移学习
基于实例的迁移学习的基本思想是,尽管辅助训练数据和源训练数据或多或少会有些不同,但是辅助训练数据中应该还是会存在一部分比较适合用来训练一个有效的分类模型,并且适应测试数据。于是,我们的目标就是从辅助训练数据中找出那些适合测试数据的实例,并将这些实例迁移到源训练数据的学习中去。在基于实例的迁移学习方面,我们推广了传统的AdaBoost算法,提出一种具有迁移能力的boosting算法:Tradaboosting [9],使之具有迁移学习的能力,从而能够最大限度的利用辅助训练数据来帮助目标的分类。我们的关键想法是,利用boosting的技术来过滤掉辅助数据中那些与源训练数据最不像的数据。
其中,boosting的作用是建立一种自动调整权重的机制,于是重要的辅助训练数据的权重将会增加,不重要的辅助训练数据的权重将会减小。调整权重之后,这些带权重的辅助训练数据将会作为额外的训练数据,与源训练数据一起从来提高分类模型的可靠度。
基于实例的迁移学习只能发生在源数据与辅助数据非常相近的情况下。但是,当源数据和辅助数据差别比较大的时候,基于实例的迁移学习算法往往很难找到可以迁移的知识。但是我们发现,即便有时源数据与目标数据在实例层面上并没有共享一些公共的知识,它们可能会在特征层面上有一些交集。因此我们研究了基于特征的迁移学习,它讨论的是如何利用特征层面上公共的知识进行学习的问题。
2.同构空间下基于特征的迁移学习
在基于特征的迁移学习研究方面,我们提出了多种学习的算法,如CoCC算法[7],TPLSA算法[4],谱分析算法[2]与自学习算法[3]等。其中利用互聚类算法产生一个公共的特征表示,从而帮助学习算法。我们的基本思想是使用互聚类算法同时对源数据与辅助数据进行聚类,得到一个共同的特征表示,这个新的特征表示优于只基于源数据的特征表示。通过把源数据表示在这个新的空间里,以实现迁移学习。应用这个思想,我们提出了基于特征的有监督迁移学习与基于特征的无监督迁移学习。
2.1 基于特征的有监督迁移学习
我们在基于特征的有监督迁移学习方面的工作是基于互聚类的跨领域分类[7],这个工作考虑的问题是:当给定一个新的、不同的领域,标注数据及其稀少时,如何利用原有领域中含有的大量标注数据进行迁移学习的问题。在基于互聚类的跨领域分类这个工作中,我们为跨领域分类问题定义了一个统一的信息论形式化公式,其中基于互聚类的分类问题的转化成对目标函数的最优化问题。在我们提出的模型中,目标函数被定义为源数据实例,公共特征空间与辅助数据实例间互信息的损失。
2.2 基于特征的无监督迁移学习:自学习聚类
我们提出的自学习聚类算法[3]属于基于特征的无监督迁移学习方面的工作。这里我们考虑的问题是:现实中可能有标记的辅助数据都难以得到,在这种情况下如何利用大量无标记数据辅助数据进行迁移学习的问题。自学习聚类的基本思想是通过同时对源数据与辅助数据进行聚类得到一个共同的特征表示,而这个新的特征表示由于基于大量的辅助数据,所以会优于仅基于源数据而产生的特征表示,从而对聚类产生帮助。
上面提出的两种学习策略(基于特征的有监督迁移学习与无监督迁移学习)解决的都是源数据与辅助数据在同一特征空间内的基于特征的迁移学习问题。当源数据与辅助数据所在的特征空间中不同时,我们还研究了跨特征空间的基于特征的迁移学习,它也属于基于特征的迁移学习的一种。
3 异构空间下的迁移学习:翻译学习
我们提出的翻译学习[1][5]致力于解决源数据与测试数据分别属于两个不同的特征空间下的情况。在[1]中,我们使用大量容易得到的标注过文本数据去帮助仅有少量标注的图像分类的问题,如上图所示。我们的方法基于使用那些用有两个视角的数据来构建沟通两个特征空间的桥梁。虽然这些多视角数据可能不一定能够用来做分类用的训练数据,但是,它们可以用来构建翻译器。通过这个翻译器,我们把近邻算法和特征翻译结合在一起,将辅助数据翻译到源数据特征空间里去,用一个统一的语言模型进行学习与分类。