线性模型

基本形式:  

线性回归:

  1. 对于离散属性,若属性间存在“序”关系,可通过连续化将其转化为连续值,例如二值属性“身高”的取值“高”、“矮”可转化为{1.0,0.0},三值属性“高度”的取值“高”、“中”、“低”可转化为{1.0,0.5,0.0}等。若属性值间不存在序关系,假定有k个属性值,则通常转化为k维向量,例如属性“瓜类”的取值“西瓜”、“南瓜”、“黄瓜”可转化为(0,0,1),(0,1,0),(1,0,0)。
  2. 利用“最小二乘法”来求取w和b,。除此之外,还可以用矩阵公式运算得到w,。如果不是满秩矩阵,例如x的列数多于行数,就是x的属性个数多与x的条数,常用作法引入正则化
  3. 对数线性回归:

对数几率回归:

  1. 对数几率函数:。是一种“Sigmoid”函数。它将值z转化为(0,1)区间的数值。将等式进行变化,。若将y视为样本x作为正例的可能性,则1-y就是其反例的可能性,两者的比值表示“几率”。反映了x作为正例的相对可能性。对可能性取对数,就是“对数几率”。
  2. 对数几率回归可用来进行分类。直接对分类可能性建模,不需要事先假设数据的分布,则可以避免假设分布错误对结果带来的影响。而且它不仅预测类别,还能得到近似概率预测。此外,对数几率函数是任意阶可导的凸函数,具有好的数学性质,现有的许多数值优化算法都可直接用于求取最优解。

多分类学习:

  1. 基本思想:将多分类任务拆为若干个二分类任务求解。先对问题进行拆分,然后为拆出的每个二分类任务训练一个分类器;在测试时,对这些分类器的预测结果进行集成以获得最终的多分类结果。关键在于如何对多分类任务进行拆分,以及如何对多个分类任务进行集成。
  2. 最经典的拆分策略有三种:“一对一”(One VS One,简称OvO)、“一对多”(One VS Rest,简称OvR)和“多对多”(Many VS Many,简称MvM)。
  3. 假设数据集中有N个类别,则OvO的思想是将这N个类别两两配对,从而产生N(N-1)/2个二分类任务,在测试阶段,新样本将同时提交给所有分类器,于是得到N(N-1)/2个分类结果,最终结果通过投票产生:即把被预测得最多的类别作为分类结果。
  4. OvR则是每次将一个类别的样例作为正例,所以其他类别的样例作为反例,来训练N个分类器。测试时若仅有一个分类器预测为正类,则对应的类别标记作为最终分类结果。若有多个分类器预测为正类,则通常考虑各个分类器的预测置信度,选择置信度最大的类别标记作为分类结果。
  5. OvR只需要训练N个分类器,而OvO需要训练N(N-1)/2个分类器,因此OvO的存储开销和测试时间开销通常比OvR更大。但下训练时,OvR的每个分类器均使用全部训练样例进行训练,而OvO的每个分类器仅用到两个类的样例,因此,在类别多的时候,OvO的训练时间开销通常比OvR更小。
  6. MvM是将若干个类作为正例,若干个其他类作为反例,显然OvO和OvR是MvM的特例。最常用的MvM技术是“纠错输出码”(Error Correcting Output Codes,简称ECOC)。ECOC工作过程分两步:1)编码:对N个类别做M次划分,每次划分将一部分类别作为正例,一部分类别作为反例,从而形成一个二分类训练集。这样一共产生M个训练集,可以训练出M个分类器;2)解码:M个分类器分别对测试样例样本进行预测,这些预测标记组成一个编码。这个预测码与每个类别各自的编码进行比较,返回其中距离最小的类别最为最终结果。具体操作如下: 对于二元ECOC码,意思是对每个类别只能指定为正例或反例,三元ECOC码,意思是对每个类别可以指定正例,反例和停用例。拿二元ECOC码举例,开始训练时,一列一列的看,将C1、C3和C4设为反例,C2为正例,则训练处一个分类器f1,同理分别训练出f2,f3,f4,f5分类器,之后测试时,由于有5个分类器,所以进行5次测试,测试的结果分别为-1,-1,+1,-1,+1。之后把测试结果和上面4行分别对别,求举例。海明距离:每位对应编码不用的总位数,例如第一行和测试示例一共有3个位置不同,所以海明距离为3,欧氏距离就是相对应的距离之差的平方和再开根号,结果如图所示。之后,距离最小的类别就是测试结果对应的类。
  7. ECOC对错误具有一定的容忍性和修正能力。例如(a)中,正确的预测编码是(-1,+1,+1,-1,+1),但我们预测的结果是(-1,-1,+1,-1,+1),结果不同的原因是f2分类出错,但这个测试结果的编码仍然可以正确的被分为C3。通常,ECOC编码越长,接错能力越强。然而,这也意味着分类器会越来越多,计算,存储的开销会越来越大。另一方面,对于优先类别测试集,可能组合数目是有限的,码长超过一定范围就会失去意义。

类别不平衡问题:

  1. 类别不平衡就是指分类任务中不同类别的训练样例数目差别很大的情况。例如一个训练集中,正例很多很多,反例很少很少。在使用OvR或MvM时,有可能就会遇到这种类别不平衡问题。
  2. 解决的方法大概有3种:1)直接对训练集里的反例进行“欠采样”,例如如果训练集中正例很少,反例很多,即除去一些反例,使得正反例数目差不多,然后再进行学习。但丢弃一些反例,可能会丢失一些重要信息,解决方法是利用集成学习机制,将反例划分为若干个集合供不同学习器学习,将最后的结果进行求平均。2)对训练集中的正例进行“过采样”,即增加一些正例是的正反例数目接近,之后再进行学习。需要注意的是,过采样不能简单的对初始正例样本进行重复采样,否则会引起过拟合。过采样的代表算法是“SMOTE”,是通过对训练集里的正例进行差值来产生额外的正例。3)直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将式3(在下面)嵌入到其决策过程中,称为“阈值移动”。
  3. 阈值移动”:当我们用对新样本x进行分类时,事实上是在用预测的y值与一个阈值进行比较,通常阈值设置为0.5,意味着分类器认为正反例可能性相同。如果y>0.5,这认为是正例,否则认为是反例。即分类器的规则是若(式1),则预测为正例。然而当训练集中的正反例数目不同时,另m+表示正例数目,m-表示反例数目,则观察几率为m+/m-,由于通常假设训练集是真实样本总体的无偏采样,因此观测几率就代表了真是几率。于是,只要分类器的预测几率高于观测几率,就应判定为正例,即若(式2),则预测为正例。但我们的分类器是基于式1进行决策的,则需要对预测值进行调整,使其基于式1进行决策时,实际上是在执行式2,只需令(式3),这就是类别不平衡学习的一个基本策略——“再缩放”。之后就把式3种的等式左边一项当做式1中不等式左边一项就可以应用分类器规则进行比较了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值