勉強の記録

機械学習、情報処理について勉強した事柄など

多変量解析における説明変数の選び方(私見)

多変量解析における説明変数(特徴量,共変量などとも)の選び方についての私見.統計の専門家でもないし,機械学習の専門家でもないが,ざっと勉強したところをまとめる.(統計)のところは,いわゆる統計的機械学習ではなく基礎的な統計を想定.cross validationはせず,データすべてを主に重回帰(回帰問題)or ロジスティック回帰(分類問題)によるモデルに投入するようなアプローチ.(機械学習)のところは,モデルはMLPでもXGBoostでも何でも良いが,画像や自然言語系ではなく各説明変数が特徴量として入力できるような状況を想定している.

ここは違うぞ,などあればぜひぜひコメントをください. 投稿から時間が経っていても構いません.

tl;dr

・予測したいとき: overfitしにくい数まで絞り込むための機械的変数選択はNG.モデルの性能が過大評価される. leakageにも注意.

・特定の説明変数が有効か知りたいとき: 因果ダイアグラムを描いて,投入すべき説明変数を吟味する. 目的とした係数のp値が小さくなるような,操作的変数選択は絶対NG.

・どの説明変数が有効か知りたいとき: どうしても探索的にならざるを得ず,再現性が微妙. test setを分けるか,追試により検証する.

なんのためにモデルを組むか.

1. 予測がしたい

なにかターゲットとなる値(目的変数)があって,それが予測できれば良いという場合.つまり,予測モデルを組むとき.

【統計】モデル評価としてはresidual devianceやAICなどをみる.投入できる変数の数としてはサンプルサイズに対して経験的な数がわかっており,その程度に収める.既知の予測因子を許される数だけ入れる,というのが基本(研究計画から立てるなら,本来は投入したい因子の数が先にあって,それを満たすだけサンプルを集めるというアプローチが王道).外部データで検証しないのでoverfitに弱い.多数の説明変数を用意してステップワイズ法などの機械的な変数選択を行なうと,過大評価された説明変数が選択され,モデルの予測性能が過大評価される.ステップワイズ法が悪とされるのはここ. 予測のみに興味があって各変量の係数には全く興味がない場合,多重共線性は気にする必要がない.ただし,単純に予測だけできれば良いという局面はあまりなく,各係数にも興味がある場合が多いのでその場合は多重共線性があると該当変数の係数同士が不安定になる.該当変数同士以外の係数にはあまり影響ないので,それが許容されるならok.

※投入できる説明変数の数については諸説あるようだが,例えば以下に一覧となっている.

医学書院/週刊医学界新聞(第2933号 2011年06月20日)

機械学習機械学習の主戦場.最終的にtest setを用いて外的妥当性を確保するため,特に制限はない.モデルとしてロジスティック回帰モデルや線形回帰モデルを用いても良いし,ステップワイズ法を用いても良い.ただ,その場合は投入する変数の数をハイパーパラメータなどとして最適化することが必要.GBDTなど決定木系はモデルの内部で変数選択がなされている.交互作用項などについても,特徴量(説明変数)を創ってみて,dev setなどで予測性能が上がるかを評価して入れる入れないを判断すれば良い.このあたりはむしろ特徴量エンジニアリングとしてどのように特徴量を創ってモデルに投入すべきかという文脈で語られることが多い.変数選択を行なう目的としては①計算資源の問題,②関係ない特徴量を入れることによる汎化性能の悪化,あたりか.機械学習領域の変数選択ガイドラインとしては[Guyon+ 2003]が有名.

読書日記: 読了:Guyon & Elisseeff (2003) 変数選択入門

【共通】どの時点で予測したいのか.予測したい時点で判明している変数のみをモデルに含める.結果変数を予測にいれてしまってないか(=leakage)に注意. 有効な予測因子についての事前知識があれば,それをモデルに組み込むべきというのは両者共通.

2. 説明したい

どちらかというと統計の場面ではこちらのケースが多い.機械学習でもモデルの説明可能性や解釈性が求められるようになってきた.

2-1. ある個別の説明変数が,関連しているか知りたい.

関連の有無を知りたいときも,因果関係を推論したいときも含める.なお,直接効果を見たいのか,間接効果を見たいのか.例えば塩分摂取量と心筋梗塞リスクを知りたいときに,高血圧のような媒介因子を調整するか否かで大きく意味が変わってくる.

【統計】各変数の係数を見れば良い.多重共線性があるとその変数間での係数が不安定になるため目的の変数と強く相関する説明変数は省く.変数選択については上記のように何をみたいか,何を調整したいかで変わってくる.そのためには因果ダイアグラムを描いてみるのが良い.

『バックドア基準の入門』@統数研研究集会

相関と因果について考える:統計的因果推論、その(不)可能性の中心

私見だが,上記の因果ダイアグラムに則った変数選択の後で行われる場合,「対象としている変数についてのp値が一番低くなるような説明変数のサブセットを選ぶ」ということさえしなければ,機械的な変数選択も別に構わないのではないかと思っている.

なお,調整したい交絡因子があるが,測定できていない・データがないというときはどうするか?その場合は,感度解析を行なう.そうでなくとも,見逃している交絡因子がないか確認する意味で有用.

観察データを用いた因果推論で生じるバイアスの程度を考える:感度分析(Sensitivity analysis) & "E-value"入門 - Unboundedly

機械学習】発展途上.random forestなどのfeature importanceやSHAP valueをみる,など.permutation importanceなども.Uplift modelingというのも一つのキーワードか.ただ,重回帰やロジスティック回帰と比べると,個々の変数がどうモデルのアウトプットに影響しているかを可視化するのは難しい.

2-2. 何が重要な説明変数かしりたい

いわゆる探索的研究である.事前研究がなく,何が関連しているか・因果関係があるかさっぱり分からないとき.

【統計】科学的知識,背景知識からなんとか因果ダイアグラムを描くが,説明変数の候補が増えてしまいがち.どうしようもないので,相関の強い説明変数は一方を省いたり,ある程度機械的な変数選択に頼る.FDRなどの多重検定の補正を行なったとしても再現性は低く,このような解析から「××には,●●が関連していた」と主張する論文は,test setを分けるか上記2-1.のような追試で検証される必要がある.

Bonferroni法、Holm法、False Discovery Rate | 大阪大学腎臓内科

機械学習機械学習タスクとして設定されることは少ないかもしれない.二段目のモデルに投入すべき特徴量を選択する一段目の解析として実施されることはありうる.logistic regressionのp値で評価しても良いし,2.1同様にrandom forestなどのfeature importanceやSHAP value,permutation importanceなどをみても良い.cross validationでそれらの値のばらつきを見る.

まとめ

ざっと,現時点での自分の理解をまとめてみた.

ここはおかしい・間違っているなどあれば,ぜひご指摘ください.

参考ページ

www.slideshare.net

www.igaku-shoin.co.jp

www.igaku-shoin.co.jp

参考書籍

勉強会メモ 「AIトレンド・トップカンファレンス報告会:世界最先端のAI研究開発動向が1日でわかる!」

https://www.ai-gakkai.or.jp/no76_jsai_seminar/

人工知能学会主催。学生や若手研究者を数名派遣し、その報告会。 モデルの妥当性、頑健性をいかに担保するかが大きな話題。 モデルの説明可能性についての研究も多かったとのこと。

・adversarial learning. データに対して少量の変更で出力を変更してしまうような敵対的データを生成して、それにたいする頑健性を確保する。

・un-biased model. 例えば男女差、人種差を差別しないモデルが望ましいが、それをどう実現するか。

Controllable Invariance through Adversarial Feature Learning (NIPS2017) 単純に該当するカラムを取り除けばよいという話ではない(例えば部活や趣味などから性別を推定できることも)。 潜在空間から取り除きたい情報(性別、人種)を当てるdiscriminatorを学習させ、これを潜在空間にreverse gradientをかけることで、 取り除きたい情報を除いた潜在空間を得て、ここから目的のタスクを識別するpredictorを学習させる。

f:id:tmitani-tky:20190305152003p:plain

・モデル逆推定 公開されたモデルから、そこからデータセットを推定する、という攻撃。 これ医療関連の機械学習モデルでされるとかなりきびしくて、自然言語処理のモデルで行われると致命的なプライバシー侵害が起きそう。

勉強会メモ『第2回 言語処理研究会 「自然言語処理の中長期研究構想を論じる会」』

情報処理学会自然言語処理研究会(通称:NL研)が主催した上記の勉強会に参加してきた。 自然言語処理研究者5人によるシンポジウム形式。

nl-ipsj.or.jp

1 「対話システムのあるべき姿」NTT研究所 東中竜一郎先生

対話システムの概略と、NTTで開発した対話システム(マツコロイドなど)の構成について。 end-to-endというよりはモジュールを組み合わせて作っている。 人手評価で6−70% okとされる程度の精度。

対話システムを大きく2つに分けるならタスク思考型と非タスク思考型に分かれる。 タスク志向型においても、非タスク志向型(雑談対話)を組み込むことでより自然な対話になる。

対話を作っていくためには話者間での共通基盤の構築が重要だが、それはこれから。 コールセンター対応、情報提供・物語、教育… さらにその先には交渉、議論、漫才…。

2 「構文や語彙意味論の分析結果をプログラムとして具現化する言語パターンマッチAPIの可能性」岡山大学竹内孔一先生

www.slideshare.net

モジュール間をつなぐAPIとしては人間が理解可能なラベルをつけることで、個々のモジュールごとの操作性を確保することができる。 end-to-endのモデル構築に必要な大量なデータを準備できないような局面では、このようなモジュールごとのアプローチが有用では。 操作言語としてはDIALやprologなどを。

3 「音声言語の研究と今後の展開」NAIST 中村哲先生

音声認識性能は向上してきたが、崩れた会話や未知語があるようなタスクはまだ難しい。 音声認識の研究と、音声合成の研究の組み合わせが重要。 音声言語では文字情報だけでなくイントネーションや強弱、声の高さなども人間は認識している。 それをどう組み込むか。

4 「文章生成研究は楽しい」佐藤理史先生(名古屋大)

主に小説自動生成の話。まだプロットは人手であり、ロボットは部品を組み合わせているだけ。 (自分で全部書いた小説と、プロットをロボットに与えて構築した小説を両方投稿したら後者だけ選考に通った)。

スライドもillustrativeで楽しいプレゼンだった。

5 「自然言語テキストの理解と評価」乾健太郎先生(東北大学理研AIP)

自然言語処理でかなり勢いのある研究室。 個々の技術についてではなく、どこを目指していくと「言語理解」が可能になるか、マイルストーンを提示する講演。 1. 既存のQAセットでも単純な一致で溶けるようなeasy questionが多い。hard questionは正答率が悪い。 2. 記述答案の自動評価をしたい。submitごとにすぐにinteractiveに評価が返ってくると、学習にも有用では。 技術的なチャレンジ ・どこがなぜ問題か,どうするとよいかを説明できる技術 ・文脈から言わんとする内容を推論できる談話理解 ・誤りを含む不完全な入力に対する頑健な解析

まとめ

自然言語処理の各ジャンルのトップ研究者陣による講演会。 乾先生の講演でも主要なテーマだった「言語理解」をどう目指していくかが積年の課題。

Multi-Task Label Embedding for Text Classification

これはEMLP2018から。

Multi-task learningを利用してLabelにembeddingを行うことで文書分類の精度が向上した、という話。 ここで言うmulti-taskは、複数のclassification task、という意味。

関連研究

本文中に挙げられていたembedding label in NLPの先行研究は下記。

[Bengio 2010] Label embedding trees for large multi-class tasks. In NIPS, pages 163–171.

[Norouzi 2013] Zero-shot learning by convex combination of semantic embeddings. CoRR, abs/1312.5650.

[Ma 2016] Label embedding for zero-shot fine-grained named entity typing. In COLING, pages 171–180.

概要

f:id:tmitani-tky:20190303020724p:plain

入力文側のLearning layer: LIとしてはbiLSTM, ラベル側のLearning layer: LLとしては単純なword embeddingの平均を使用.このようなネットワーク構造を用いることで、複数のtaskに対して1つのネットワークで同時に学習可能となった.

(先行研究の文献を読んでいないのだけど、label enbeddingを使用した先行研究と使い方がどう違うのだろうか。)

新たなtaskへの学習

Hot Update

Cold Update

Zero Update

Experiments

既存のテキスト分類データセット

・Multi-Cardinality

・Multi-Domain

・Multi-Objective

の切り口でまとめたものを学習させ、single task leraningによる学習結果と比較。 似たタスクのほうがgainが大きく、multi-objectiveのほうがgainは小さかったが、いずれでも精度が向上した。

感想

hyper-parameterやネットワーク構造を含めかなり丁寧に解説されている印象で、再現実装はできそう。医療テキストのタグ付コストを考えると、Label Enbeddingという概念は重要。たとえば病名タグ付けであればobjectiveは似ているので、個々の病名ごとに全く別のネットワークを学習させる必要がなくなるので、分野横断的な汎用性の高いモデルが組める。

BERTでは二文を[SEP]でつなげて入力とできるので、マルチラベル分類の小規模データセットを、ただ「target文+[SEP] + labelの単語」という形で入力してT/Fの二値分類器として解かせてみたことがあるが、single task learningとほぼ同等の結果が出ていた。このときは8タスクしかなかったのであまり優位性がでなかったが、ラベルが増えてくれば有用なのかも。

おまけ

Joint Embedding of Words and Labels for Text Classification - Paper Survey

↑で紹介されている研究も似たような切り口?

Few-Shot Text Classification with Pre-Trained Word Embeddings and a Human in the Loop

Few-Shot Text Classification with Pre-Trained Word Embeddings and a Human in the Loop

https://katbailey.github.io/talks/Few-shot%20text%20classification.pdf

https://arxiv.org/pdf/1804.02063.pdf

Few shot text classificationについて知りたいのだけど、あまり検索でヒットしない。 arXiv投稿論文で、国際会議系へは投稿されていない(通っていない?)ようだが目を通してみた。

  1. Word embeddingの加重平均で文書のembeddingを得る
  2. 少数のラベルつき文書の平均で各クラスを代表し、未ラベル文書はその代表文書ベクトルとのcos類似度で分類する。
  3. 効率的な(各クラスの中心に位置する)文書にラベルをつけるため、LDAにより分類したいクラス数に分類し、そのクラスへの確信度が最も高い文書を選んでくることにする。

active-learningにLDAを使用した、という感じ。文書Embedding部分含めあまり目新しいものはないかな?

うーん、未ラベル文書なんて混沌としたコーパスなのだから、全てが目的の数クラスからなる状況って実験状況を除くとあまりないんじゃないか。まぁそれはcos類似度を何らかの閾値で切って、それ以上のものだけを該当クラスにラベリングして、それ以下のものはその他にラベリングするなどすれば対処可能か。

本文中によく似たラベルへの分類は精度が落ちたとあるけど、そこが大事なところなのでは。

Uplift modeling for clinical trial data

http://people.cs.pitt.edu/~milos/icml_clinicaldata_2012/Papers/Oral_Jaroszewitz_ICML_Clinical_2012.pdf

Uplift modeling for clinical trial data [ICML2012]

先日の「仕事のための機械学習」を読んでからUplift modelingを調べている. web界隈で有名な解析方法のようだけど,これ医療のRCTにもそのまま使えるよなと思っていたら,2012年ICMLにpaperがあった.

メモ

4章. Augmenting uplift modeling using treatment and control classifiers

は,RCTのみならず観察研究にもUplift modelingを適用できるということなのだろうか.

baseには半教師あり学習のco-training(Blum, 1998)を使っているとのこと.

参考:半教師あり学習_Semi-Supervised Learning (Vol.20)

Notationがややわかりにくいので以下に.

DT:treatment dataset

DC:control dataset

DcT:treatment dataset for classifier

DcC:control dataset for classifier

DuT:treatment dataset for uplift model

DuC:control dataset for uplift model

MUuplift model (class transformation methodを使って,一つの確率モデルで定式化する.本文3章参照.X→uplift(=2z-1))

MT:classifier on treatment (DT上でのoutcome Yの確率予測モデル.X→y)

MC:classifer on control (DC上でのoutcome Yの確率予測モデル.X→y)

うーん,step 7,8がよく分からない. (式の上ではわかるのだけど,なぜそれでうまくの行くのかが....)

uplift modeling

Causal Inference and Uplift Modeling: A review of the literature

http://proceedings.mlr.press/v67/gutierrez17a/gutierrez17a.pdf

Rubinの因果モデル

割り付けられなかった側の測定されない未来の結果を欠損値として、もしそれが観測された時の値との差を因果効果として設定。いくつかの仮定をおいてそれを求めていく因果推論の枠組み。

CATE

conditional average treatment effect. サブグループ内での平均因果効果。これを推定したいことが多い。 サブグループ内での割付が結果と独立(CIA:conditional independence assumption, or unconfoundedness assumption)でないと求められない。

propensity score

傾向スコア。Xiに対してtreatmentがなされる確率。

uplift modeling

X全体にたいしてのCATEではなく、個々のXに対するCATEのうちX全体に対するCATEからの上乗せ分をモデル化する。(全体で0.2の確率で効果がありますよ、ではなく、Aさんは0.1の確率で、Bさんは0.3の確率で…と個々に対する'Uplift'を求めたい)。

The two-model approach

treatment groupとcontrol groupを別にモデル化し差を取る。個々のモデルの性能がよくても、あくまで差をモデル化しているわけではないので、以下2つの方法よりもupliftの予測については性能が劣ることが指摘されているとのこと。

The class transformation method

binary outcomeの場合のみ。 治療したのに発症したケース、治療してないのに発症していないケースをZi=1, それ以外の時をZi=0として、Ziをtargetとしてモデル化する。 このとき、Xiに対するCATE:τ(Xi)は、2P(Zi=1|Xi)-1 で求められる、らしい。 上記は、treatmentがbalancedなときのみだが、propensity scoreを用いてunbalancedなときへの拡張(Yi*)もしられている。

boil down to 〜: 詰まるところ〜になる

modeling uplift directly

既存の機械学習モデルを用いて、と書いてあるが具体的にはよくわからない。 'honest' approachとして、半分でモデル化し、半分で検証する方法の記載も。

Evaluation

traditional uplift metrics

個々人についてのtreatment/control outcomeは両方を観測することはできないので、uplift bins or uplift curveで評価する an idea of the uplift gain per decile Qini value いわゆるAUUCの話?

Metrics based on Y*

the class transformation methodで出現したY*に対するmetrics.

Two-model approachとtraditional uplift metricsは分かるが、それ以外のところが結局よく分からなかった。