在我们公司,我们希望在内部保护数据隐私。这意味着,我们希望找到一种匿名数据的方法,这样数据科学团队成员就不能公开它,但仍然可以将其用于建模。
我在 Google 上搜索并阅读了有关假名化的信息。但我的意思是,它会破坏数据吗?我实际上没有找到任何可靠的来源。
在我们公司,我们希望在内部保护数据隐私。这意味着,我们希望找到一种匿名数据的方法,这样数据科学团队成员就不能公开它,但仍然可以将其用于建模。
我在 Google 上搜索并阅读了有关假名化的信息。但我的意思是,它会破坏数据吗?我实际上没有找到任何可靠的来源。
您可以查看 OpenMined Pysyft 库,这是一个基于 Pytorch 构建的加密、隐私保护深度学习库。PySyft 将私有数据与模型训练分离。
Github 链接到 Pysyft 库 - https://github.com/OpenMined/PySyft
您的问题:
您似乎在问一个管理/政策问题,措辞类似于数据科学问题。政策问题是“我如何在不损害其可用性的情况下对内部数据科学家保密客户数据”。
数据科学问题类似于“我如何转换数据,以便不能推断其原始形式的隐私和可识别性,同时又不禁用其他分析过程”。这就是零信息悖论的种子。
tl;博士
我认为您的政策人员正在问一个相当于“我如何使我的计算机防黑客”的问题,其中唯一完美的答案是没有计算机。会有一定程度的“抵抗”,但没有“防黑客”之类的东西。
问题命题:
这个问题的一个问题是,与你试图“有选择地阻止”的人相比,绝大多数政策询问者的专业技术知识几乎是微不足道的。向他们解释一个他们可以理解的答案可能会阻止白痴,但实际上并不能阻止数据泄露。
考虑一下手机的数据聚合是如何工作的。
https://eclecticlight.co/2015/08/24/data-aggregation-how-it-can-break-privacy/
许多提出这个问题的政策制定者可以得到一个他们认为意味着“是”的答案,而实际上它意味着“不是”,一个聪明的数据人可以解决这个问题,而政策制定者却不能。
简单示例:
让我们创建一个用数字替换名字的过程。“Smith”变成 1,“Jones”变成 2,等等。仅使用输出,该过程是否可逆?只给一个数字列表,我可以回到名字吗?是的,尽管它有所不同。如果我查看姓氏的频率并将它们与数字频率进行比较,我应该能够在对常用名称进行去匿名化方面做得不错。再说一遍,如果 15% 的姓氏是“Smith”,而我输出的数字列表中有 15% 是“1”,那么 1 很可能是 Smith。
那是一个玩具示例,但是您的手机的 MAC 地址是已知的并已出售。如果世界上除了 MAC 之外的所有数据都是匿名的,我可以去第三部分购买 MAC 到身份映射的列表,那么你的数据根本就不是匿名的。你错过了洗澡水中的婴儿。
如果您的数据完全是数字,您是否考虑过从数据中删除列名?您的员工完全有可能执行他们的建模功能,而无需知道任何阶段的数字是多少。您必须做一些数据准备以确保相关列已被考虑在内,但即便如此,仍然可以使用“匿名”列来解决。
如果你给你的员工一个带有随机列名的数据集,仍然可以保留你想要的隐私,那么这些数据实际上是无用的。
您的数据科学团队的成员应该熟悉各种形式的数据匿名化。根据您数据的性质,它通常涉及删除或混淆所有可能识别个人/客户/其他人的数据。特征缩放、编码和名称交换(正如@I_Play_With_Data所提到的)有助于减少泄露个人数据或识别输入源(个人或其他实体)的可能性。
虽然通常可以在不影响结果的情况下完全删除或混淆数据(例如从数据集中编码或删除客户的 SSN),但通常有些功能更难以在正确的庄园中处理。如果您决定对分类数据进行编码,有多种方法可以做到这一点,并且数据科学家需要了解在此过程中所做的任何假设(即空值被编码或一组特定的列代表一个单个原始特征)。如果您在尝试匿名数据时过于激进,可能会出现许多问题,因此最好将任务委派给在业务两端都有经验的人,例如: