coreset construction for machine learning
最近碰到了coreset,就大概看了一下。把简要的一些内容和大家分享一下(内容有点多,就只挑我认为的关键点)
coreset简介
为什么需要
这个有点多余,基本上面临大数据集的情况,一个是分布式的机器学习方法来进行处理,另一个是对数据集进行提炼,coreset就是为此而生;
什么叫coreset
简单来讲,就是从大数据集中选出一部分小量带权重的数据集,在这部分数据集的模型训练结果和全数据集的训练差别不大。
定义:
|cost(X,Q)−cost(C,Q)|<=ε cost(X,Q)
|
c
o
s
t
(
X
,
Q
)
−
c
o
s
t
(
C
,
Q
)
|
<=
ε
c
o
s
t
(
X
,
Q
)
这里X可以看做是全体数据集,Q可以看做是function,cost是机器学习的成本函数 C是选出来的数据集。满足上述条件的C则被称为
ε
ε
-coreset
如何产生coreset :via importance sampling
这里关键的数据指标有两个,一是数据集有多大,二十按照什么指标进行挑选其中数据;
每个数据点的挑选按照概率q来进行,一直抽取到m个,挑选后的数据集的权重服从
这里就主要是两个问题,一是如何确定数据集大小m,一个是如何选择m个样本点
μC(x)=μχ(x)mq(x)
μ
C
(
x
)
=
μ
χ
(
x
)
m
q
(
x
)
这里引入一个概念,sensitivity 评估每个数据点对目标函数的影响
σ(x)=supfQ(x)∑μ(x)fQ(x)
σ
(
x
)
=
s
u
p
f
Q
(
x
)
∑
μ
(
x
)
f
Q
(
x
)
s(x)可以看做σ(x)
s
(
x
)
可
以
看
做
σ
(
x
)
S=∑μχ(x)s(x)
S
=
∑
μ
χ
(
x
)
s
(
x
)
q(x)=μχ(x)s(x)S
q
(
x
)
=
μ
χ
(
x
)
s
(
x
)
S
这里f是我们训练的函数,u是数据集本身的权重;
那下一步重点是m大小的确定,直接放截图吧。
里面这个
gQ(x)
g
Q
(
x
)
搞不懂怎么设计的,但是设计完这个函数后,可以一步步推到到m的大小;
这里针对的q是single query,如何理解single query,我的理解是在整个探索空间的一个函数方式。那其实整个探索空间很大,我们挑选模型,逻辑回归或者其他的时候,其实探索空间很广。这里假定的是我们的w都已经确定了,那么在w不确定情况下,其实是一个很广的搜索空间。针对全部都搜索空间,我们应该如何应对。这里面探讨的主要是vc维,也就是探索空间的维度对coreset的影响。
找时间再写在这里。
另外,如何寻找
σ(x)
σ
(
x
)
是与具体机器学习算法强绑定的。要计算的还是比较困难的。。。
paper链接放上
http://cn.arxiv.org/pdf/1703.06476v2