第四章 實驗資料與結果
4.2 實驗設計
本章節將介紹使用哪些實驗工具,如何處理實驗資料,及使用的實驗方法。
4.2.1 實驗工具
本研究使用了Microsoft SQL Server 2008 R2 資料庫系統來處理資料,使用 Anaconda 和 Python 來編寫各種不良反應檢測方法的程式。
1. Microsoft SQL Server 2008 R2
微軟結構化查詢語言伺服器(Microsoft SQL Server)是由美國微軟公司所推 出的關聯式資料庫,資料庫的內建語言原本是採用美國標準局和國際標準組 織所定義的SQL 語言,SQL Server 2008 R2 可分為核心版本和特殊版本。核 心版本包含資料中心(Data Center)、企業版(Enterprise)、標準版(Standard)等,
特殊版本包含群組處理(Workgroup)、用戶端(Web)、行動裝置(Compact)及完
32
整版(Express)等,各版本又分為 32 位元及 64 位元的版本[4]。我們使用的版 本是SQL Server 2008Express。
我們在資料庫上建立資料表,並匯入FAERS、RxNorm、MedDRA、SIDER 等資料,將這些資料表加以整理成欲實驗的資料格式,例如:Drug_ATC_List、
View_Sider_Meddra 等資料表,並利用 SQL 語法查詢,連結資料表關係,匯 出實驗資料,這樣可以簡單並有效地整理出實驗資料,以便直接分析。
2. Anaconda 和 Python
Anaconda 是一個免費工具,可用於 Python 和 R 語言,主要是用於計算科學,
並提供許多數據資料以便測試,且共享其他機器學習的專案。優點是省時,
可以一鍵安裝Python 套件,其他套件若有需要用到,可以再用 pip install 安 裝,缺點是占空間,裡面可能包含了一堆用不到的Python 套件。
Python 是一種直譯型、物件導向、動態的進階程式語言,由於 Python 語言 的簡潔、易讀及可擴充性,在國外用 Python 做計算科學的研究機構日益增 多,近年來,由於Python 對函式庫的改良,使得 Python 成為資料分析工作 的熱門選擇,再加上 Python 對一般軟體工程的綜合實力,作為建置資料應 用程式的主要語言來說,是一個絕佳的選擇[5]。
我們使用 Anaconda 的版本是 3-5.1.0,Python 版本是 3.6.3,透過 Anaconda 簡單的安裝,使用Python 來進行程式開發與後續的實驗分析。
4.2.2 實驗方法一:單一檢測法
這個方法是分別用不同的藥物檢測方法計算門檻值,判斷此藥物是否有不良 反應,若此筆藥物有不良反應,且藥物 SIDER 欄位為“Y“則將列聯表(參照表 2.1)的筆數(a)記錄在混淆矩陣的 TP;若此筆藥物有不良反應,且藥物 SIDER 欄 位為“N“將列聯表的筆數記錄在混淆矩陣的 FP;若此筆藥物沒有不良反應,
且藥物SIDER 欄位為“Y“則將列聯表的筆數記錄在混淆矩陣的 FN;若此筆藥
物沒有不良反應,且藥物 的TN。待全部資料匯入後 符合的筆數/全部筆數)、
如圖4.5 所示。
圖
4.2.3 實驗方法二
這個方法是集成不同的
33
且藥物 SIDER 欄位為“N“將列聯表的筆數記錄在混淆矩陣 全部資料匯入後,依照不同的藥物檢測方法計算正確率(
、精準度、召回率、F 值、錯誤率。整個實驗進行的
圖4.5 實驗方法-單一檢測法流程圖
實驗方法二:投票式集成檢測法
不同的藥物檢測方法採投票的方式判斷,例如
將列聯表的筆數記錄在混淆矩陣 (即預測與判斷 整個實驗進行的流程
例如:組合[MHRA、
34
BCPNN、SPRT]。首先這三種藥物檢測方法各自計算門檻值,判斷此藥物是否有 不良反應,接著以投票的方式,分別投票給有或沒有藥物不良反應,以多數決的 方式決定此筆藥物是否有不良反應,若此筆藥物有不良反應,且藥物 SIDER 欄 位為“Y“則將列聯表的筆數記錄在混淆矩陣的 TP;若此筆藥物有不良反應,
且藥物SIDER 欄位為“N“將列聯表的筆數記錄在混淆矩陣的 FP;若此筆藥物 沒有不良反應,且藥物 SIDER 欄位為“Y“則將列聯表的筆數記錄在混淆矩陣 的FN;若此筆藥物沒有不良反應,且藥物 SIDER 欄位為“N“將列聯表的筆數 記錄在混淆矩陣的 TN。待全部資料匯入後,依照不同的藥物檢測方法計算正確 率(即預測與判斷符合的筆數/全部筆數)、精準度、召回率、F 值、錯誤率。整個 實驗進行的流程如圖4.6 所示。
此方法會集成不同的藥物檢測方法,可能三種,也可能採用五種,因為所有 的藥物檢測方法的權重都是預設為1,所以採用奇數個的方式投票,才不會造成 平手的情況。
圖4.
35
4.6 實驗方法-投票式集成檢測法流程圖
36