Upgrade to Pro — share decks privately, control downloads, hide ads and more …

製薬会社における安全性監視活動の負担最小化の検討

 製薬会社における安全性監視活動の負担最小化の検討

akinorisaito

March 08, 2020
Tweet

More Decks by akinorisaito

Other Decks in Business

Transcript

  1. 目次 • 背景 • 課題と仮説 • インテグレーションステップで行うこと • 方法 •

    使用したツール、アルゴリズム等 • データ • 機械学習アルゴリズムの適用 • 結果 • まとめ • ビジネス活用 • 今後の課題 2
  2. 背景 • 安全性監視活動とは – 医薬品副作用の情報収集のための活動 – 通常の活動と追加の活動がある – 追加の活動の選択肢 4

    日本薬剤師会「3分でわかる!RMP講座」 https://www.nichiyaku.or.jp/assets/uploads/pharmacy-info/rmp.pdf 選択肢 特徴 製造販売後臨床試験 製薬会社がデータを収集 医師の治療へ介入 金銭的負担大 使用成績調査 製薬会社がデータを収集 医師の治療への介入なし 金銭的負担中~大 データベース調査 既存のデータベースを利用 (電子カルテ、健保等) 金銭的負担小 (どれか一つとは限らず、組み合わせもあり得る)
  3. 方法 1. データ準備 • PMDAのホームページからRMP(PDF形式)を ダウンロード Ø 医薬品ごとのRMPはPMDAのHPで公開されて いる •

    各RMPからp1 「RMPの概要」を抽出し、テ キスト変換 • テキストデータを縦結合 2. 自然言語処理 • 前処理 (正規化、ストップワードフィルタ) • 形態素解析 • 単語文書行列作成 3. 機械学習アルゴリズムの適用 • 予測モデル作成 8 (https://www.pmda.go.jp/safety/info- services/drugs/items-information/rmp/0001.html)
  4. 使用したツール、アルゴリズム等 プロセス ツール、アルゴリズム等 PDFダウンロード Firefoxアドオン・DownThemAll PDFページ抽出 PyPDF2 PDFからのテキスト抽出 PDF miner

    自然言語処理   形態素解析辞書 MeCab + NEologd Comejisyo (医療用語辞書: https://ja.osdn.net/projects/comedic/)   Vectrizer TF-IDF Count Vectrizer 機械学習アルゴリズム    ロジスティック回帰 (LR) サポートベクターマシーン (SVM) ランダムフォレスト (RF) xgboost (XGB) 決定木 (DT) 9
  5. データ • RMP(PDF形式)ダウンロード • 2020年3月20日実施 • 545件のPDFをDownThemAllで一括ダ ウンロード • 各PDFからのページ抽出

    • PyPDF2で一括して抽出 • エラーとなったPDFはGoogleテキスト で読み込み抽出 • PDFからのテキスト変換 • PDF minerで一括して変換 • 縦結合 • 1PDF(1RMP)で1行のレコード • 重複を解消し537件のレコード 10
  6. データ • 形態素解析 • MeCAB + NEologd + Comejisyo •

    名詞のみ選択 11 Comejisyoを使うことで、薬剤名や疾患名等が「分かち書き」されていることを確認
  7. データ • データ抽出、分割 • 2018年1月1日から2020年3月20日までに提出されたRMPのレコード抽出 • 443 records × 3729columns

    (安全性監視活動としてデータベース調査が利用できるようになったのは2018年から) • 列“データベース”を目的変数として使用 • Value : 0 or 1 • “データベース”が1 (データベース調査採用)のレコード数 : 29 records • トレーニングデータ75%、テストデータ25%とランダムに分割 13 レコード数の割に列数が多いアンバランスなデータ
  8. 機械学習アルゴリズムの適用 機械学習 アルゴリズム Train : Confusion Matrix Train : AUC

    Train : F1 score Test : Confusion Matrix Test : AUC Test : F1 score LR (閾値: >0.10) [308 3] [ 0 21] 0.99 0.93 [102 1] [ 5 3] 0.68 0.50 SVM [311 0] [ 14 7] 0.66 0.50 [103 0] [ 8 0] 0.50 0.00 RF [311 0] [ 0 21] 1.00 1.00 [103 0] [ 8 0] 0.50 0.00 XGB [311 0] [ 0 21] 1.00 1.00 [103 0] [ 2 6] 0.87 0.85 • 機械学習アルゴリズムの実行 – Training data : 332 rows × 3728 columns – Test data : 111 rows × 3728 columns – XGBがテストデータのAUC、F1 scoreで1番良い結果 16
  9. 機械学習アルゴリズムの適用 実行回数 Train : Confusion Matrix Train : AUC Train

    : F1 score Test : Confusion Matrix Test : AUC Test : F1 score 1 [311 0] [ 0 21] 1.00 1.00 [103 0] [ 2 6] 0.87 0.85 2 [310 0] [ 0 22] 1.00 1.00 [103 1] [ 2 5] 0.85 0.76 3 [312 0] [ 0 20] 1.00 1.00 [101 1] [ 5 4] 0.71 0.57 4 [309 0] [ 0 23] 1.00 1.00 [105 0] [ 2 4] 0.83 0.80 5 [309 0] [ 0 23] 1.00 1.00 [105 0] [ 2 4] 0.83 0.80 平均 0.82 0.76 • XGB 実行結果 – Training data : 332 rows × 3728 columns – Test data : 111 rows × 3728 columns – 5回ランダムに抽出 18
  10. 機械学習アルゴリズムの適用 • XGBを5回繰り返し実行 • それぞれの回でFeature Importance (Gain)が1.0以上、かつ解釈可能な用語 を選択 • 32語選択

    • Gain >= 1.0以上 : 43語 • 解釈が難しい用語11語を削除 (b, l, 以外, 検討, 後, 国内, 情報, 成績, 等, 副作用, 臨床) ×5回分の結果分 実行毎に異なる結果分 19
  11. 機械学習アルゴリズムの適用 実行回数 Train : Confusion Matrix Train : AUC Train

    : F1 score Test : Confusion Matrix Test : AUC Test : F1 score 1 [312 0] [ 13 7] 0.67 0.51 [101 1] [ 2 7] 0.88 0.82 2 [311 0] [ 14 7] 0.66 0.50 [103 0] [ 2 6] 0.87 0.85 3 [306 1] [ 15 10] 0.69 0.55 [107 0] [ 0 4] 1.00 1.00 4 [309 1] [ 13 9] 0.70 0.56 [104 0] [ 2 5] 0.85 0.83 5 [309 0] [ 15 8] 0.67 0.51 [105 0] [ 3 3] 0.75 0.66 平均 0.87 0.83 • 決定木 実行結果 – Training data : 332 rows × 32 columns – Test data : 111 rows × 32 columns – 5回ランダムに抽出 22
  12. 結果 • 決定木① 23 • ランダムに抽出された332件中、「データベース」=1が20件 • 20件中「陰性」を2個以上含むのが3件で「データベース」=1 • 20件中「陰性」1個以下が17件、17件中2件が「心血管系」を

    2個以上含み、「データベース」=1 • 「陰性」1個以下、「心血管系」1個以下が15件、15件中2件 が「無顆粒球症」を2個以上含み、「データベース」=1 • 「陰性」1個以下、「心血管系」1個以下、「無顆粒球症」1 個以下の場合「データベース」=0 (13件誤分類) • 副作用として使われている用語 心血管系、無顆粒球症 • 患者背景として使われている用語 陰性 (HER2陰性、PD-L1陽性のホルモン受容体陰性) Train : Confusion Matrix Train : AUC Train : F1 score [312 0] [ 13 7] 0.67 0.51 「陰性」が2個以上 and/or 「心血管系」が2個以上 and/or 「無 顆粒球症」が2個以上含まれる場合、データベース調査
  13. 結果 • 決定木② 24 Train : Confusion Matrix Train :

    AUC Train : F1 score [311 0] [ 14 7] 0.66 0.50 • ランダムに抽出された332件中、「データベース」=1が21件 • 21件中「動脈」を2個以上含むのが3件で「データベース」=1 • 21件中「動脈」1個以下が18件、18件中2件が「ケトン体」を 2個以上含み、「データベース」=1 • 「動脈」1個以下、「ケトン体」1個以下が16件、16件中2件 が「無顆粒球症」を2個以上含み、「データベース」=1 • 「動脈」1個以下、「ケトン体」1個以下、「無顆粒球症」1 個以下の場合「データベース」=0 (14件誤分類) • 副作用として使われている用語 動脈(動脈血栓塞栓症)、ケトン体(ケトン体増加)、無顆粒球 症 • 患者背景として使われている用語 動脈(高安動脈炎、巨細胞性動脈炎) 「動脈」が2個以上 and/or 「ケトン体」が2個以上 and/or 「無 顆粒球症」が2個以上含まれる場合、データベース調査
  14. 結果 • 決定木③ 25 Train : Confusion Matrix Train :

    AUC Train : F1 score [306 1] [ 15 10] 0.69 0.55 • ランダムに抽出された332件中、「データベース」=1が25件 • 25件中「心血管系」を2個以上含むのが4件で「データベース」 =1 • 25件中「心血管系」1個以下が21件、21件中3件が「動脈」を 2個以上含み、「データベース」=1 • 「心血管系」1個以下、「動脈」1個以下が18件、18件中3件 が「陰性」を2個以上含み、「データベース」=1 • 「心血管系」1個以下、「動脈」1個以下、「陰性」1個以下 の場合「データベース」=0 (15件誤分類) • 副作用として使われている用語 心血管系、動脈(動脈血栓塞栓症) • 患者背景として使われている用語 動脈(高安動脈炎、巨細胞性動脈炎) 陰性 (HER2陰性、PD-L1陽性のホルモン受容体陰性) 「心血管系」が2個以上 and/or 「動脈」が2個以上 and/or 「陰 性」が2個以上含まれる場合、データベース調査
  15. 結果 • 決定木④ 26 Train : Confusion Matrix Train :

    AUC Train : F1 score [309 1] [ 13 9] 0.70 0.56 • ランダムに抽出された332件中、「データベース」=1が22件 • 22件中「動脈」を2個以上含むのが3件で「データベース」=1 • 22件中「動脈」1個以下が19件、19件中3件が「心血管系」を 2個以上含み、「データベース」=1 • 「動脈」1個以下、「心血管系」1個以下が16件、16件中3件 が「悪性腫瘍」を2個以上含み、「データベース」=1 • 「動脈」1個以下、「心血管系」1個以下、「悪性腫瘍」1個 以下の場合「データベース」=0 (13件誤分類) • 副作用として使われている用語 動脈(動脈血栓塞栓症)、心血管系、悪性腫瘍 • 患者背景として使われている用語 動脈(高安動脈炎、巨細胞性動脈炎) 「動脈」が2個以上 and/or 「心血管系」が2個以上 and/or 「悪 性腫瘍」が2個以上含まれる場合、データベース調査
  16. 結果 • 決定木⑤ 27 Train : Confusion Matrix Train :

    AUC Train : F1 score [309 0] [ 15 8] 0.67 0.51 • ランダムに抽出された332件中、「データベース」=1が23件 • 23件中「心血管系」を2個以上含むのが3件で「データベース」 =1 • 23件中「心血管系」1個以下が20件、20件中4件が「陰性」を 2個以上含み、4件中3件が「悪性腫瘍」を含まず「データ ベース」=1 (4件中1件が「悪性腫瘍」を含み「データベース」 =1) • 「心血管系」1個以下、「陰性」1個以下が17件、17件中2件 が「糖尿病」を4個以上含み、「データベース」=1 • 「心血管系」1個以下、「陰性」1個以下、「糖尿病」3個以 下の場合「データベース」=0 (15件誤分類) • 副作用として使われている用語 心血管系、悪性腫瘍、糖尿病 (糖尿病合併症を含む) • 患者背景として使われている用語 陰性 (HER2陰性、PD-L1陽性のホルモン受容体陰性)、 糖尿病 「心血管系」が2個以上 and/or 「陰性」が2個以上で「悪性腫瘍」 を含まない and/or 「糖尿病」が2個以上含まれる場合、データ ベース調査
  17. まとめ • RMPの概要ページ(P1)を抽出し、テキストデータの作成ができた • テキストデータを自然言語処理することにより、予測モデルの作成ができた (決定木) – 「陰性」「心血管系」「無顆粒球症」 – 「動脈」「ケトン体」「無顆粒球症」

    – 「心血管系」「動脈」「陰性」 – 「動脈」「心血管系」「悪性腫瘍」 – 「心血管系」「陰性」「糖尿病」 • テストデータの平均でAUC : 0.87、F1 score : 0.83の予測精度が得られた 28
  18. 今後の課題 • 運用上の課題 – 予測モデルの共有化 • ダッシュボード (本資料巻末に掲載) • 半期、4半期等、定期的な更新

    – 評価 • 社内担当者や業界内勉強会で意見聴取 • データベース調査採用への貢献 30
  19. 今後の課題 • 技術的な課題 – 特徴量選択 (変数として使用する用語の選択) • Feature Importanceは本来変数を削減してから算出すべき •

    多重共線性がある用語の一方が落とされ、大事な用語を失っている可能性があるこ とを踏まえた特徴量選択方法を検討する必要がある – 形態素解析 • 専門用語が細かく「分かち書き」されてしまうことを踏まえた対策の検討 – データ作成 • 患者背景、薬効、リスク(副作用)といった情報で整形されたデータの作成 31
  20. 32

  21. 背景 • 医薬品の開発、製造販売後の 安全性監視活動を効率的に行 い製薬企業の負担を減らすこ とは国家的な課題でもある • 国家戦略では、「薬事規制改 革等を通じたコスト低減と効 率性向上」として、「リアル

    ワールドデータの利活用促進」 を掲げている 厚生労働省「日本創薬力強化プラン及び医薬品産業強化総合戦略」 https://www.mhlw.go.jp/content/10801000/000398096.pdf 33
  22. データ • 形態素解析 – 辞書選択   辞書 分かち書き確認 例文 :「西野カナ 神ってる

    宮藤官九郎 ニューモシスティス肺炎 ニュー モシスチス肺炎 1%キシロカイン 10分間歩行」 MeCAB 西野 カナ 神 っ てる 宮藤 官 九郎 ニューモシスティス 肺炎 ニューモシ スチス 肺炎 1 % キシロカイン 10 分間 歩行 MeCAB + NEologd 西野カナ 神ってる 宮藤官九郎 ニューモシスティス 肺炎 ニューモシス チス肺炎 1% キシロカイン 10分間 歩行 MeCAB + NEologd + Comejisyo 西野カナ 神ってる 宮藤官九郎 ニューモシスティス肺炎 ニューモシスチ ス肺炎 1%キシロカイン 10分間歩行 35
  23. 工夫したところ • 443レコード、3729列のアンバランスなデータの取り扱い • 機械学習アルゴリズムの実行を3段階に分けた Ø 1段階目で機械学習アルゴリズムの選択 Ø 2段階目でXGBによる用語選択 Ø

    3段階目で決定木による予測モデル作成 • トレーニング、テストの抽出ごとに、機械学習アルゴリズムの実 行結果が異なった • 2段階目、3段階目の実行を5回繰り返し行い、結果をまとめた 36
  24. 苦労したところ • PDFの取り扱い • PyPDF2で読めないPDFがあり、errorが続いた Ø 一つひとつ読めないPDFを特定し、Googleドキュメントでテキスト化した • 形態素解析辞書のインストール •

    ComejisyoがWindows版Anacondaで使用できなかった   • 最終的にはGoogle Coraboratery上でユーザー辞書として読み込んだ • 日本語の取り扱い • そもそもPDFや形態素解析辞書の問題も日本語コード体系の違いに原因があるのでは • Feature importanceや決定木の日本語表示 Ø japanize-matplotlibをインストールして対応 37
  25. 参考資料 DataMix 「データサイエンティスト育成コース」の講義資料、プログラム以外で参考にした資料 • 厚生労働省「医薬品産業の現状と課題」 「日本創薬力強化プラン及び医薬品産業強化総合戦略」 https://www.mhlw.go.jp/content/10801000/000398096.pdf • 日本薬剤師会「3分でわかる!RMP講座」 https://www.nichiyaku.or.jp/assets/uploads/pharmacy-info/rmp.pdf

    • 独立行政法人 医薬品医療機器総合機構 (PMDA) https://www.pmda.go.jp/safety/info-services/drugs/items-information/rmp/0001.html • "Automate boring stuff with Python" p.304 - p.305 • 「日経ソフトウェア 2020年3月号」p.58 - p.69 「特集4 Python X PDF活用術」 • 「日経ソフトウェア 2019年1月号」p.6 - p.27 「特集1 機械学習のプロセス徹底解説」 • 「電子医療記録の分ち書き用ユーザ辞書 ComeJisyo の紹介と単語生起コスト」 https://www.anlp.jp/proceedings/annual_meeting/2012/pdf_dir/C3-7.pdf • Comejisyo プロジェクト日本語トップ https://ja.osdn.net/projects/comedic/ • TECH BLOG by GMO 「MeCabへユーザー辞書を追加する方法」https://techblog.gmo-ap.jp/2019/09/18/mecab/ • Qiita「PythonとMecabで特定の品詞の単語だけ取り出す」https://qiita.com/ganariya/items/68fdcfed953f066ad4b7 • CUBE SUGARCONTAINER 「Python: XGBoost を使ってみる」 https://blog.amedama.jp/entry/2019/01/29/235642#%E7%89%B9%E5%BE%B4%E9%87%8F%E3%81%AE%E9%87%8D%E8%A6%81%E5%BA%A6%E3%82%92%E5%8F%AF%E8%A6 %96%E5%8C%96%E3%81%99%E3%82%8B • StatsFragments 「Python XGBoost の変数重要度プロット / 可視化の実装」 http://sinhrks.hatenablog.com/entry/2015/08/27/000235 • Qiita「xgboost で Feature Importance を算出する。」https://qiita.com/daichildren98/items/ebabef57bc19d5624682 • Qiita「[Python]Graphviz不要の決定木可視化ライブラリdtreepltをつくった」https://qiita.com/nekoumei/items/7f2209295515c3aa1053 • 「Kaggleで勝つ データ分析の技術」(技術評論社) p.232 - p.246 「4.3 GBDT(勾配ブースティング木)」 38