【问题标题】:Obfuscation of sensitive data for machine learning机器学习中敏感数据的混淆
【发布时间】:2015-10-01 10:33:40
【问题描述】:

我正在为我的学术兴趣准备一个数据集。原始数据集包含来自交易的敏感信息,例如Credit card noCustomer emailclient iporigin country 等。我必须在这些敏感信息离开我的原始数据源并将它们存储以供我分析之前对其进行模糊处理算法。数据中的某些字段可以是分类的,并且不难混淆。问题在于非分类数据字段,我应该如何最好地混淆它们以使我的数据的基本统计特征保持不变,但使其不可能(至少在数学上很难)恢复为原始数据。

编辑:我使用 Java 作为前端来准备数据。然后,准备好的数据将由 Python 处理以进行机器学习。

编辑 2: 解释我的场景,作为 cmets 的后续行动。我有如下数据字段:

'CustomerEmail', 'OriginCountry', 'PaymentCurrency', 'CustomerContactEmail',
'CustomerIp', 'AccountHolderName', 'PaymentAmount', 'Network',
'AccountHolderName', 'CustomerAccountNumber', 'AccountExpiryMonth',
'AccountExpiryYear'

我必须对每个字段(数据样本)中存在的数据进行模糊处理。我计划将这些字段视为特征(使用经过混淆的数据),并针对二进制类标签(我的训练和测试样本使用该标签)训练我的模型。

【问题讨论】:

  • 我们可以知道您打算使用什么语言/包吗?关于如何处理信用卡号、IP 地址和电子邮件,我有很多想法。
  • @TimBiegeleisen 感谢您的有用提示。为我的问题添加了信息。
  • 为了分析新的、未知的数据 - 识别过程,您需要将数据转换为用于教授系统的形式。这种转换可以很容易地恢复工程,特别是如果您只使用 Python 或 Java。

标签: machine-learning obfuscation


【解决方案1】:

没有通用的方法来混淆非分类数据,因为任何处理都会导致信息丢失。您唯一能做的就是尝试列出最重要的信息类型以及留下它的设计转换。例如,如果您的数据是 Lat/Lng 地理位置标签,您可以执行任何类型的保留距离转换,例如平移、旋转等。如果不够好,您可以将数据嵌入到低维空间中,同时保留成对距离(有很多这样的方法)。一般来说 - 每种类型的非分类数据都需要不同的处理,并且每种都会破坏信息 - 由您来提出重要属性列表并找到保存它的转换。

【讨论】:

    【解决方案2】:

    我同意@lejlot 的观点,即没有灵丹妙药可以解决您的问题。但是,我相信这个答案可以让您开始考虑至少处理数据集中的数字字段。

    对于数字字段,您可以使用 Java Random 类并将给定数字映射到另一个混淆值。这里的技巧是确保将 same 数字映射到 same 新的混淆值。例如,考虑您的信用卡数据,假设每个卡号都是 16 位数字。您可以将您的信用卡数据加载到 Map 并对其进行迭代,为每个号码创建一个新代理:

    Map<Integer, Integer> ccData = new HashMap<Integer, Integer>();
    // load your credit data into the Map
    
    // iterate over Map and generate random numbers for each CC number
    for (Map.Entry<Integer, Integer> entry : ccData.entrySet()) {
        Integer key = entry.getKey();
    
        Random rand = new Random();
        rand.setSeed(key);
        int newNumber = rand.nextInt(10000000000000000); // generate up to max 16 digit number
        ccData.put(key, newNumber);
    }
    

    此后,任何时候您需要使用信用卡num,您都可以通过ccData.get(num) 访问它以使用混淆值。

    您可以按照类似的 IP 地址计划。

    【讨论】:

    • 感谢您的解释性回答。这类似于哈希算法。不会使用随机的、均匀的数据分布,破坏它的统计特性,让它不利于分析吗?例如,散列会影响数据的线性可分性。如果我错了或徘徊在不合理的分支方向,请纠正我。
    • 我给出的例子对于诸如学生成绩分布之类的东西来说将是残酷​​的。但是对于信用卡号或 IP 地址,应该没问题。您是否有任何数据比您在 OP 中列出的数据更复杂?
    • 请允许我转述您的评论。您的意思是说,您的解决方案只会以负面方式影响连续分布。所有非连续和/或分类字段都可以随机化。如果我错了,请纠正我。
    • 请举例说明您想到的数据。当前获胜的答案是正确的,因为它说没有通用的方法来处理这个问题。
    • 我会将信用卡号视为分类值,如前所述,不难混淆,只需创建一个唯一列表并使用条目索引。或者,如果特定的数字组具有任何独立的含义,例如,将信用卡号拆分为许多特征(每个特征单独混淆)。机构、账户、子账户
    猜你喜欢
    • 2019-04-05
    • 2019-06-11
    • 1970-01-01
    • 2014-04-05
    • 2013-08-25
    • 1970-01-01
    • 2014-06-23
    • 2021-02-01
    • 2013-02-25
    相关资源
    最近更新 更多