online/streaming 学习中的验证
Validation in online/streaming learning
我必须针对一些太大而无法放入内存的数据训练分类模型,我正在使用 scikit learn 和 pandas 进行分析。所以这是我的问题,如何在在线学习管道中使用验证来调整超参数?
我正在使用 pandas read_sql_query 和 chucksize 并使用 sklearn SGDClassifier partial_fit 从 sql 数据库流式传输数据。这是一个例子:
clf = SGDCClassifier()
for chunk in pd.read_sql_query("""
select *
from table;
""",
con = conn,
chunksize = n):
preprocess chunk
.
.
.
clf.partial_fit(chunk)
我的问题是:在这种情况下进行验证的最佳方法是什么?
验证(用于调整或其他任何事情)对于流来说实际上是很自然的。
假设这是流的逻辑表示
|-------------------------------------------------------------------------->
它从左边开始,向右添加元素。由于这是一个流媒体设置,我们假设它不能全部放入内存。
在第 i 步 你在内存中有这个块
|--------------------(cccccccccccc)---------------------------------------->
所以你提前决定了火车(r
)和测试(t
)部分的大小,那么你就有了这样的东西:
|--------------------(rrrrrrrrrrrtt)---------------------------------------->
此时,您只能从 r
中学习,并在 t
中检查自己。
在第 i + 1 步,一些 t
变成 r
,你必须丢弃一些旧的 r
s(不过,存储数据的聚合是允许的)。
不要忘记留下一些数据以进行干净的测试。
我必须针对一些太大而无法放入内存的数据训练分类模型,我正在使用 scikit learn 和 pandas 进行分析。所以这是我的问题,如何在在线学习管道中使用验证来调整超参数?
我正在使用 pandas read_sql_query 和 chucksize 并使用 sklearn SGDClassifier partial_fit 从 sql 数据库流式传输数据。这是一个例子:
clf = SGDCClassifier()
for chunk in pd.read_sql_query("""
select *
from table;
""",
con = conn,
chunksize = n):
preprocess chunk
.
.
.
clf.partial_fit(chunk)
我的问题是:在这种情况下进行验证的最佳方法是什么?
验证(用于调整或其他任何事情)对于流来说实际上是很自然的。
假设这是流的逻辑表示
|-------------------------------------------------------------------------->
它从左边开始,向右添加元素。由于这是一个流媒体设置,我们假设它不能全部放入内存。
在第 i 步 你在内存中有这个块
|--------------------(cccccccccccc)---------------------------------------->
所以你提前决定了火车(r
)和测试(t
)部分的大小,那么你就有了这样的东西:
|--------------------(rrrrrrrrrrrtt)---------------------------------------->
此时,您只能从 r
中学习,并在 t
中检查自己。
在第 i + 1 步,一些 t
变成 r
,你必须丢弃一些旧的 r
s(不过,存储数据的聚合是允许的)。
不要忘记留下一些数据以进行干净的测试。