2.9 数据清洗
数据清洗有时候被看作去标识化的同义词,事实上,应该理解为一个起于去标识化过程结束时的过程。数据清洗会将那些数据记录里不希望保留的信息移除,包括个人信息和其他与数据记录含义不直接相关的信息。例如,在医院记录的案例里,数据清洗应当清洗掉病人的主治医生姓名、医院或医疗机构名称、地址、看病日期和其他不合适的、不合法的、不相关的或者存在潜在危险的信息。
关于医疗数据记录,有个说法,“‘最小化必要’分享数据”33(见术语表,Minimal necessary),是指在分享记录时,只需要分享最少量的必要信息,其他与数据分析师的应用目的不直接相关的信息均不分享。数据清洗过程给予数据管理人员一个断开数据记录自身信息之间的联结关系和舍弃数据分析师不需要的信息的机会。
数据清洗的方法很多,大部分都要求数据管理人员制作出一个不应该包含在分享记录中的异常列表,如城市、州、邮编、人名等。清洗应用程序遍历数据记录,提取不必要信息。清洗的结果是获得“干净”的数据,而不是消除它。但这类方法并不能生成完美清洗的数据集。在大数据资源里,数据管理人员基本上不可能提前获知每个不想要的数据条目,并把它添加到异常列表中。没有人这么聪明。
然而,有一个方法可以实现准确无误地清洗数据。首先,创建一个可包含在清洗后的、去标识化后的数据集中的数据列表(通常是单词和短语的形式);接着,删除不在此列表中的其他数据,剩下的就是清洗后的数据。这种方法是一种逆向清洗方法,数据集中的任何数据都将被删除,除非它是被允许存在的“异常”。
上面的这种方法运算速度很快,可生产无错误的、去标识化的、清洗过的数据输出19,35,36。下面给出一个实例:
逆向清洗方法首先要有一个允许的词条列表。生成这个列表的一个简单方法是在术语表中筛选出那些专业词汇,例如,一个生物物种综合清单不会有日期、邮编等信息。我曾经发表的一个算法,实现了从标准术语表中自动收集双词短语,并形成一个允许的成对词列表,短语数量大约为20万19。算法的处理速度很快,而且不会因为列表变大而降低速度。