paper sharing :学习特征演化的数据流
特征演化的数据流
数据流学习是近年来机器学习与数据挖掘领域的一个热门的研究方向,数据流的场景和静态数据集的场景最大的一个特点就是数据会发生演化,关于演化数据流的研究大多集中于概念漂移检测(有监督学习),概念/聚类演化分析(无监督学习),然而,人们往往忽略了一个经常出现的演化场景:特征演化。大多数研究都考虑数据流的特征空间是固定的,然而,在很多场景下这一假设并不成立:例如,当有限寿命传感器收集的数据被新的传感器替代时,这些传感器对应的特征将发生变化。
今天要分享的文章出自周志华的实验室《Learning with Feature Evolvable Streams》(NIPS 2017),它提出了一个新的场景,即在数据流中会有特征消亡也会有新特征出现。当出现新的特征空间时,我们并不直接抛弃之前学到的模型并在新的数据上重新创建模型,而是尝试恢复消失的特征来提升模型的表现。具体来说,通过从恢复的特征和新的特征空间中分别学习两个模型。为了从恢复的特征中获得提升,论文中提出了两种集成策略:第一种方法是合并两个模型的预测结果;第二种是选择最佳的预测模型。下面我们具体来理解特征演化数据流以及论文中提出的一些有趣的方法吧~
paper link:https://papers.nips.cc/paper/6740-learning-with-feature-evolvable-streams.pdf
什么是特征演化数据流?
在很多现实的任务中,数据都是源源不断收集的,关于数据流学习的研究近年来受到越来越多的关注,虽然已经有很多有效的算法针对特定的场景对数据流进行挖掘,但是它们都基于一个假设就是数据流中数据的特征空间是稳定的。不幸的是,这一假设在很多场景下都不满足。针对特征演化的场景,最直接的想法就是利用新的特征空间的数据学习一个新的模型,但是这一方法有很多问题:首先,当新的特征刚出现的时候,只有很少的数据样本来描述这些信息,训练样本并不足够去学习一个新的模型;其次,包含消失特征的旧模型被直接丢弃了,其中可能包含对当前数据有用的信息。论文中定义了一种特征演化数据流的场景:一般情况下,特征不会任意改变,而在一些重叠时期,新特征和旧特征都存在,如下图所示:

其中,T1阶段,原始特征集都是有效的,B1阶段出现了新的特征集,T2阶段原始特征集消失,只有新的特征集。
论文提出的方法是通过使用重叠(B1)阶段来发现新旧特征之间的关系,尝试学习新特征到旧特征的一个映射,这样就可以通过重构旧特征并使用旧模型对新数据进行预测
问题描述
论文中着重解决的是分类和回归任务,在每一轮学习过程中,对每一个实例进行预测,结合它的真实标签会得到一个loss(反映预测和真实标签的差异),我们将上面提到的T1+B1+T的过程称为一个周期,每个周期中只包含两个特征空间,所以,之后的研究主要关注一个周期内的模型的学习,而且,我们假设一个周期内的旧特征会同时消失。定义Ω1和Ω2分别表示两个特征空间S1和S2上的线性模型,并定义映射
,定义第i维特征在第t轮的预测函数为线性模型
,
。损失函数是凸的,最直接的方式是使用在线梯度下降来求解w,但是在数据流上不适用。
方法介绍
上文提到的基本算法的主要限制是在第1,…T1轮学习的模型在T1+1,…T1+T2时候被忽略了,这是因为T1之后数据的特征空间改变了,我们无法直接应用原来的模型。为了解决这一问题,我们假设新旧特征空间之间有一种特定的关系:
,我们尝试通过重叠阶段B1来学习这种关系。学习两组特征之间的关系的方法很多,如多元回归,数据流多标签学习等。但是在当前的场景下,由于重叠阶段特别短,学习一个复杂的关系模型是不现实的。所以我们采用线性映射来近似。定义线性映射的系数矩阵为M,那么在B1阶段,M的估计可以基于如下的目标方程:

M的最优解可以解得:

然后,当我观测到S2空间得数据,就可以通过M将其转化到S1空间,并应用旧模型对其进行预测。
除了学习这个关系映射之外,我们得算法主要包括两个部分:
在T1-B1+1,…T1阶段,我们学习两个特征空间之间得关系;
在T1之后,我们使用新特征空间的数据转化后的原特征空间数据,持续更新旧模型以提升它的预测效果,然后集成两个模型进行预测。
预测结果集成
论文中提出两种集成方法,第一种是加权组合,即将两个模型的预测结果求加权平均,权重是基于exponential of the cumulative loss。

其中

这种权重的更新规则表明,如果上一轮模型的损失较大,下一轮模型的权值将以指数速度下降,这是合理的,可以得到很好的理论结果。
第二种集成方法是动态选择。
上面提到的组合的方法结合了几个模型来提升整体性能,通常来说,组合多个分类器的表现会比单分类器的效果要好,但是,这基于一个重要的假设就是每个基分类器的表现不能太差(如,在Adaboost中,基分类器的预测精度不应低于0.5)。然而在这个问题中,由于新特征空间刚出现的时候训练集较小,训练的模型不好,因此可能并不适合用组合的方法来预测,相反,用动态选择最优模型的方法反而能获得好的效果。
有趣的灵魂在等你
长按二维码识别
paper sharing :学习特征演化的数据流的更多相关文章
- Paper | 多任务学习的鼻祖
目录 1. MTL的定义 2. MTL的机制 2.1. Representation Bias 2.2. Uncorrelated Tasks May Help? 3. MTL的用途 3.1. Usi ...
- AI学习---特征工程【特征抽取、特征预处理、特征降维】
学习框架 特征工程(Feature Engineering) 数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限而已 什么是特征工程: 帮助我们使得算法性能更好发挥性能而已 sklearn主 ...
- [spring源码学习]单元测试演化
1.使用main方法 最早的测试方法一般是在类中增加main方法,然后在main方法中增加对每个方法的测试代码,如果要测其中一个,就屏蔽掉其他的测试代码,执行后,根据log的打印来判断测试是否成功 2 ...
- [改错_19/04/01] 学习Java.IO 对象数据流时出现 Exception in thread "main" java.io.EOFException ...at cn.sxt.test.Test_DataStream.main(Test_DataStream.java:31) 错误 .
过程描述:编译可以通过,就是每次运行时出现如下的图片,百思不得其解. 错误原因: byte[] datas=baos.toByteArray(); 放在了oos.writeInt(14);oos.fl ...
- SENet(Squeeze-and-Excitation Networks)算法笔记---通过学习的方式来自动获取到每个特征通道的重要程度,然后依照这个重要程度去提升有用的特征并抑制对当前任务用处不大的特征
Momenta详解ImageNet 2017夺冠架构SENet 转自机器之心专栏 作者:胡杰 本届 CVPR 2017大会上出现了很多值得关注的精彩论文,国内自动驾驶创业公司 Momenta 联合机器 ...
- 特征工程(Feature Enginnering)学习记要
最近学习特征工程(Feature Enginnering)的相关技术,主要包含两块:特征选取(Feature Selection)和特征抓取(Feature Extraction).这里记录一些要点 ...
- paper 53 :深度学习(转载)
转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...
- Deep Learning 学习随记(四)自学习和非监督特征学习
接着看讲义,接下来这章应该是Self-Taught Learning and Unsupervised Feature Learning. 含义: 从字面上不难理解其意思.这里的self-taught ...
- Deep Learning论文笔记之(一)K-means特征学习
Deep Learning论文笔记之(一)K-means特征学习 zouxy09@qq.com http://blog.csdn.net/zouxy09 自己平时看了一些论文,但老感 ...
随机推荐
- [JZOJ5178]【NOIP2017提高组模拟6.28】So many prefix?
Description
- POST PUT 小解
POST 主要是用来提交数据让服务器进行处理的,PUT主要是请求数据的. POST 提交的数据放在HTTP正文里面,而PUTT提交的数据放在url里面.
- 罕见的coredump了
最近,项目在越南版删档测试的时候,发生了罕见的coredump,简单记一点排查日志 目前的敏感词过滤是在C层做判定的,先后经过几个项目考验,模块算是比较稳定了.越南版有个需求,需要将敏感词里的空格去掉 ...
- 学习Spring的思考框架
引子 很早之前听同事说:“要开会了.我都知道领导要问什么,就那几板斧.”其实领导之所以为领导,人家问的问题确实很合情合理,甚至可以说一针见血.而之所以能问出来这些合理的问题,就是因为头脑中有自己的思考 ...
- 微信公众号【阿里技术(ali_tech)】历史文章整理
简介 来自微信公众号: ali_tech 阿里巴巴官方技术号,关于阿里的技术创新均呈现于此. 本内容来自微信公众号的分享,最后更新时间2019-10-26,请关注对应公众号接收最新分享,定期同步地址: ...
- 百万年薪python之路 -- socket粘包问题解决
socket粘包问题解决 1. 高大上版解决粘包方式(自定制包头) 整体的流程解释 整个流程的大致解释: 我们可以把报头做成字典,字典里包含将要发送的真实数据的描述信息(大小啊之类的),然后json序 ...
- ASP.NET Core中的配置
配置 参考文件点击跳转 配置来源 命令行参数 自定义提供程序 目录文件 环境变量 内存中的.NET 对象 文件 默认配置 CreateDefaultBuilder方法提供有默认配置,在这个方法中会接收 ...
- MOOC C++笔记(七)输入输出流
输入输出流 与输入输出流操作相关的类 istream:是用于输入的流类,cin就是该类的对象. ostream:是用于输出的流类,cout就是该类的对象. ifstream:是用于从文件读取数据的类. ...
- 使用诊断工具观察 Microsoft.Extensions.DependencyInjection 2.x 版本的内存占用
目录 准备工作 大量接口与实现类的生成 elasticsearch+kibana+apm asp.net core 应用 请求与快照 Kibana 上的请求记录 请求耗时的分析 请求内存的分析 第2次 ...
- django-URL别名的作用(六)
接include函数那一节. 作用:为url地址取一个名称,这样在html中引用的时候,无论后台url怎么变,都可以访问到对应的界面,可以减少更改的次数. 基本目录: book\urls.py fro ...