Study Log

とある大学院生の勉強記録。

『Rによる統計的学習入門』解答(5.4 演習問題-理論編)

『Rによる統計的学習入門』の解答例・解答上のポイントを載せます。

 

解答の目次、他の方の解答は以下の記事にまとめてあります。 

intrinsic-motivation.hatenablog.com

 


5.4 演習問題

理論編

(1)

上記リンク先の参考サイト参照

 

(2)

(a)
1-(1/n) #1-(最初のデータが元の標本のj番目のデータである確率)

 

(b)

1-(1/n) #ブートストラップは重複を許すので(a)と同様に考えて良い

 

(c)
1-(1/n)をn回繰り返すので、(1-(1/n))^n

 

(d)

n=5
d <- 1-(1-(1/n))^n #含まれる確率 なので1から引く
d
[1] 0.67232 

 

(e)

n=100
e <- 1-(1-(1/n))^n #含まれる確率 なので1から引く
e
[1] 0.6339677 

 

(f)

n=10000
f <- 1-(1-(1/n))^n #含まれる確率 なので1から引く
f 
[1] 0.632139

(g)

x <- 1:10000  #1〜10000の値を取る時の整数nをxとおく
plot(x, 1-(1-(1/x))^x)

f:id:intrinsic_motivation:20190810145241p:plain

→すぐに確率63%程度に近づいて、あとはほぼ一定

(h)

store=rep(NA, 10000)
for(i in 1:10000){
  store[i]=sum(sample(1:100, rep=TRUE)==4)>0  #rep:replace 重複アリという事
}
mean(store)
[1] 0.6336

→4番目のデータがある確率は、(e)で求めた値(63.4%)に近い

 

(3)

上記リンク先の参考サイト参照

 

(4)

日本語版では「予測の標準誤差」とありますが、英語版では「the standard deviation」と書かれているので、「予測の標準偏差」と訳すのが自然です。標準偏差であれば母集団からランダムに抽出した標本(例えばn=1000)のばらつきを指しますが、標準誤差であればその標本が複数ある(例えばn=1000×1000群)として、各群の平均値のばらつきを指します。ここではブートストラップ法を使いたいので、「予測の標準誤差」の方を採用して、解答を記します。

f:id:intrinsic_motivation:20190810150705p:plain

方針:p177の式(5.8)について説明するだけ
f:id:intrinsic_motivation:20190810162331p:plain

①ブートストラップ法を用いて、例えばn=1000のブートストラップ標本を用意する。

②①の標本を使って統計的学習法を適用し、モデルを作成する。

③②で作成したモデルに対してある1つのブートストラップ標本を入れて、パラメータの推定値を得る(日本語版p177でいうαハット*r)。

④①〜③を1000回繰り返して、n=1000のブートストラップ標本×1000とそれぞれに対応するパラメータの推定値×1000を得る。

⑤④で得られたパラメータの推定値×1000の平均を算出する。(日本語版p177でいう1/B〜の部分)

⑥④で得られたパラメータの推定値と、⑤で得られた平均値を使って標準偏差を出す…これが予測の標準誤差となる。
※1000個の標本を抽出するプロセスを1000回繰り返して、それぞれの群の平均値のばらつきを求めているので、最終的に算出されるものが標準偏差ではなく標準誤差になるという理解です。

『Rによる統計的学習入門』第5章 勉強メモ

『Rによる統計的学習入門』の第5章 勉強メモを載せます。

http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Seventh%20Printing.pdf

上記から英語版が無料でダウンロード可能。併用がオススメ。

 

以降、本の説明が難しい点、輪読会でディスカッションのポイントとなった点について触れます。

 

 

5.リサンプリング法

5章全体としては、交差検証(ホールドアウト検証、1つ抜き交差検証、k分割交差検証)と、ブートストラップという2つのリサンプリング法が述べられています。

この本でこれまで勉強してきて、最も分かりやすい章でした笑。

 

 

5.1 交差検証 

そもそも交差検証がどういう時に使われるのか書かれています。

テストデータが手に入らない時に、訓練データを使って行うものだそうです。

 

本章から急に「検証データ」という表現が出てきてテストデータと何が違うのか色々調べたのですが、役割的にはこれまでのテストデータと同じで、訓練の精度を評価するものようです。

 

じゃあ何が違うのかと言うと、おそらく

・検証データ…リサンプリングの回によっては訓練データにも使われる

・テストデータ…訓練にも検証にも使われない

という点ではないかと思います。どういう事かは後述します。

 

調べる過程でネットで色々検索しましたが、検証データとテストデータが区別されておらず、テストデータに統一されている記事が多かったです。

 

 

5.1.1 ホールドアウト検証 

本書の説明を見れば 概要は理解できるのでイチから説明はしません。追記だけ。

 

本書ではホールドアウト検証は「観測データをランダムに訓練データと検証データに分割する」とだけありますが、どうやら2分割というのが暗黙の了解のようです。

 

これまでも観測データを訓練データとテストデータに分けていたと思いますが、何が違うかと言うと、先程も書いた

・検証データ…リサンプリングの回によっては訓練データにも使われる

・テストデータ…訓練にも検証にも使われない

という部分です。例えばホールドアウト検証を10回行う時、ある観測データが、1回目の検証では訓練データになったとしても、2回目の検証では検証データになるといった事が起こります。

これまでの章で出てきた考え方では、ある観測データの役割は、訓練データかテストデータのどちらかでした。本章は「リサンプリング法」とある通り、観測データを何度も再利用するので、その度に役割が変わる事があるわけです。

 

 

5.1.2 1つ抜き交差検証 

特に追記はありません。

 

 

5.1.3 k分割交差検証 

やや気になったのはp171の記述で、「図5.6によると、交差検証は真のテストMSEよりも低く見積もることはあるものの、交差検証によるMSE曲線を最小にする点はどれも正しい柔軟さのレベル、つまり真のテストMSEを最小にする点に近い」とあります。

柔軟さのレベル(つまりx軸方向の距離)においては近いと言えそうですが、左(図2.9)においてはMSE自体に開きがあります。真のテストMSEより推定したMSEがかなり小さいのを無視して、最小になる時の柔軟さのレベルは近い、と結論付けて良いのでしょうか…。

 

 

5.1.4 k分割交差検証におけるバイアスと分散のトレードオフ

2章でも出てきた話題ですが、改めてバイアスと分散について調べた所、以下の記事が非常に分かりやすかったので紹介させて頂きます。

pekochin.com

この記事では射撃を例に例えており、

・的の中心…真の値

・撃ち抜いた点…予測値

 として、

・バイアス…的の中心からの距離

・分散…撃ち抜いた点の散らばり具合

と表現していました(イメージで頭に入ってくるので、感動!)。

 

ちなみに余談ですが、このバイアスと分散の関係は、心理学の尺度の話題で必ず出てくる妥当性と信頼性の関係と同様です。

・妥当性(≒バイアス)…測定したい概念をどのくらい的確に測定できているか

 例) 体重が計れず、視力が測定される体重計は、体重計としての妥当性が無い

・信頼性(≒分散)…同じ条件で同じ検査を受けたとして、どのくらい結果が一貫しているか

 例) 乗る度に表示される体重がコロコロ変わる体重計は信頼性が無い

 

さて、バイアスと分散のトレードオフの関係性は以下のようなイメージです。 

    f:id:intrinsic_motivation:20190707003153p:plain

 例えば100個データがあるとして、訓練データ数は以下のようになります。

・ホールドアウト検証…100/2=50個

・LOOCV…100-1=99個

・k分割交差検証(k=5)…(5-1)100/5=80個

一般には、訓練データを多く使うほど訓練が進むので、訓練MSE、バイアスは小さくなります。一方で過学習に近づくので、テストMSE、分散が大きくなる傾向があります。

 

ところで、p172に書かれている「相関関係の強い数値の平均は相関関係の弱い数値の平均よりも分散が大きいので〜」という記述の意味が分かりませんでした。

相関が強い方が、分散は小さくなるのではないでしょうか…。

 

 

5.1.5 分類における交差検証 

特に追記はありません。

分類問題の場合はモデル選びに交差検証を使い、テスト誤分類率を見るのね、という事だけ。

 

 

5.2 ブートストラップ

本書でははっきりした定義が書かれていませんが、ざっくり言うと、手元のデータから重複を許してリサンプリングを繰り返し、モデルの評価を行う手法のようです。

あとは書かれている通りです。

 

以上

 

一部、バイアスと分散のトレードオフの所で出てきた相関の話がもやっとしていますので、理解できたら追記するかもです。 

 

『Rによる統計的学習入門』解答(4.7 演習問題)

『Rによる統計的学習入門』の解答例・解答上のポイントを載せます。

 

解答の目次、他の方の解答は以下の記事にまとめてあります。 

intrinsic-motivation.hatenablog.com

 

4.7 演習問題

理論編

(1)式(4.2)を変形して式(4.3)にします。

※記述が面倒なので、便宜上、式4.3の右辺をZと置きます。

 

式(4.2)を変形すると

     P(X) = Z/(1+Z)

 ⇔ P(X)(1+Z) = Z

 ⇔P(X)+P(X)Z = Z

 ⇔            P(X)=(1-P(X))Z

 ⇔             Z=P(X)/(1-P(X))  式(4.3)

となり、同値であることが示された。

 

(2)〜(4)上記リンク先の参考サイト参照

計算問題が多く基本的に解が1つなので、手抜きします笑。

 

(5)

(a)訓練データの場合:QDA

 テストデータの場合:LDA

一般に、訓練データに対しては複雑なモデル(ここではQDA)の方が当てはまりが良い。

しかし、テストデータに対しては過学習を起こしやすい為、LDAの方が精度が高くなる。

 

(b)訓練データの場合:QDA

 テストデータの場合:非線形の度合い、データ量による

非線形である場合、訓練データで予測するなら基本的にはQDAの方が精度が高い。

 テストデータの場合は、非線形の度合いが高ければQDAだが、低ければLDAの方が精度が高くなる。

※ただ、非線形の度合いによることを言うとキリがないので、QDAと考えておく方が無難かもしれません

 

(c)予測精度は向上する

 QDAはLDAより柔軟性が高く、nが大きければバイアスが小さくなる為。

 

(d)偽(ただし、データの大きさによる)

一般に、QDAはLDAよりも複雑なモデルであり、バイアスが小さくなる。

その為データが大きければ予測の精度が高くなる。

しかし、データが少ない時にはQDAの場合過学習が起きやすい為、予測の精度が下がる。

 

(6)〜(7)上記リンク先の参考サイト参照

 

(8)ロジスティック回帰分析を用いる方が良い。

理由:ロジスティック回帰分析の方がテスト誤分類率が低いと考えられる為。

 

与えられた条件を整理すると以下のようになる。

1.ロジスティック回帰分析の場合
 訓練データの誤分類率 :20%

 テストデータの誤分類率:30%


2.K最近傍法(K=1)の場合

 訓練データとテストデータを合わせた誤分類率:18%


K最近傍法(K=1)の場合、訓練データの誤分類率は0%となる。(※日本語版p38〜39参照)

その為、テストデータを合わせた全体データの誤分類率が18%という事は、テストデータの誤分類率は36%という事である。(少なくとも、30%を超えている)

すなわち、テストデータの誤分類率が低いロジスティック回帰分析を用いるべきだと考えられる。

 

(※)この理由についてですが、いろいろ調べた結果、それっぽい解が得られたので説明を書きます。

K最近傍法(K=1)ではあるデータ(x0)の近隣1個の訓練データのクラスが、そのままx0のクラスと分類されます。

 例えば赤と青のデータを2つのクラスに分類するとして、

 あるデータ(赤)、近隣1個のデータ(赤)→あるデータを赤に分類(真)

 あるデータ(赤)、近隣1個のデータ(青)→あるデータを青に分類(偽)

 と考えると普通に誤分類しているような気がしていたのですが、以下のサイトで解決。

 

どうやら、K=1の場合は近隣1個の別のデータではなく、自分自身を見て分類しているようです。それなら100%正しく分類され、誤分類率は0%です。

stats.stackexchange.com

 

8/8追記:上記の理由より、もっとしっくりくる理由が見つかったので書いておきます。

※長くなります。

------------------------------------------------------------------------------------

①KNNの訓練とは

KNNの訓練は、元々の観測データを訓練データ(教師データ)として、格子点に対してKNNを適用する事だと解釈できます。(僕はこの格子点という概念を抜かして考えていたのですが、これがあると理解しやすくなりました)

 

例えば日本語版p37の図2.14における右側の図の場合、青とオレンジの◯が訓練データとなります。まず、この図にたくさん格子点を打ちます。図中の小さな(・)がそれに相当します。この格子点は、後にテストデータが当てはまる可能性のある全ての場所で、そのうちの一つは図2.14の左側の図の×印です。

f:id:intrinsic_motivation:20190809001936p:plain

図2.14

さて、それぞれの格子点に対して、例えばK=3でKNNを適用すると、格子点の近隣3つの訓練データ(◯)の色によって、格子点をオレンジか青のどちらかに分類できます。図では格子点が分類された色で着色されています。

 

これを全ての格子点に適用する事で、後にテストデータを投入した際、オレンジ/青に分類される領域を決める事ができます。この、領域を決定する事(=決定境界を得る事)が、KNNにおける訓練と考える事ができます。

 

そして、KNNの訓練誤分類率は、訓練データに対する誤分類率である為、元々存在する訓練データ(◯)が果たして正しく分類されていたのか、という意味だと考えられます。

 

例えば図2.14の右側の図では、一番下の訓練データ(青の◯)が、オレンジ色の領域の中に混じっています。この時、訓練データに対する誤分類が起こっているというわけです。

 

②KNNのテストとは

KNNのテストは、①によって決定された領域に、新しいデータ(◯)を投入してみて、分類の正誤を測定する事です。

 

①でオレンジ色で塗られた格子点の並んだ領域は、新たにテストデータが入れば、きっとそのデータもオレンジである確率が高いと予測される領域です。ここに入ったテストデータが実際にオレンジであれば、予測が正しいと評価されるわけです。

 

③K=1の場合

さてK=1の場合ですが、やはり自分自身というより、近隣1個の点を見て訓練していると解釈できます。これは格子点が十分に細かく並んでいれば、「近隣1個の訓練データ」は「格子点とほぼ重なる位置にある」と考えられる為です。

 

例えば訓練において、ある格子点の真上にオレンジの訓練データがある時、その格子点はオレンジ色の領域になります。逆に言えばオレンジ色の訓練データの真下は必ずオレンジの領域と見なされる為、訓練データの誤分類は起き得ません。

 

図2.6の左側の図がK=1のKNNですが、K最近傍決定境界(黒実線)を見ると、オレンジの領域の中に紛れた青い◯の周囲に、小さな境界ができています。図では格子点がある程度の距離をもって並んでいるのでいびつな境界となっていますが、格子点がより細かく並んでいれば、◯とぴったり重なる境界が出来上がるはずです。この図でも境界の中の格子点に目をやると、実際に青い◯の最近傍の格子点は青く着色されており、訓練誤分類率は0%になっているのが分かります。

f:id:intrinsic_motivation:20190809003730p:plain

 

前に「K=1の場合は近隣1個の別のデータではなく、自分自身を見て分類しているようです」と書きましたが、K=1の時だけ特別扱いする事に違和感がありました。

 

しかし、そもそも訓練データ自体にではなく十分に細かく並んだ格子点に対してKNNを適用すると考え、K=1の時は「格子点と訓練データが重なる程近い距離にある為、結果的に自分自身を見ているのと同じ状態になっている」と解釈する方が、より一貫性のある説明になるのではないでしょうか。

 

長くなりましたが以上です。

------------------------------------------------------------------------------------

 

 

(9)上記リンク先の参考サイト参照

 

応用編

(10)上記リンク先の参考サイト参照

 

(11)上記リンク先の参考サイト参照

(g)の問題については、Rで以下のようなfor文を書いて、Kが1〜20のどの場合に誤分類率が最も低いのか、求めてみると面白いかもしれません。

library(class)
train.X <- matrix(Auto01training$displacement)
test.X <- matrix(Auto01test$displacement)
train.Direction <- Auto01training$mpg01
answer <- rep(0, 20)
for(i in 1:20){
  knn.pred <- knn(train.X, test.X, train.Direction, k=i)
  aaa<- table(knn.pred, Auto01test$mpg01)
  answer[i] <- 1-((aaa[1,1]+aaa[2,2])/196)
}
answer

 

(12)(13)上記リンク先の参考サイト参照

 

 

ふぅ…K=1の場合のK最近傍法は何かまだ引っかかる部分があるので新情報があれば追記します。

あと、今度コードの綺麗な貼り方ググって修正します。

 

以上 

 

『Rによる統計的学習入門』第4章 勉強メモ

『Rによる統計的学習入門』の第4章 勉強メモを載せます。

http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Seventh%20Printing.pdf

上記から英語版が無料でダウンロード可能。併用がオススメ。

 

以降、本の説明が難しい点、輪読会でディスカッションのポイントとなった点について触れます。

 

4.分類

4章全体としては、応答変数が質的変数(カテゴリー変数)である場合に予測を行う方法として、ロジスティック回帰分析、線形判別分析(LDA:Liniear Discriminant Analysis)、2次判別分析(QDA:Quadratic Discriminant Analysis)が紹介されています。この3つに第2章で扱ったK最近傍法を合わせて、それぞれの手法の特徴を論じています。

 

4.1 分類問題の概要

ただの導入なので特筆すべき点はありません(手抜き)

 

 

4.2 なぜ線形回帰を用いないのか

 理由①:2カテゴリーであればダミー変数を使って表現できるが、3カテゴリー以上の名義尺度に用いると、カテゴリー間の距離の違いが問題になる為

 例えば、患者の症状から病名(脳卒中、薬物過剰摂取、てんかん性発作のどれか)を予測したいとする。応答変数Yの取りうる値を

  1:脳卒中の場合

  2:薬物過剰摂取の場合

  3:てんかん性発作の場合

とすると、1と2の距離と2と3の距離は同程度とは言えない。また、変数を違った割り振りにすると結果が変わってしまう(ダミー変数がダミーにならない)

 

理由②:予測される確率が0未満や1以上となる。(図4.2参照)

 

 

4.3 ロジスティック回帰

基本的な理論は割愛(手抜き)

 

注目すべきは、p126表4.2とp127表4.3において、student[Yes]の係数が逆になっている事実。

表4.2だと、学生の方が学生でない人よりも債務不履行の確率が高いという意味。

表4.3だと、他の変数の影響を一定にした下で、学生の方が債務不履行の確率が低いという意味。

この違いはなぜ生まれるかというと、変数studentとbalanceの相関がある為。つまり、学生はクレジットカードの債務残高が大きく、その為債務不履行の可能性が高いという事。もし同じクレジット債務残高なら、学生の方がそうでない場合より債務不履行の確率が低い。

この辺の説明は、第3章のsalesのくだりと同様です。

 

ちなみに、今回の輪読会でのディスカッションポイントとして以下がありました。

 

・確かに同じクレジット債務残高なら、学生の方がそうでない場合より債務不履行の確率が低いかもしれません。でも仮に実務でこの分析を担当するとして、現実として学生の利用者が多い場合は、表4.2の結果も十分に役に立つのではないでしょうか?

つまり、そもそものリサーチの目的が何であるかが重要です。今回の例はどちらが優れているというよりは、単に「こんな事が起こり得るから注意が必要ですよ」と言っているだけなので、そこを間違って解釈すると良くなさそうです。

 

・あと本書では多項ロジスティク回帰分析は実用上あまり使われていないと言っていますが、僕の知る限り、マーケティングのブランド選択モデルでは多項ロジスティク回帰が非常によく使われるように思います。この違いは何なんでしょうか…。

 

 

4.4 線形判別分析(LDA:Linear Discriminant Analysis)

最初はこのLDAとQDAが覚えられなくて、何度もこの本をを見直しました。

LはLinear(線形)、QはQuadratic(二次)です。

 

4.4.1 分類におけるベイズの定理の応用

この本にはベイズの定理が突然出てくるので、最初から知っていないと普通に置いていかれます。笑

 

4.4.2 1変数の場合の線形判別分析

結局は(4.13)式と(4.17)式が尤度関数となっており、これを最大にするようなクラスに分類する(=最尤法を使っている)という事が理解できれば良いかと思います。尤度関数自体は既存の定義・定理から導けます。

 

また実際の計算については、(4.13)式における平均と分散が未知の場合(通常は未知)は(4.15)式を使って推定し、各クラスの確率πが未知の場合は(4.16)式を使って推定するようです。

 

まとめると、LDAを使う場合は

①(4.15)式と(4.16)式を使い、平均、分散、πを推定

②①を(4.17)式に投入し、これを最大にするクラスに分類する事で、決定境界を計算

③②で計算した境界より右か左かで各データを分類する

 

4.4.3 多変数の場合の線形判別分析

多変数の場合も考え方自体は同じなのでここでは割愛します。

ただ、(4.21)式と(4.22)式あたりの考え方は非常に重要です。分類基準として事後確率をどう設定するかは結局分析者が決められる事と、その判断材料の一つとしてROC曲線を使える事が書かれています。

 

4.4.4 二次判別分析(QDA:Quadratic Discriminant Analysis)

線形判別分析と二次判別分析の違いは以下です。

・線形判別分析(LDA)…

 ①判別関数:xについて線形    ※(4.17)式参照

 ②仮定される共分散行列:K個のクラスが全て共通

  →②より、QDAと比較して推定するパラメータが少なくて済む

 

・二次判別分析(QDA)…

 ①判別関数:xについての2次関数   ※(4.23)式参照

 ②仮定される共分散行列:K個のクラスが各々の共分散行列をもつ

  →②より、推定するパラメータが多くなる(LDAの場合のK倍)

 

この特徴がある為、LDAの方がQDAに比べ柔軟性に劣り、分散が小さいです。

LDAとQDAのどちらが良いかは分散とバイアスのトレードオフとなります。

大まかに言えば、

・訓練データが少ない場合…LDAの方がQDAより良い

・訓練データが多い場合や、K個のクラスの共分散行列が共通であるという仮定が明らかに正当化できない場合…QDAの方がLDAより良い

 

これまで習ってきたように、柔軟なモデルほど多くのデータを必要とするというのは LDAとQDAの関係においても言えそうです。

 

 

4.5 分類法の比較

使い分けの基準、特徴についてざっくりまとめるとこんな感じかと思われます。

f:id:intrinsic_motivation:20190622232732p:plain

シナリオ1〜6をきちんと頭に入れないとこの表だけでは理解できないので注意です。

特にロジスティック回帰とLDAはシナリオ1〜6のいずれにおいても、かなり予測が似通っていました。

 

 

というわけで、内容はここまで。

 

第3章までのメモと違って、ちゃんと書く所はちゃんと書いた気がします。

統計学の話ではなく、統計的学習の比重が高くなっているので、自分できちんとまとめ直さないと理解が追いつかなくなってきています…。

『Rによる統計的学習入門』解答(3.7 演習問題)

『Rによる統計的学習入門』の解答例・解答上のポイントを載せます。

 

解答の目次、他の方の解答は以下の記事にまとめてあります。 

intrinsic-motivation.hatenablog.com

 

3.7 演習問題

(1)※6/22追記

①p値に対応する帰無仮説

※以下全て「他の変数の影響を一定にした下で」←重回帰なのでここが重要

・モデルの切片は0である

・salesとTVには関係がない

・salesとradioには関係がない

・salesとnewspaperには関係がない

 

②p値から得られる結論

※以下全て「他の変数の影響を一定にした下で」

・モデルの切片は0ではなさそう

・salesとTVには関係がありそう

・salesとradioには関係がありそう

・salesとnewspaperには関係がなさそう

 

(2)応答変数が質的変数か量的変数か、またそれに伴って予測値の決定方法が違います(上記リンク先の解答と違う説明をします)。

 

分類:応答変数が質的。

ある正の整数Kとテストデータx0が与えられた下で、訓練データのうちx0に最も近いK個のデータを探す。そして、これらのK個のデータがどのクラスに属するのかを調べ、最も多いクラスにテストデータx0を分類する。(近隣K個のデータの多数決)

 

回帰: 応答変数が量的。

ある正の整数Kとテストデータx0が与えられた下で、訓練データのうちxiがx0に最も近いK個のデータの組(xi, yi)を探す。そして、これらのK個のデータのyiの平均値をy0の予測値とする。

 

(3)…上記記事の解答参照

(4)…以下、あくまでも「〜の傾向がある」という話です。

(a)3次式の回帰の方が訓練RSSが小さくなる。

 理由は、訓練データに対してモデルがよりフィットする為。 

(b)線形の回帰の方がテストRSSが小さくなる。

 理由は、3次式の回帰は訓練データに対して過学習が起こりうるが、線形の回帰はそれがない為。

(c)3次式の回帰の方が訓練RSSが小さくなる。

 理由は、訓練データに対してモデルがよりフィットする為。 

 (d)情報不足により判断できない。

 理由は、真の関係が線形ではない度合いによって、テストRSSの大小関係が変わりうる為。線形に近ければ、線形単回帰のテストRSSの方が小さく、3次多項式に近ければ、3次式の回帰のテストRSSの方が小さくなると思われます。

 

(補足)

(a)について、決定係数が1になるようなデータを生成して実験してみました。

x <- 1:100+rnorm(100) #rnorm(100)で正規分布に従う乱数100個を生成
y <- x
xy <- data.frame(x,y)
plot(xy)

f:id:intrinsic_motivation:20190601180239p:plain

lm.fitA <- lm(y~x, data=xy)
lm.fitB <- lm(y~x+I(x^2)+I(x^3), data=xy)
summary(lm.fitA)
deviance(lm.fitA) #残差平方和を求める
summary(lm.fitB)
deviance(lm.fitB)

 

で、実際に回帰した結果、

①lm.fitA(線形単回帰)

f:id:intrinsic_motivation:20190601180412p:plain

→残差平方和は2.172437e-27

 

②lm.fitB(3次多項式の回帰)

f:id:intrinsic_motivation:20190601180423p:plain

→残差平方和は2.037969e-27

 つまり、残差平方和は②の方が小さいことが分かりました。

ちなみにデータを10,000とかにすると、両者の差が小さくなりますが、それでも②の残差平方和の方が小さいことが確認できます。

 

(5)…上記記事の解答参照

 

(6)

最小2乗法による回帰直線をy=β'0+β'1x (※) とおく (β'はβハットのつもり)

この式のxにx'を代入した時、β'0, β'1の値に関わらずy=y'となれば、常に(x', y')を通ると言える。(x'はxバーのつもり)

※に(3.4)式のβ'0=y'-β'1x'を代入して、

y=y'-β'1x'+β'1x

このxにx'を代入するとβ'0, β'1の値に関わらずy=y'となる。よって示された。

 

…ブログ初心者すぎてハットとかバーの書き方が分かりません…。

 

(以下サイトを参考にさせて頂きました)

http://www.riruraru.com/cfv21/math/pinnedline.htm

 

(7)〜(10)…上記記事の解答参照

 

(11)…

(c)だけ補足

x軸方向の距離を最小にするか、y軸方向を最小にするかが違います。

(a)と(b)で推定値、RSEは違いますが、決定係数R^2とF値は同じ値になります。

f:id:intrinsic_motivation:20190601172611p:plain

 

(12)…(a)のみ解答

(a)xi'^2=yi'^2となる時。

(3.38)式から、xiをyiに入れ替えても値が同じか考えます。

分子はxiyiをyixiとしても値は同じです。

分母はxi'^2をyi'^2とすると値が同じになります。

※xi'=yi'ではなく、xi'^2=yi'^2です。

なので、(xi', yi')には(1, 1)や(1, -1)が考えられます。

 

(13)(14)…上記記事の解答参照

 

以上。

「上記記事の解答」参照とか言いながら、実は今回の輪読会で扱わなかったので解答を飛ばしているだけだったりします。

補足を書いた内容は「上記記事の解答」の内容と違ったりするので、リンク先の解答が合っている保証は無いです。

 

今回は手抜きしすぎなので、時間があれば追って解答を埋めます。

『Rによる統計的学習入門』第3章 勉強メモ

『Rによる統計的学習入門』の第3章 勉強メモを載せます。

http://www-bcf.usc.edu/~gareth/ISL/ISLR%20Seventh%20Printing.pdf

上記から英語版が無料でダウンロード可能。併用がオススメ。

 

以降、本の説明が難しい点、輪読会でディスカッションのポイントとなった点について触れます。

 

3.線形回帰

3章全体としては、統計学で学ぶ回帰分析の理論とその限界・注意点について触れています。この限界を乗り越える上で機械学習の手法が役に立つという事を本の後半で(おそらく)述べると思われます。

本章はその伏線として、後半の理解に必要な基本事項を整理しています。これまで習った統計学の入門書では見た事のない残差プロットやRSSの値を示す等高線、K近傍回帰とか出てきて、基本事項のはずなのに説明のアプローチや深さが違い、僕は図を見るたびに「なんじゃこれ」と困惑しました(笑)。

 

3.1 線形単回帰

p60 最終段落「厳密には、以上の式が成り立つためにはそれぞれの観測値の誤差εiの間に相関がなく、共通の分散としてσ^2をもつことが必要である。図3.1を見ると明らかにこれが成り立たないことがわかる」

→共通の分散云々は、xの値を変えても誤差のばらつきが変わらないという事です。図3.1はxの値が増えるに従って誤差のばらつきが大きくなっているので、共通の分散をもっていないと考えられます。

また誤差εiの間に相関があるデータとしては、p88に出てくる時系列データのような場合が分かりやすいです。

 

同「これは直観的にはxiが広くにわたっていればそれだけ傾きを推定するのに適しているということである」

→p91のてこ比の説明につながっていきます。x軸方向に点が広がっていると傾きが推定しやすくなります。

 

p62 3.14式の「-0」は何か?

帰無仮説がβ1=0 を利用している為です。

そもそも帰無仮説がなぜβ1=0となるかというと、傾きが0かどうかを見ているからです。傾きが0であれば、xを増やしてもyは増えないという事なので、xとyには関係が無いと言えます。

 

3.2 線形重回帰

p66 1段落「βjは、他のすべての予測変数は固定させたまま〜」という点がポイント。係数の解釈を記述する際に、この表現を忘れがちです。 

 

p68  このあたりは教科書に書かれている通りです。実際に単回帰と重回帰でnewspaperの推定値を算出してみると、単回帰では0.055なのが、重回帰だと-0.001になります(単回帰の結果は表3.3参照)。また表3.5によるとnewspaperとradioの相関は0.354です。

newspaperの推定値は単回帰だと0.055ですが、newspaper→salesの結果というよりも、newspaper→radio→salesの関係があり、本当はnewspaperよりradioが影響していたのに、あたかもnewspaperの影響のように見えていただけだと考えられます(この事を教科書では「newspaperが"手柄を横取り"する」と書いています)

 

p71 p値だけではなく、F統計量も見る事が重要だと書かれています。p値は応答変数の数を考慮していない為、応答変数の数が大きいと確率的にp値がたまたま0.05以下になる事もあるわけです。そこで、応答変数の数をできるだけ少なくする為に、変数選択を行います。

 

後の箇所は、教科書に書かれている通りなのでメモは割愛(=手抜き)します。

 

3.3 回帰モデルにおける他の考察

p78 2段落「この場合、β0は(性別を考慮しない)全体のクレジットカードの平均債務残高〜(中略)この例ではβ0の推定値は男性$509.80と女性$529.53の平均$519.665となるであろう」

→実際に平均を計算すると、520.015となります。男性と女性の人数が等しければ519.665かもしれませんが、データ数はFemale:Male = 207:193なので、ズレはそこから来ているっぽいです。なのでここは教科書の記載に誤りがあると思われます。

 

p77 3.27式、3.28式、3.29式において、

  xi3 = 1(i番目の人が黒人である場合), 0(i番目の人が黒人でない場合)

 と書かないのはなぜか?

→水準数-1で作らないと、常に xi1 + xi2 + xi3 = 1 となり、完全な多重共線性が生じてしまう為。この辺は「ダミー変数 多重共線性」とかでググると出てきます。

 

※追記

余談ですが上記の多重共線性に気付かないままRでロジスティック回帰分析を行うと 

glm.fit: アルゴリズムは収束しませんでした glm.fit: 数値的に 0 か 1 である確率が生じました」というエラーメッセージが表示されます。

何か1つ説明変数を取り除く事でエラーの表示は無くなります(が、本質的には説明変数の分布が重なっていない事が原因です)。

 

p82 表3.9 p値は小さいとしても、TV×radioの係数が0.0011ととても小さいのは、効果があると言えるのか?

→単位の影響だと思われます。TV($)×radio($)なので、出てくる値が$^2(平方ドル?)のようになっており、TV($)、radio($)と同列に比較できない状態です。

 

p84 3.35式はRでどう表現するか?

→Studentの変数を入れて記述します。

 

p90, 91 外れ値とてこ比

・外れ値はyi、てこ比はxiに着目するのがポイントです。

https://slidesplayer.net/slide/11257690/

http://jun.artcompsci.org/kougi/jikken-jisshuu-2/eight.pdf

上記のページを参考にさせて頂きました。

3.37式の1/nについては、n数を考慮する為の項と思われます(ググってもよく分かりませんでした)。nが大きいとほとんど0になるので、影響は無視できます。

 

また、結局の所外れ値やてこ比の大きな点除外する事になるとしても、それによって何に影響があるのかが注意。

 

3.4 マーケティングプラン

p97 広告メディア間の相乗効果はあるか

→上述の 「p82 表3.9 p値は小さいとしても、TV×radioの係数が0.0011ととても小さいのは、効果があると言えるのか?」 で述べたのと同様です。

 

3.5 線形回帰

p97 2章で扱った最近傍法との違いは?

→目的、変数の種類が違います。

 2章は分類が目的、また応答変数は質的変数。

 3章は予測が目的、また応答変数は量的変数。

その為、2章ではK数の近傍データで多数決を取りますが、3章ではK数の近傍データの平均を取り、それが予測値になります(数式が平均値を求める式になっています)。

この辺は英語版の方が分かりやすいです。KNN regressionとKNN classifierという表記に加え、その表記の書き分けから段落が始まっているので、「あ、これまでとの違いについて書くのね(そこが重要なのね)」と直感できました。

 

(英語版p105 抜粋)

f:id:intrinsic_motivation:20190518174643p:plain

 

以上

 

『Rによる統計的学習入門』解答(2.4 演習問題)

『Rによる統計的学習入門』の解答例・解答上のポイントを載せます。

 

解答の目次、他の方の解答は以下の記事にまとめてあります。 

intrinsic-motivation.hatenablog.com

 

2.4 演習問題

(1)(a)〜(d)…上記記事の他の方の解答参照

 

(補足)

英語版では"extremely large"という表現がなされている事に注目。

日本語版の「極めて」よりも英語版の"extremely"の方が、より母集団のデータに近いという響きがします。

f:id:intrinsic_motivation:20190511154247p:plain

 

(2)…上記記事の他の方の解答参照

説明不要・補足なし

 

(3)(a)僕のイメージ

(補足)

ポイントは、グラフを無理にRで描こうとしないこと笑。

日本語版は「グラフに描け」と書かれていて、前のページもRでのグラフの描き方に触れているので、てっきりRで描くと思っていました。

データも明示されていないし、どうしたら良いのか途方に暮れていたのですが、英語版を見ると"sketch"と書かれていて、作問者の要求的に手書きで良いっぽいと判断しました。

f:id:intrinsic_motivation:20190511155627p:plain

 

(b)

※全て2乗された値なので非負


①2乗バイアス
…バイアスとは極めて複雑な実際の現象をより単純なモデルで近似した為に生じる誤差である。柔軟さが増すほど実際の現象を近似する上での制約が少なくなる為、バイアスが小さくなる

 

②分散
…柔軟さが増すほど(訓練)データが𝑓 ̂の推定に与える影響度合いが増す為、分散が増加する

(補足)

個人的にはこの問題が一番難しかったです。 ここで言う分散とは何か、つまり2.7式と2.6式を完璧に理解する事が重要ですが、僕にとっては日本語版p28, p32あたりに書かれた説明が難しく、あまり理解できていなかったので、ゼミでかなり突っ込まれました。

僕なりにポイントは以下だと思いました。

・「データ」が「訓練データ」なのか「テストデータ」なのか明確にする事

・𝑓と𝑓 ̂の関係を言える事(統計をかじった身としては𝑓 ̂が推定対象というのが意外…)

・x0が何なのか、𝑓 ̂(x0)が何なのか、それによってなぜ分散が出るのか言える事

 

③訓練誤差
…柔軟になればなるほど曲線がより正確にデータにフィットするようになるので、訓練誤差は減少する

 

④テスト誤差
…柔軟になるにつれ、最初はデータへのフィットが増すのでテスト誤差は減るが、あるタイミングから真のモデルに含まれない誤差もモデルに組み込もうとする為、テスト誤差が増える(過学習の状態)。その為、U字型の曲線になる

 

ベイズ(削減不能)誤差
…予測精度(テストMSEの下限)を表す為、テストMSEの下限(よりやや下)に直線を描く

(この本ではベイズ誤差が1.0のラインに描かれているが、これはシミュレーションを行う際に誤差を1.0にするよう設定した為であって、1.0に意味は無いと思われる(多分)。大事なのはテストMSEとの位置関係)

 

(4)…上記記事の他の方の解答参照

説明不要・補足なし

 

(5)

良い点…

n数が十分にあれば予測精度の向上が期待できる

 

 悪い点…

・xとyの関係が複雑になり、解釈がしにくくなる

・多くのnが必要

 

→柔軟なモデルは予測の文脈においては有効だが、推論の文脈においては不向き

 

推論は、「あくまで過去のデータからは◯◯が言えます。それを踏まえ今後はこうなる事が考えられます」という話で、将来その通りになるかは必ずしも担保できない。一方で、予測において大事なのは「将来その通りになること」という予測精度。

例えば株価を予測する場合、何が上昇・下降の原因だったのかという理由より、予測が当たる事が重要。しかし例えば新薬の開発においては「この薬は◯◯の成分によって副作用が起こる事がある」という理由が分かっている事が重要。その点を説明できなければ開発時の改善もできないし、仮に承認されたとして処方時の説明責任も果たせない。

 

(6)…上記記事の他の方の解答参照

(補足)パラメトリック法のメリットとして、仮説ベースで分析できる点があります(モデル構造そのものを分析者が過程する為)。一方で幅広いモデルの可能性を探索的に分析するのは難しいです。例えば囲碁で「AIの考えた手は、人間だと思いもよらない方法だった」という話を聞きますが、これは探索的な分析を行うがゆえでしょう。

 

(7)

f:id:intrinsic_motivation:20190511164405p:plain

 

(補足)

ポイントは、日本語版の問題が間違っている事です(笑)。

観測値6において、英語版だとX1=1, X2=1, X3=1ですが、日本語版だとX1=1, X2=0, X3=2となっています。このまま計算すると、(c)の答えが出ません。

 

(a)…画像参照

日本語版だと観測値6のユークリッド距離が2.236068となります。

英語版だと1.732050となります。

※画像は日本語版で算出しています。

 

(b)

K=1の時、(X1, X2, X3)=(0, 0, 0)との距離が最も近い点は観測値5(1.414214)

観測値5はGreenである為、Greenと予測されます。

 

(c)

K=3の時、(X1, X2, X3)=(0, 0, 0)との距離が近い順から3つ選ぶと

【日本語版】

①観測値5(1.414214)...Green

②観測値2(2)...Red

③観測値4(2.236068)...Green

と観測値6(2.236068)...Red

→と、Green:Red = 2:2になり選べません。

 

【英語版】

①観測値5(1.414214)...Green

②観測値6(1.732050)...Red

③観測値2(2)...Red

→と、Green:Red = 1:2になり、Redと予測されます。

 

(d)

小さい。Kの値を大きくすると柔軟さが減少し、境界を決定しにくくなる為。 

※K最近傍法はある点の近隣にあるK個のデータによる多数決で分類します。Kの数が多くなると1個のデータが分類に与える影響度が減る為、分類は線形に近づき、柔軟性が減少します。

 

(8)…上記記事の他の方の解答参照

説明不要・補足なし

 

(9)…上記記事の他の方の解答参照

 (補足)

(a)nameが質的変数なのは明らかですが、originは原産国をダミー変数で表しているようなので、これも質的変数と考えられます

 

(f)日本語版と英語版で問われ方が違うので注意。

f:id:intrinsic_motivation:20190511171038p:plain

英語版では質問自体がYes, Noで答えよ→理由を答えよ という問われ方なので、GitHubの解答の仕方に違和感があるかもしれません。

 

以下日本語版の解答例

(e)で図示した内容を元にすると、mpg(燃費)と他の変数の関係性は以下

①displacement(排気量)が小さいほどmpgが大きい

 horsepower(馬力)が小さいほどmpgが大きい

 weight(重量)が小さいほどmpgが大きい

②accelaration(加速)が大きいほどmpgが大きい

③year(年式)が大きいほどmpgが大きい

上記から、予測するのに適していると思われる変数は

①のdisplacement, horsepower, weightから1つ

②のaccelaretion

③のyear

が挙げられる。

※①から1つを選んだのは多重共線性を回避する為。ただし他にもAICを求める時に使うステップワイズ法(等)で回避する方法や、スパース推定を用いる方法もあるようなので、あくまでも一例。

 

(10)

…上記記事の他の方の解答参照

 (補足)

(b)の散布図はパッケージpsychにあるpairs.panelsがオススメ。

install.packages("psych")
library("psych")
pairs.panels(Boston) 

 

(h)その他解答例

(一件あたり平均8部屋以上ある地域について)

・平均部屋数8以上の地域は、平均的に犯罪率が低く、極端に犯罪率が高い地域は存在しない

・また、小売以外の産業の面積が小さく、貧困層の割合が大きい

 

 

以上

長かった…。