CARTの説明に挑戦する
- こちらでCARTを用いたSLEの分類基準について書いた
- SLEのこと、分類基準のこと、その意義・使い方については熟知しているが、統計や機械学習のことには拒絶感の強い人々を対象にCARTの説明をしてみることにする
- そのためのCART周辺の整理
- 機械学習(Wiki)
- アルゴリズムのタイプ(この説明は「教師アリ・ナシ」くらいは必要。「強化学習」は分類基準を成長させたいのであれば、触れることも考慮。いずれにしろ、かいつまんで)
- 教師アリ学習
- 判断の結果がわかった状態で実施
- 教師ナシ学習
- 判断の結果がわからない状態で実施…データの構造を読み取る…マイニング要素
- 半教師アリ学習
- 教師アリと教師ナシを併せる
- 強化学習
- データから判断をして行動すると、その行動が評価されるという仕組みを使って、判断を改善していく
- Transduction
- 演繹(deduction)と帰納(induction)と、Transduction。Deductionは入力からルールをみつけること。Transductionは入力の中に含まれる未知のことについて判断をすること
- Learning to learn
- 複数の判断を一緒に行うことで判断作業全体の改善を目指す
- 教師アリ学習
- 機械学習の基本的特徴
- いろいろなアプローチ
- これは『色々ある。CARTはその一つ(に過ぎない)』というメッセージ(なので全部を示す必要はない)
- 図を使って"at a glance"で説明するのがよいだろう
- Decision tree learning
- Association rule learning
- Artificial neural networks
- Genetic programming
- Inductive logic programming
- Support vector machines
- Clustering
- Bayesian networks
- Reinforcement learning
- Representation learning
- Sparse Dictionary Learning
- CARTの説明(スライド)(Supervised_learning),(Decision_tree_learning(CARTを含む)
- 他分野・他疾患での分類基準と機械学習の現状
- 提案のレベル・コンセンサスのレベル?
- 診断(は難しい?)
- 分類(は行われている)(『これだ』という絶対基準がなくて、診断が曖昧になりがちな疾患に多い…)
- CARTの実施
- 薀蓄はそれとして、「じゃあ、私たち(〜統計や機械学習のことには拒絶感の強い人々)も使えるの?」について
- Rなら
- "CRAN, CART"でグーグルして挙がってくる
- "CRAN Task View: Machine Learning & Statistical Learning"のページを
- "Ctrl + f"-> "CART"して、
- "Recursive Partitioning : tree-structured models for regression, classification and survival analysis, following the ideas in the CART book, are implemented in rpart (shipped with base R) and tree. Package rpart is recommended for computing CART-like trees." の文言をみつける
- Rでヘルプ記事を表示すれば
help(rpart)
-
-
- Examplesが以下のように出ていて
-
fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis) fit2 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis, parms=list(prior=c(.65,.35), split='information')) fit3 <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis, control=rpart.control(cp=.05)) par(mfrow=c(1,2), xpd=NA) # otherwise on some devices the text is clipped plot(fit) text(fit, use.n=TRUE) plot(fit2) text(fit2, use.n=TRUE)
-
-
- こんな絵が描けますよ
-
診断の一致の程度
- 今日の前の記事で紹介したSLE関係の話では、新規分類基準の性能を「ゴールドスタンダード診断」との正誤の程度として評価している
- Cohen's kappa(Wiki)を使っているらしい
- たまたま診断名が一致したのではなくて、「有意」に関連していますよ、という程度の数値化
- Rでは、irrパッケージ(他のパッケージにもあるようだが)のkappa2()関数
- 2カラムの診断名データを渡すようだ
library(irr) data(diagnoses) # Unweighted Kappa for categorical data without a logical order kappa2(diagnoses[,2:3]) print(diagnoses[,2:3])
> diagnoses[,2:3] rater2 rater3 1 4. Neurosis 4. Neurosis 2 2. Personality Disorder 2. Personality Disorder 3 3. Schizophrenia 3. Schizophrenia 4 5. Other 5. Other 5 2. Personality Disorder 2. Personality Disorder 6 1. Depression 3. Schizophrenia 7 3. Schizophrenia 3. Schizophrenia 8 1. Depression 3. Schizophrenia 9 1. Depression 4. Neurosis 10 5. Other 5. Other 11 4. Neurosis 4. Neurosis 12 2. Personality Disorder 4. Neurosis 13 2. Personality Disorder 2. Personality Disorder 14 4. Neurosis 4. Neurosis 15 2. Personality Disorder 4. Neurosis 16 3. Schizophrenia 3. Schizophrenia 17 1. Depression 1. Depression 18 1. Depression 1. Depression 19 2. Personality Disorder 4. Neurosis 20 3. Schizophrenia 3. Schizophrenia 21 5. Other 5. Other 22 4. Neurosis 4. Neurosis 23 2. Personality Disorder 4. Neurosis 24 1. Depression 4. Neurosis 25 4. Neurosis 4. Neurosis 26 2. Personality Disorder 2. Personality Disorder 27 1. Depression 1. Depression 28 2. Personality Disorder 4. Neurosis 29 3. Schizophrenia 3. Schizophrenia 30 5. Other 5. Other
- また、新旧の2基準間の診断の一致の程度はMcNemarテストを使っている
Performance <- matrix(c(794, 86, 150, 570), nrow = 2, dimnames = list("1st Survey" = c("Approve", "Disapprove"), "2nd Survey" = c("Approve", "Disapprove"))) Performance mcnemar.test(Performance)