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 自己平时看了一些论文,但老感 ...
随机推荐
- webpack 打包 todolist 应用
写在前面的话: 一直想着手动配置webpack实现应用,正好最近这段时间比较空闲,就写了一个通过webpack打包实现todolist的简单应用.本文内容包括:通过webpack打包css,html ...
- ESP8266开发之旅 网络篇② ESP8266 工作模式与ESP8266WiFi库
在网络篇①中,博主主要讲解了Arduino上开发ESP8266的插件库 Arduino Core For ESP8266.但是,并没有讲到关于这个模块的工作模式,所以本篇讲着重讲解ESP826 ...
- C++沉思录笔记 —— 序幕
#include <stdio.h> class Trace{public: void print(const char* s) { printf("%s\n", ...
- chrome安装json美化软件 JSONView
安装效果如下: 安装步骤: 1.下载地址: github地址:https://github.com/gildas-lormeau/JSONView-for-Chrome 2.解压文件 3.打开谷歌浏览 ...
- fenby C语言 P29
野指针 malloc()分配内存: free()释放内存: p=(char*)malloc(100): #include <stdio.h>#include <stdlib.h> ...
- 设计模式C++描述----02.模板(Template)模式
一. 问题 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的.Template提 ...
- 从0开始独立完成企业级Java电商网站开发(服务端)
数据表结构设计 唯一索引unique,保证数据唯一性 CREATE TABLE `mmall_user` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT ...
- Unity5-ABSystem(三):AssetBundle加载
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lodypig/article/detai ...
- 知否知否,VS Code 不止开源
VS Code, 昨夜始于“开源”,如今“开源”深处渡. 读者看到这句话,也许会有疑惑,为什么两个“开源”都加上了双引号? 其实是笔者有意为之,因为这个两个“开源”的意义有着很大的差别,第一个“开源” ...
- Python3爬虫(1)_使用Urllib进行网络爬取
网络爬虫 又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫 ...