文章摘要: 什么是数据泄密首先举个接近生活的例子,你作为一个优秀的算法工程师,你的目标是用机器学习算法来解决生活中的许多实际问题。 在解决二分类问题时,通过交叉检查方法对模型进行训练,发现测试集上的AUC指标为0.99时,我想你可以开发出这样的牛逼模型,以获得今年年底奖。 之后,系统工程师将该模型工程化,引进生产环境,正式开始解决实际业务问题。 当你向同事炫耀模特有多厉害的时候,模特在生产环境下的效果表现
什么是数据泄密
首先举个接近生活的例子,你作为一个优秀的算法工程师,你的目标是用机器学习算法来解决生活中的许多实际问题。 在解决二分类问题时,通过交叉检查方法对模型进行训练,发现测试集上的AUC指标为0.99时,我想你可以开发出这样的牛逼模型,以获得今年年底奖。 之后,系统工程师将该模型工程化,引进生产环境,正式开始解决实际业务问题。 当你向同事炫耀模特有多厉害的时候,模特在生产环境下的效果表现数据出来了。 看完后,双脚突然变软,同事不帮忙的话,就会倒在地上。
上述模型的出现在脱机评价时效果好,在线效果差的原因有很多,其中有时也被称为数据泄密( data leakage )。 用于训练机器学习算法的数据集包括应该预测的,即,部分测试数据被泄密训练集。 这里所说的信息是关于虽然能够在目标标签和训练数据中利用,但在实际世界中不能利用的、不合法的数据的信息。
数据泄密通常以非常微妙而难以理解的方式发生。 数据泄密发生时,模型脱机的评价结果为“虚高”。 所谓“虚高”,是指在离线阶段评价模型时,虽然在测试装置中表现得很好,但是在正式导入到生产环境中解决实际业务问题时,效果非常差。 也就是说,在离线评价中过高地估计了模型的能力。
关于数据泄密的具体例子
前面已经描述了数据泄密的定义,但是它是抽象的,在此举一些例子说明数据泄密。 易于理解的泄密示例:如果训练数据包含测试数据,模型将过于适合。 另外,以预测目标作为模型的特征,模型的结论基本上类似于“苹果是苹果”。 如果某个东西上贴着苹果的标签,模型就意味着它是苹果的预测。 让我们看看KDD比赛中更微妙的泄密例子。
预测潜在客户是否开立银行帐户
预测潜在客户是否在银行开户时使用的特征之一是“账号”。 很明显,只有开户的顾客在这个字段有价值。 训练时没有任何问题,但实际进行预测时,对所有顾客来说,这个特征是空的。 因为在预测之前不知道顾客的账户有多少,所以如果在预测之前说知道顾客的账户的话,预测模型会是什么呢
预测用户是否要离开站点
在零售网站中,如果预测用户在浏览当前页面后,下次要离开网站或浏览其他新页面,则数据泄露的一个特征是session length,即用户访问网站时浏览的页面的 该特征包含用户访问了多少次的将来的信息。 一个解决方案是将session length替换为page number in session。 在session中,此前的页面阅读总数。
预测用户是否购买商品
在电子商务网站,向用户暴露商品后,是否购买的问题经常被预测。 显然,在这个问题上,商品的好评率是非常重要的要素,在一般的训练中使用过去的数据来制作模型,例如使用过去一周的数据,为训练数据来制作商品的好评率的情况下,如果使用该商品的当前时间的好评率,则该特征包含未来的信息,因此在曝光时该商品的好评率 例如,在2018年10月10日的22分30秒,商品I向用户u公开,最终用户u购入的商品公开时的好感度为99%,一周后,2018年10月17日的22分30秒,该商品的好感度为86%,此时使用以前的数据制作了训练样本的情况下
预测病人的病情
正在开发诊断特定疾病的模型,现在的患者训练组包括患者是否为该疾病做了手术的特征。 显然,使用这一特征可以大大提高预测的准确性,但这显然是有数据泄漏的。 因为在患者的诊断结果不出来之前,不能知道这个特征。
另一个相关的例子是患者ID,可以根据特定的诊断路径被分配患者ID。 也就是说,去专家的结果是最初的医生判断有可能生病,所以ID有可能不同。
介绍数据泄密的类型
数据泄密可分为训练数据泄密和特征泄密两大类。 训练数据泄密是测试数据和未来数据通常混在训练数据中,特征泄密是特征中包含与实际标签有关的信息。
泄密培训数据的情况可能包括:
预处理使用整个数据集(培训集和测试集)进行计算,结果会影响培训期间显示的内容。 这可以包括计算用于标准化和定标的参数、搜索用于检测和删除异常值的最小和最大特征值、使用变量在整个数据集合中的分布估计训练集合中的缺失值、以及执行特征选择的场景:
当处理时间序列数据时,另一个重要问题是未预期地使用未来事件的记录来计算预测的特性。 让我们看一下谈话长度的例子。
特征性泄密的原因可能包括:
有些不正当的特征被删除,但包括相同或相似信息的特征被忽略(例如,患者是否动过手术的特征在前一个示例中被删除但是患者ID未被删除)。
在某些情况下,数据集记录可能被有意地随机化,或者包含有关用户的特定信息(如用户的名称和位置)的字段可能被匿名化。 根据预测任务的不同,您可以取消匿名化,以查明在实际使用中不合法的用户和其他机密信息。
检测数据泄密
如果您知道什么是数据泄密,下一步就看看如何检测数据泄密。
在构建模型之前,可以对数据进行搜索分析。 例如,查找与目标标记或值高度相关的特征。 例如医学诊断的例子中,患者是否为那个疾病做了手术这一特征,与是否最终得了病非常有关联性。
构建模型后,可以检查模型中是否有非常重要的特征泄密。 或者,在构建模型后,如果发现模型的效果惊人,则需要考虑是否发生了数据泄密。
另一种更可靠的检漏方法是有限的实际安排训练模型,观察训练时的性能与实际环境的表现之间是否存在较大差异。 然而,如果差异较大,则这可能是由于过拟合。
修复数据泄密
如果检测到数据泄密,该如何修复呢?
首先,在预处理数据时,应该使用分割的训练集而不是使用整个数据集计算。
在处理时间序列问题时,必须使相关特征的时间戳与发生时间一致,以免训练数据中出现来自未来的信息。
并且,对于与预测目标的相关性特别高,或者模型中的权重特别高的特征,要好好检查是否发生了数据泄密,如果是的话,一定要排除。
【编辑推荐】
洞察眼MIT系统加密软件–企业文件防泄密专家!防拷贝复制、防文件传播泄露!轻松实现单位内部文件自动加密保护,加密后的文件在单位内部正常流转使用。未经许可,任何私自拷贝加密文件外发出去,都将打开为乱码,无法使用!
对于发送给客户等第三方的文件,可实现控制打开时间和打开次数等防泄密参数!同时可设置对员工电脑文件自动备份,防止恶意删除造成核心数据的遗失!从源头防止企业核心文件被外泄!
相关内容:加密软件,文件加密,文档加密,图纸加密软件,防泄密软件,CAD加密软件,企业文件加密