<style> html, body, .ui-content { color: #333; background-color: #fffff0; background-position: center center; background-repeat: repeat-y; background-attachment: fixed; } .alert-success { background-color: #e7f3e3; } .alert-danger { background-color: #f7e5e5; } .alert-warning { color: #8a6d3b; background-color: #fbf7f2; border-color: #faebcc; } .alert-warning a { color: #9b8364; ; } .ui-toc-dropdown .nav .nav>li>a { font-size: 14px; } .ui-content:before { content: ""; position: fixed; z-index: -1; top: 0; right: 0; bottom: 0; left: 0; background-image: inherit; } #doc.markdown-body, .document-footer { background: #fff; border-radius: 10px; margin-top: 20px; padding-top: 0; padding-left: 30px; padding-right: 30px; padding-bottom: 80px; min-height: calc(100% - 160px); } .document-footer { padding-top: 30px; } .markdown-body h1 { font-size: 30px; color: orange; } .markdown-body h2 { font-size: 28px; color: #ffffff; margin: 30px 0 30px !important; border-bottom: 3px solid #93c6b3; background: #93c6b3; padding: 7px 5px 5px; text-align: center; border-radius: 50px; } .markdown-body h2:after { content: ""; display: none /*block*/ ; margin: 10px 0px 0px 0px; width: 40px; height: 6px; background-color: #93c6b3 /*#6ab69a*/ ; } .markdown-body h3 { padding-bottom: 10px; font-size: 24px; color: #4c4987; border-bottom: 1px dashed #4c4987; } .markdown-body h4 { padding-left: 20px; font-size: 20px; color: #615ea8; background-image: url('https://www.e7way.com.tw/images/icon-quote2.png'); background-position: top left; background-repeat: no-repeat; } .markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { color: #444; line-height: 2.4em; letter-spacing: 0.05em; } .alert { padding: 30px; } .alert-info { color: #1d1d3e; background-color: #f3f4ff; border-color: #f3f4ff; } .footnotes ol li { margin: 5px 0; } .markdown-body li+li { padding: 0; } /*--------------------------------------*/ .ui-toc-label:hover { background-color: #9C9CC1; border: none; } .ui-toc-dropdown>.toc { max-height: 100vh; overflow: hidden !important; } .ui-toc-dropdown .nav>li>a { font-weight: 400; font-size: 16px; margin: 10px 0 0; padding: 0 0 0 20px; } .ui-toc-dropdown .nav .nav { padding: 0; margin: 0; } .ui-toc-dropdown .nav .nav>li>a { font-size: 14px; line-height: 1.1em; margin-bottom: 0px; padding-bottom: 0; } .ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a { color: #6ab69a; background-color: transparent; border-left: 2px solid #6ab69a; } .ui-toc-dropdown .nav>li>a:focus, .ui-toc-dropdown .nav>li>a:hover { padding-left: 18px; color: #6ab69a; text-decoration: none; background-color: transparent; border-left: 2px solid #6ab69a; } .ui-toc-dropdown .nav .nav>li>a:focus, .ui-toc-dropdown .nav .nav>li>a:hover { padding-left: 30px; border: 0; } .ui-toc-dropdown .nav .nav>.active:focus>a, .ui-toc-dropdown .nav .nav>.active:hover>a, .ui-toc-dropdown .nav .nav>.active>a { padding-left: 30px; font-weight: 400; border: 0; } } /* 表格樣式 --------------------------------------*/ .markdown-body table th, .markdown-body table td { border: 0px; } .markdown-body table th { color: #528f78; background: #dceae7; border: 1px solid #e3f6f2; } .markdown-body table td { padding: 6px 13px; border: 0px solid #def1ec; } .markdown-body table tr:nth-child(2n) { background: #f5fbfb; border: 1px solid #f5fbfb; } /* 表格樣式 (無捲軸) --------------------------------------*/ .css-table { display: table; display: table-cell; } .css-table .thead { display: table-header-group; } .css-table .thead .th { color: #528f78; background: #dceae7; border: 1px solid #e3f6f2; font-weight: bold; font-size: 20px; text-align: center; } .css-table .tbody { display: table-row-group; } .css-table .tr { display: table-row; } .css-table .th, .css-table .td { display: table-cell; border: 0px; line-height: 2em; word-break: break-all; } .css-table .td { padding: 6px 13px; border: 0px solid #def1ec; font-size: 18px; } .css-table .tr:nth-child(2n) { background: #f5fbfb; border: 1px solid #f5fbfb; } .toc-menu { margin: 20px 0 0; padding: 5px 0; background: #f4f5fa; border-radius: 10px; } /* 左欄目錄 */ .ui-affix-toc { margin-right: 5px; } /* 收合文字、常見問答 */ .markdown-body details summary { color: #615ea8; font-size: 20px; line-height: 2.4em; } details.part.in-view p { margin-left: 22px; } .expand-toggle, .back-to-top, .go-to-bottom { margin: 5px; padding: 2px 15px; color: #8e8da7; } /* RWD ********************************************************/ /*通用 ========================= 桌機以上 (16:9 螢幕) [>1367]*/ @media only screen and (min-width : 1367px) { #doc.markdown-body, .document-footer { padding: 0 30px; } } /*通用 ========================= 大尺寸筆電 [<1366]*/ @media only screen and (max-width: 1366px) { .markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre { font-size: 18px; } .alert { padding: 15px; } .alert-info p { margin: 0 5px 0 0; } } /*通用 ========================= 平板以下 (筆電、平板、大尺寸手機) [<991]*/ @media only screen and (max-width : 991px) { .markdown-body h2 { font-size: 20px; } .markdown-body p, .markdown-body blockquote, .markdown-body ul, .markdown-body ol, .markdown-body dl, .markdown-body table, .markdown-body pre {} .markdown-body ul, .markdown-body ol { padding-left: 1.5em; } #doc.markdown-body, .document-footer { padding: 15px; } #doc.comment-enabled.comment-inner { padding: 15px; } .markdown-body li > p { margin: 0; padding: 0; } .alert { padding: 15px; } } </style> # 模擬案例一:共享糖尿病預測科研數據 ## 情境說明 為進行糖尿病預測相關科學研究,醫院提供糖尿病患資料予研究中心,並於資料釋出前使用差分隱私、合成資料或 k-匿名化技術,以保障病患隱私。 ## 情境使用資料說明 本案例使用NHANES預測糖尿病之資料集[^nhames],欄位說明如下: 1. 性別:Male、Female。 1. 年齡:[20, 80]。 1. 人種:Black、Hispanic、Mexican、White、Other。 1. 教育水平:9th、11th、HighSchool、College、Graduate。 1. 婚姻狀況:Married、Widowed、Divorced、Separated、Never、Partner。 1. 是否憂鬱症:是(1)、否(0)。 1. 是否貧困:是(1)、否(0)。 1. 活動量:每週進行的特定活動的天數(以天/週為單位)乘以每天特定活動的持續時間(以分鐘/天為單位)得出 Metabolic Equivalent Scores(METs)(以分鐘/週為單位)。 1. 活動量四分位数:Q1、Q2、Q3、Q4。 1. 是否糖尿病:是(1)、否(0)。 ![表24](https://hackmd.io/_uploads/B1pcztmtp.png) <p class="text-center">▲ 表二十四、模擬案例一使用之資料集部分節錄</p> ## 使用之隱私強化技術 差分隱私、合成資料或 k-匿名化。 ## 隱私強化技術使用目的 保護參與NHANES資料蒐集的受試者資訊,以避免這些受試者遭受推論攻擊,而被推測特定人是否在此名單之中。此外,該資料亦須具備相當程度的可用性,以供後續資料分析及研究。 ## 隱私強化技術運作方式/機制說明 1. 差分隱私 欲使NHANES資料集釋出滿足差分隱私,則必須先找到某種資料生成的方式並在其中涉及統計計算的函式輸出注入雜訊。其作法係將資料分布轉換成列聯表(Contingency Table)的形式,然後對每一個count值注入雜訊後,再根據新的統計分布透過抽樣轉換回資料型態。下圖簡略敘述了具差分隱私的資料生成方法,但要注意的是在注入雜訊後接續進行了後處理的程序(Post-Processing),此步驟目的在於讓充滿雜訊的分布能更合理,且貼近實際分布狀況,例如應避免count值負值等。 ![圖片16](https://hackmd.io/_uploads/SkFizK7KT.png) <p class="text-center">▲ 圖十六、以差分隱私生成資料之運作流程</p> 2. 合成資料 要從NHANES資料集釋出一個可供發佈之資料集,首先需選定一種產生合成資料之方式,如機器學習模型或數學建模等,來捕捉NHANES資料集的統計特徵。以生成對抗網路(Generative Adversarial Network)為例,該模型將以NHANES資料集為輸入,藉由模型的生成器(Generator)和判別器(Discriminator)機制,學習資料集的統計特徵,如下圖所示。待模型訓練完畢,再以此模型的生成器產出合成資料。產出之合成資料即可在其數值與原始資料不完全相同的情況下,表現出與原始資料相似之統計特徵。 ![圖片17](https://hackmd.io/_uploads/HJV3GK7Kp.png) <p class="text-center">▲ 圖十七、以合成資料生成資料集之運作流程</p> :::warning 上圖參考自 [^gan] 並經指引編輯團隊重新繪製。 ::: 3. k-匿名化 為使NHANES資料集釋出滿足k-匿名性,必須先決定資料集中哪個欄位作為敏感屬性(Sensitive Attribute, SA)且其餘屬性當作準識別符(Quasi-identifier, QI)。接續針對類別行屬性運行抑制(Suppression)與泛化(Generalization)。其目的為確保資料中的任一筆紀錄有較大可能與資料集中至少k-1筆紀錄具有相同的資料。然而,僅憑單次的程序通常很難滿足上述要求,因為資料進行去識別化的同時應該要盡可能保有原始資料的可利用性。故去識別化程序通常會採用漸進式運行,逐漸增加資料抑制與泛化的強度(如郵遞區號從遮住尾二碼增至三碼),直至符合k-匿名性定義才輸出k-匿名化資料集。 ![圖片18](https://hackmd.io/_uploads/HyxTzYmtp.png) <p class="text-center">▲ 圖十八、以k-匿名化生成資料集之運作流程</p> ## 適用此隱私強化技術之其他領域 本案例使用之隱私保護技術均適用於資料共享、釋出統計資料之情境,並常見應用於醫療衛生、科學研究、金融等領域。 ## 實作程式碼 本案例之實作程式碼已公開於數位發展部 GitHub。 https://github.com/moda-gov-tw/PETs-Applications ## 參考文獻 [^gan]: S.-W. Park, J.-S. Ko, J.-H. Huh, and J.-C. Kim, “Review on generative adversarial networks: Focusing on computer vision and its applications,” Electronics, vol. 10, no. 10, Art. no. 1216, 2021, doi: 10.3390/electronics10101216. [^nhames]: kikn88, “PWSCup 2021 (NHANES diabets).” Apr. 21, 2023. Accessed: Oct. 31, 2023. [Online]. Available: https://github.com/kikn88/pwscup2021