醫療數據發布的差分隱私保護方法
【技術領域】
[0001] 本發明涉及數據分類技術領域,具體涉及一種醫療數據發布的差分隱私保護方 法。
【背景技術】
[0002] 目前,我國在各醫院已經推廣和使用的電子病歷信息系統大多是將病患作為處理 對象來提供事務處理,一般包含病患個人信息、疾病名稱和手術記錄等,是病人在醫院診治 過程中的原始記錄,其中既有數值型數據,也有離散型數據。電子病歷主要是為了能快速有 效的完成病患的登記和診療記錄的存儲、查詢、查看和結算診療費用等以病患為服務主體 的各項服務為目的。醫院中的各個部門在這樣的病歷管理系統中能對數據進行有效的管理 和統計,如住院病患的平均治療費用、某種特殊疾病的住院人數、癌癥病患分別在不同階段 (I期、π期、m期、IV期)的死亡率等。
[0003] 在現今的醫療體系中,依然是一種以經驗為導向的治療。雖然先進的醫療設備能 為醫生正確的診療提供支持,但醫生們往往無法對得出的經驗規則進行驗證。所以對醫務 工作者而言,他們更希望通過統計分析、數據挖掘等不同的技術從大量的電子病歷信息中 能夠總結出同類疾病的共同病征,在綜合分析以前的不同治療方案、病患狀況與臨床療效 效果的基礎上對現有的治療方案進行優化和調整,從而能夠為疾病的治愈提供更有力的保 證并且將挖掘結果轉化為循證醫學的證據。而現實情況是當醫院在收集了病人的電子病歷 后,需要很多人力物力去存儲和管理這些數據卻沒有能力利用這些病例數據來得到其中隱 藏的醫學診斷規則和模式。通過數據挖掘技術可以挖掘出大量病患的病歷數據中所隱藏的 醫學診斷規則和模式可以驗證醫療工作者以前得到的經驗規律的有效性同時還能夠發現 一些以前沒有被醫療工作者發現的規律,這些都推進了循證醫療技術的前進與發展。這些 挖掘出來的醫療診斷規則可以為醫生進行疾病診斷治療提供輔助決策,這有利于提高診療 效率、減少病患需要進行的無效檢查檢查減少病患的花銷。所以醫院需要將收集到的病患 電子病歷記錄數據發布給醫療研究機構或數據挖掘公司來利用這些數據,得到數據中隱含 的可用的醫療規則等可用信息。
[0004] 收集醫療數據并將之公開發布對于推動醫療研究和治療疾病來說有著極其重要 的意義。然而,由于醫療電子病歷記錄往往帶有許多病患的敏感信息,因此醫療數據的收集 和發布往往會帶來泄露病患信息的隱患。以往發布數據時,一般的做法是將一些標識符屬 性信息(例如:姓名、身份證號碼、電話)從需要發布的病例數據表中直接去掉,然后再將經 過處理的數據進行公開發布。但這樣做依舊有可能泄露病患的個人信息,他人(攻擊者)可 以通過一些準標識符信息(例如:性別、年齡、住址、職業)的組合將某條記錄所對應的病患 重新識別出來。而在數據查詢過程中,通過改變查詢范圍他人(攻擊者)也能夠通過統計信 息的變化得到某個病患的部分信息。
【發明內容】
[0005] 本發明所要解決的技術問題是醫療數據的直接發布所帶來的病患信息泄露的風 險,提供一種醫療數據發布的差分隱私保護方法,其能夠對電子病歷記錄數據進行隱私保 護的同時最大化的保護數據的可用性。
[0006] 為解決上述問題,本發明是通過以下技術方案實現的:
[0007] 醫療數據發布的差分隱私保護方法,包括如下步驟:
[0008] 步驟1、通過數據預處理,得到所有屬性的屬性值均泛化到最高的屬性值組合數據 表和屬性狀態層次樹;
[0009] 步驟2、用戶設定最大分裂次數h和匿名隱私保護參數k;
[0010] 步驟3、將預處理得到的屬性值組合數據表的屬性值加入到被泛化屬性值集合中, 并利用每個屬性的狀態層次樹來統計每個被泛化屬性值的信息增益Scored);
[0011] 步驟4、從被泛化的屬性值集合中選取待分裂的被泛化的屬性值,并對被選出的被 泛化的屬性值進行分裂;
[0012]步驟5、對分裂后得到的新的屬性值組合進行k-匿名驗證;即
[0013] 如果每個新得到的屬性值組合均滿足k-匿名要求,即該屬性值組合的計數大于匿 名隱私保護參數k,表明此次分裂成功,則重新計算信息增益Sc 〇re(Rv),并且實際分裂次數 η增加1;
[0014] 如果其中有一個新得到的屬性值組合不滿足k_匿名要求,即該屬性值組合的計數 小于等于匿名隱私保護參數k,表明此次分裂失敗,則將選中的待分裂屬性值從被泛化的屬 性值集合中刪除;
[0015] 步驟6、重復步驟4-5的分裂過程,直到沒有能繼續分裂的被泛化的屬性值或者分 裂次數等于最大分裂次數h;
[0016] 步驟7、完成分裂過程后,對得到的滿足k-匿名的屬性值組合數據表中每個屬性值 組合的計數進行差分隱私加噪處理,得到含有噪聲的屬性值組合;
[0017] 步驟8、根據含有噪聲的屬性值組合數據表進行數據重構,最后將重構得到滿足差 分隱私和k-匿名的匿名數據集,并將之發布。
[0018] 步驟4中,僅在檢測被泛化的屬性值集合中被泛化的屬性值個數m>0且實際分裂 次數n<最大分裂次數h時,才從被泛化的屬性值集合中選取待分裂的被泛化的屬性值,并 對被選出的被泛化的屬性值進行分裂;而在屬性值個數m < 0或實際分裂次數η 2最大分裂 次數h時,則跳轉到步驟8。
[0019] 步驟4中,被泛化的屬性值的選取過程如下:
[0020] 首先,產生一個范圍在[0,1]內的隨機數R;
[0021] 其次,在被泛化的屬性值集合中,按照下述概率公式從第一個被泛化的屬性值開 始計算,如果生成的隨機數則將該被泛化的屬性值作為待分裂的屬性值;如果 則表示該被泛化的屬性值不能作為本次分裂的屬性值,則重新產生一個隨機數 R,并選取被泛化的屬性值集合Μ中的下一個被泛化的屬性值進行評估;
[0022] 上述概率公式為:
[0023]
[0024] 式中,ε為差分隱私保護參數,DA為所有屬性的個數,DNS數值型屬性的個數,h為最 大分裂次數,Scored)代表信息增益,j為當前需要評估的被泛化的屬性值R v在被泛化的屬 性值集合Μ中的序號。
[0025] 步驟7中,根據下述拉普拉斯公式對屬性值組合數據表加入統計噪聲:
[0026]
[0027]式中,Lap〇是一個函數稱之為拉普拉斯函數,ε為差分隱私保護參數,|DA|則分別 代表所有屬性的個數。
[0028] 與現有技術相比,本發明將K-匿名技術與差分隱私技術進行有效結合,其能夠避 免單獨使用K-匿名技術無法保證數據的統計信息不被泄露,而單獨使用差分隱私技術只在 保護統計信息的同時會引入大量的噪聲,讓數據失真程度變大,而降低數據的可利用性的 問題;從而可以在保證醫療數據可用的前提下,有效防范醫療數據在收集和發布時所帶來 的病患信息泄露的風險,進而發揮醫療數據在統計和挖掘時的效用。
【附圖說明】
[0029] 圖1為醫療數據發布的差分隱私保護方法的流程圖。
[0030] 圖2為年齡的屬性值層次圖。
[0031]圖3為性別的屬性值層次圖。
[0032]圖4為疾病的屬性值層次圖。
[0033]圖5為職業的屬性值層次圖。
【具體實施方式】
[0034]下面結合具體實施例,對本發明進行進一步詳細說明。
[0035]本發明所使用的相關名詞解釋:
[0036] 1.屬性:數據表中的每一列是一個屬性,例如年齡、性別、職業、疾病等。
[0037] 2.屬性值:在每一個屬性對應的屬性值層次樹中,每一個節點都可以作為該屬性 的屬性值,只是不同層次的節點所代表的語義范圍不同。例如,在職業的屬性值層次樹中, 藍領的兩個子節點分別為技工和非技工,則我們可以將屬性值技工和非技工泛化為藍領 (即通過泛化可以用屬性值層次圖中的上層節點的屬性值代表與之關聯的下層屬性值);同 樣也可以通過分裂過程,用屬性值層次樹的其中一個下層節點屬性值來取代上層屬性值。 [0038] 例如:兩條經過預處理的記錄如下:
[0039]表 1
L〇〇4iJ 則只對職業這個屬性向上泛化一層可將兩記錄表示為:
[0042]表 2 「00431 L0044J 分裂過程剛好是泛化過程的逆過程
,在上表2中對職業屬性進行一次分裂則可以 得到表1。
[0045] 3.被泛化的屬性值集合:該處想表達的意思是用多個小的屬性值表示語義范圍更 大的屬性值。
[0046] 例如,用技工和非技工表示藍領這個屬性值,在實際代碼實現過程中就是直接將 屬性值層次樹中多個最底層的屬性值(即葉節點)進行組合用來代表上層的不同屬性值。
[0047] 4.屬性值組合:通過不同屬性的不同屬性值之間的組合可以表示不同的數據。如 下表3四個屬性的屬性值分別為[1,99)、性別、職業、疾病,則{[ 1,99),性別,職業,疾病}就 是一個屬性值組合,若四個屬性的屬性值(1-37]、男、白領、外科疾病,則{(1-37],男,白領, 外科疾病}也是一個屬性值組合。而屬性值組合所代表的記錄的條數則是表3中對應的計數 2,而通過表3可以表示原始數據集中表4所代表的兩條數據記錄。每一次的分裂過程實際上 是對某一個泛化的屬性值按照屬性層次樹進行劃分,形成新的屬性值組合的過程,最后通 過不同的屬性值組合及其計數重構出滿足隱私匿名要求的發布數據集。
[0048] 表3 「00491
屬性值。例如,經過預處理后得到的最原始的被泛化的屬性值集合可以表示為{[1,99),性 另IJ,職業,疾病};經過對屬性性別進行了一次分裂后得到的被泛化的屬性值集合可以表示 為{[1,99),職業,疾病},此處不表示為{[1,99),男,女,職業,疾病}是因為屬性值男、女是 最原始未經過泛化的屬性值,因而無法進行分類操作所以不加入其中;如果再對年齡進行 一次分裂則被泛化的屬性值集合可以表示為{[1,37),[38,99),職業,疾病}。
[0054] 5.屬性值組合數據表:該數據表用來保存每個屬性值組合所代表記錄的條數,上 表3和4均可以認為是分裂過程中的一個屬性值組合數據表。
[0055] 6.狀態層次樹:不同屬性的狀態層次樹存放原始數據集中該屬性不同屬性值的統 計信息。該樹依據原始數據集構建。例如,數據集如表4,則屬性年齡、性別、疾病和職業的狀 態層次樹如圖2-5。
[0056] -種醫療數據發布的差分隱私保護方法,如圖1所示,包括如下步驟:
[0057] 步驟1、通過數據預處理,得到所有屬性的屬性值均泛化到最高的屬性值組合數據 表和屬性狀態層次樹。
[0058] 在處理過程中需要將電子記錄中的標識符進行刪除,并按照用戶需求去掉部分無 關的屬性并生成合適的預處理數據集,具體包括如下步驟:
[00