そのために解析は必要? 未加工の生データこそ宝?
往々にして複雑過ぎ、情報多すぎ、そのままでは手に負えない
print(ggplot2::diamonds)
carat cut color clarity depth table price x y z
<dbl> <ord> <ord> <ord> <dbl> <dbl> <int> <dbl> <dbl> <dbl>
1 0.23 Ideal E SI2 61.5 55 326 3.95 3.98 2.43
2 0.21 Premium E SI1 59.8 61 326 3.89 3.84 2.31
3 0.23 Good E VS1 56.9 65 327 4.05 4.07 2.31
4 0.29 Premium I VS2 62.4 58 334 4.20 4.23 2.63
--
53937 0.72 Good D SI1 63.1 55 2757 5.69 5.75 3.61
53938 0.70 Very Good D SI1 62.8 60 2757 5.66 5.68 3.56
53939 0.86 Premium H SI2 61.0 58 2757 6.15 6.12 3.74
53940 0.75 Ideal D SI2 62.2 55 2757 5.83 5.87 3.64
ダイヤモンド53,940個について10項目の値を持つデータセット
各列の平均とか標準偏差とか:
stat carat depth table price
<chr> <dbl> <dbl> <dbl> <dbl>
1 mean 0.80 61.75 57.46 3932.80
2 sd 0.47 1.43 2.23 3989.44
3 max 5.01 79.00 95.00 18823.00
大きさ carat
と価格 price
の相関係数はかなり高い:
carat depth table price
carat 1.00
depth 0.03 1.00
table 0.18 -0.30 1.00
price 0.92 -0.01 0.13 1.00
生のままよりは把握しやすいかも。
しかし要注意…
情報をうまく絞って整理 → 直感的にわかる
carat
が大きいほど price
も高いらしい。
その度合いは clarity
によって異なるらしい。
データをうまくまとめ、それに基づいて推論するための手法。
「グラフを眺めてなんとなく分かる」以上の分析にはモデルが必要
対象システムを単純化・理想化して扱いやすくしたもの
データ生成をうまく真似できそうな仮定の数式表現。
データ生成をうまく真似できそうな仮定の数式表現。
e.g., 大きいほど高く売れる: $\text{price} = A \times \text{carat} + B + \epsilon$
新しく採れたダイヤモンドの価格予想とかにも使える。
このように「YをXの関数として表す」ようなモデルを回帰と呼ぶ。
単純な直線あてはめから出発し、ちょっとずつ統計モデリング。
でも統計モデリングはいわゆる“機械学習”とは違う気もする…?
項目 | 統計モデリング | 近年の機械学習 |
---|---|---|
モデル構造 | 単純化したい | 性能のためなら複雑化 |
モデル解釈 | ここが強み | 難しい。重視しない。途上。 |
予測・生成 | うまくすれば頑健 | 主目的。強力。高精度 |
データ量 | 少なくてもそれなり | 大量に必要 |
計算量 | 場合による | 場合による |
例 | 一般化線形モデル 階層ベイズモデル |
ランダムフォレスト ニューラルネットワーク |
教科書的には概ねこんな感じとして、実際の仕事ではどうだろう?
協力: @kato_kohaku
さん、@teuder
さん
久保先生の"緑本"こと
「データ解析のための統計モデリング入門」
をベースに回帰分析の概要を紹介。
回帰のキモは線ではなく分布