# データ解析法
## 1
データ解析の主なステップ
1. データを大量に蓄積
2. 目的とする解析に合った解析手法を選択
3. 解析手法に適した形式にデータを変更
4. 実際に解析手法を適用
5. 業務知識と対比させて解釈
6. 業務の改善案につなげる
---
定性データ
- 名義尺度
- 区別するためのものだが, 順序は定義できないもの
- O型 $\neq$ A型は言えるが, O型 < A型等は言えない
- e.g.) 性別, 血液型
- 順序尺度
- 順序は定義できるが, 差が定義できないもの
- 曲Aよりも曲Bの方が好き, は言えるが, 曲A-曲Bは定義できない
- e.g.) 好きな曲の順番, (n段階の)リッカート尺度(?)
---
定量データ
- 間隔尺度
- 差は定義できるが, 原点は意味をもたないもの
- 温度が10度間隔で区切られていたとしても, 原点自身は意味を持たない
- e.g.) 温度(摂氏)
- 比例尺度
- 差も原点も定義できる
- 0は何も無いという **意味** を持つ
- e.g.) 長さ, 質量
## 2 10/08
因果関係と相関関係
ref: [「相関関係」と「因果関係」の違い](https://mainichi.jp/articles/20170119/mul/00m/040/00600sc)
- 因果関係
- 一方が原因で一方が結果
- $\Rightarrow$が満たされても$\Leftarrow$は満たされない
- e.g.) 「いいことがあった」と「声が高い」
- 相関関係
- 一方が変わるともう一方も変わる
- e.g) 「足の大きさ」と「靴のサイズ」
- 相関関係と因果関係は別
---
統計学の単語
- 母集団
- 解析対象の全データ
- 全部調査するのは不可能
- 標本(サンプル)
- 母集団から抽出された部分データ
- 標本から母集団の情報を得たい
- 母平均
- 母集団全体の平均値
- 標本平均
- 母集団からn個の標本を持ってきた時の平均値
- 「標本平均」の平均値は母平均に等しい
- 不偏推定量
- 母集団の統計量と同じようにみなせる標本の統計量のこと
- 母集団に関する量$\beta$と標本に対応する量$B$に$E(B) = \beta$の関係があるときの$B$のこと
- 意味的には, 標本の統計量の平均が母集団の平均と等しいときの, 標本の統計量のこと
- 不偏分散
- 標本分散は不偏推定量ではないため, 代わりに不偏分散を使う
- 標本平均の平均値をとると母分散と等しくならない
## 3 10/15
- 平均のa倍
- $E(aX) = aE(X)$
- 分散のa倍
- $V(aX) = a^2V(X)$
- 標本平均
- $\bar{X} = \frac{1}{n}\sum_k X_k$
- 標本平均の平均値
- $E(\bar{X}) = \frac{1}{n}\sum_k E(X_k) = \mu$
- 標本平均の分散
- $V(\bar{X}) = \frac{1}{n^2}\sum_k V(X_k) = \frac{\sigma^2}{n}$
---
検定
1. 否定したい仮説(帰無仮説)と肯定したい仮説を作る
2. どの検定を行うか決める
- 検定統計量が決まる
3. 有意水準αを決める
- 帰無仮説を棄却する確率
- どれだけ帰無仮説が起こりにくいかの基準
- $P(-\gamma < X < \gamma) = 1 - \alpha$
4. 帰無仮説を棄却できるか調べる
- めったに起こらないという仮説を棄却して, よく起こると言いたい
- 検定統計量を計算して, 帰無仮説(めったに起こらないという仮説)の$\gamma$と比較
---
検定における過誤
- 第一種の過誤
- 帰無仮説が真であるときにこれを棄却してしまう過誤
- めったに起こらないのに, それを誤って棄却して, よく起こると言ってしまう過誤
- 第二種の過誤
- 帰無仮説が偽であるときにこれを採択してしまう過誤
- よく起こるのに, それを誤って採択して, めったに起こらないと言ってしまう過誤
---
Zスコア(母分散既知)
- 元のデータを平均値0, 分散1の正規分布に調整したもの
- $x$: データ, $\mu$: 正規分布の平均値, $\sigma$: 分散
- $z = \frac{x- \mu}{\sigma}$
- データ$x$の平均値を0に移動して, 分散が1になるように圧縮した感じ
---
実際の検定(Zスコア)
|名目|データ|
|:-:|:-:|
|母平均|$\mu=?$|
|母分散|$\sigma^2 = 81$|
|標本数|$n = 9$|
|標本平均|$\bar{x} = 86.9$|
- 母平均$\mu$が80点よりも高いかを調査したい
- 帰無仮説「母平均$\mu$は80点である」
- 対立仮説「母平均$\mu$は80点よりも高い」
- 標本平均は正規分布に従っていると仮定
- 有意水準5%
- 5%の確率で帰無仮説を棄却する
- 検定統計量
- $z = \frac{\bar{x} - 80}{\frac{\sigma}{\sqrt{n}}}$
- $= \frac{86.9 - 80}{\frac{9}{\sqrt{9}}}$
- $= \frac{6.9}{3}$
- $= 2.3$
- 標本平均の平均は母平均と等しい
- 標準偏差は$\frac{\sigma}{\sqrt{n}}$
- $p(-1.96 < X < 1.96) = 0.95$なので, この帰無仮説は棄却される
- したがって, 「母平均$\mu$は80点よりも高い」といえる
---
実際の検定(t検定(母分散未知))
|名目|データ|
|:-:|:-:|
|母平均|$\mu=?$|
|母分散|$\sigma^2 = ?$|
|標本数|$n = 9$|
|標本平均|$\bar{x} = 86.9$|
|不偏分散|$\hat{\sigma}^2 = 100$|
- 母平均$\mu$が80点よりも高いかを調査したい
- 帰無仮説「母平均$\mu$は80点である」
- 対立仮説「母平均$\mu$は80点よりも高い」
- 標本平均は正規分布に従っていると仮定
- 有意水準5%
- 5%の確率で帰無仮説を棄却する
- 検定統計量
- $U = \frac{\bar{x} - 80}{\frac{\hat{\sigma}}{\sqrt{n}}}$
- $= \frac{86.9 - 80}{\frac{10}{\sqrt{9}}}$
- $= \frac{6.9}{\frac{10}{3}}$
- $= 2.07$
- 標本平均の平均は母平均と等しい
- 標準偏差は$\frac{\sigma}{\sqrt{n}}$
- n=9より, v=8でt分布をみると, 有意水準5%の時は1.86と書かれている
- したがって, 1.86 < 2.07より, 帰無仮説は棄却される
- 結論は, 「母平均$\mu$は80点よりも高い」
## 4
分散分析(母分散未知)
- 2群の平均値の差についてのt検定をかける
- Aの母平均がBの母平均よりも大きいことを調べたい
- 帰無仮説「Aの母平均とBの母平均に差がない」
- 対立仮説「Aの母平均はBの母平均よりも大きい」
---
回帰直線を求める前に
- 0に近ければ回帰直線はそもそも求めない
- 直線がなさそうなので
- $r^2$が1に近ければ回帰直線を求める
- 直線がありそうなので
---
回帰直線の求め方
- 最小二乗法を用いる
- 損失関数Lを用いる
- 実値と予測値の差を二乗したもの
- $L = \frac{1}{2}\sum_i (y_i - \hat{y_i})^2 = \frac{1}{2}\sum_i (y_i - ax_i - b)^2$
- aとbでそれぞれ偏微分した結果=0として2式を立てる
- 共分散$C_xy = \frac{1}{n-1} \sum_i (x_i - \bar{x})(y_i - \bar{y})$
- xの分散$\sigma_x^2 = \frac{1}{n-1} \sum_i (x_i - \bar{x})^2$
- 以上の結果を計算すると, 回帰直線は以下の式で示せる
- $y - \bar{y} = \frac{c_{xy}}{\sigma_x^2} (x -\bar{x})$
- 相関係数は共分散, 標準偏差を用いて以下のように書ける
- $r = \frac{c_{xy}}{\sigma_x \sigma{y}}$
---
単回帰と重回帰
- 単回帰は従属変数yに対して独立変数xが1つ
- $y=b + \alpha x$
- 重回帰は従属変数yに対して独立変数が複数
- $y=\beta_0 + \beta_1 x + \beta_2 x^2 + ... + \beta_n x^n$
- 単回帰分析(単はxが1つという意味)
- 重回帰分析において, 独立変数同士に相関がある場合, 係数が不安定になってしまうのでNG
---
講義中のらくがき(スルーしておk)
- $$y=f(x)$$
- y : 従属変数
- f : モデル
- x : 独立変数
- fの導出 = 回帰?
- 単回帰 => f: 一次式
- 重回帰 => f: 一次式
- ニューラルネットワーク/Deep Learning => f: 一般の関数
- **何のために偏微分したの?**
- $L = \frac{1}{2} \sum_i (y_i - ax_i - b)^2$
- $y_i$と$x_i$は定数
- $\frac{\partial L}{\partial a} = \sum_i (y_i - ax_i - b)(-x_i) = 0$ => 1
- $\frac{\partial L}{\partial b} = \sum_i (y_i - ax_i - b)(-1) = 0$ => 2
- 2より
- $\sum_i y_i - a\sum_i x_i - \sum_i b = 0$
- $\frac{1}{n} \sum_i y_i - \frac{a}{n} \sum_i x_i - \frac{1}{n} \sum_i b = 0$
- $\bar{y} - a\bar{x} - b = 0$ => 3
- **ここで, (\bar{y}=a\bar{x} + b)だと(\bar{x}, \bar{y})が回帰直線上にあるとなぜいえるの?**
- $1-\bar{x} \times 2$
- $\sum_i (y_i - ax_i - b)(- x_i) - \sum_i (y_i - ax_i - b)(- \bar{x}) = 0$
- $\sum_i (y_i - ax_i - b)(x - \bar{x}) = 0$
- 3より
- $b = \bar{y} - a\bar{x}$であるから, これを代入して
- $\sum_i ((y_i - ax_i - (\bar{y} - a\bar{x}))(x_i - \bar{x}) = 0$
- $\sum_i ((y_i - \bar{y}) - a(x_i - \bar{x}))(x_i - \bar{x}) = 0$
- $\sum_i (y_i - \bar{y})(x_i - \bar{x}) - a\sum_i (x_i - \bar{x})^2 = 0$
- $a= \frac{\sum_i (x_i - \bar{x})(y_i - \bar{y})}{\sum_i (x_i - \bar{x})^2}$
- $= \frac{\frac{1}{n-1} \sum_i (x_i - \bar{x})(y_i - \bar{y})}{\frac{1}{n-1} \sum_i (x_i - \bar{x})^2}$
- (ここで分子はx_iとy_iの共分散C_xy)
- (分母はxの分散\sigma_x^2)
- = $\frac{c_xy}{\sigma_x^2}$
- $b = \bar{y} - a\bar{x}$
- $= \bar{y} - \frac{c_xy}{\sigma_x^2} \bar{x}$
- $y - \bar{y} = \frac{c_xy}{\sigma_x^2} (x - \bar{x})$
- これが回帰直線の式
- 相関係数$r = \frac{C_xy}{\sqrt{\sigma_x^2}\sqrt{\sigma_y^2}} = \frac{c_xy}{\sigma_x \sigma_y}$
- これが前提
## 6 11/26
主成分分析の目的
- 多次元データの次元を削減すること
- 線形変換の範囲で低次元への変数変換を行うこと
- e.g.) 10次元のデータを可視化するために2次元に削減
---
統計学と主成分分析における分散に対する考え方の違い
- 統計学では分散は小さいほうが嬉しい
- データが凝縮されていたほうが複数のデータを1つのパラメータで概算できるため
- 主成分分析では分散は大きいほうが嬉しい
- データの次元を削減するために, データを区別する必要があるため
- 分散がばらけている方向に軸を取ると違いを区別しやすい
---
主成分分析の計算
- n次元データの標準化を行う
- $u_i = \frac{x_i - \mu_i}{\sigma_i}$を求めること
- $z = \sum_i a_iu_i$
- $E(z) = 0$としたうえで, その分散を最大化する
- $V(z) = \frac{1}{n-1} \sum_i \sum_j (a_iu_{ji})^2$
- つづきはよくわからん
---
寄与率
- 全体の分散の中での第k主成分の分散(=固有値)の割合のこと
- $\frac{\lambda_k}{\sum_i^N \lambda_i}$
---
累積寄与率
- 全体の分散の中で, 第1から第k主成分までの分散(=固有値)の割合のこと
- $\frac{\sum_i^k \lambda_i}{\sum_i^N \lambda_i}$
---
因子負荷量
- 元の第k成分が第1主成分にどの程度影響を及ぼしているかの度合い
## 7-8
数量化理論
- I-IV類まである
- IV類は扱わない
|数量化理論|対応する統計解析|
|:-:|:-:|
|数量化理論I類|重回帰分析|
|数量化理論II類|判別分析|
|数量化理論III類|主成分分析|
---
数量化理論I類
- 重回帰分析(単回帰分析)
- 適応例
- 目的変数が定量データ
- 説明変数は定性データ
- 定性データは, $x_a, x_b$などのダミー変数を用いて, 0/1の値に変換する
- この時, 他の変数からある変数を求められる場合, その変数を削減する
---
数量化理論2類(判別分析)
- データを2つに判別する目的
- e.g.) 病気に罹患している/いない
- 機械が故障している/いない
$\int_a^b f(x) dx = \int_a^b \frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{(x-\mu)^2}{2\sigma^2}}dx$
$u=\frac{x-\mu}{\sigma}, du=\frac{dx}{\sigma}, dx=\sigma du$
$= \int_{\frac{a-\mu}{\sigma}}^{\frac{b-\mu}{\sigma}} \frac{1}{\sqrt{2\pi}} e^{-u^2}{2} du$
---
$D1 = {\frac{x-\mu_1}{\sigma_1}}^2$
$D2 = {\frac{x-\mu_2}{\sigma_2}}^2$
$\sigma_2 = \sigma_1 = \sigma$のとき
**式変形はスライドに載ってる**
$D1-D2 = \frac{2}{\sigma^2}(\mu_2 - \mu_1)(x - \frac{\mu_1 + \mu_2}{2})$
xが$\frac{\mu_1 + \mu_2}{2}$(これはD1とD2の平均値の真ん中)よりも大きい時はD1の方が大きい
逆の場合は, D2の方が大きい
---
実際の計算(数量化理論II類)


- 判断するためにダミー変数を入れる
- 咳アリ/ナシで0/1を入れる
- 咳アリが分かればナシも分かるので, 削除する
- 健常/インフルエンザ疾患で切る
- 健常者で$\mu_1, \sigma_1$を求める
- インフルエンザ疾患者で$\mu_2, \sigma_2$を求める
- 実際に判別分析を行うときにはあまり使わない
- データが近似的に正規分布していることを仮定する
- 識別関数が一次式, もしくは二次式になる必要がある
- より複雑な境界を持つ分布の判別には他の手法を使う
- Suuport Vector Machine
- 決定木
---
- 尤度(yu-do)
- 確率関数$p(x|\theta)$
- x: データの値
- $\theta$: パラメータ
- この確率関数に従うデータx_1, ..., x_nが与えられたとき
- このデータが得られた確率を尤度という
- $L(\theta) =p(x_1| \theta) \dot p(x_2 | \theta) ..., p(x_n | \theta) = \pi_i p(x_i | \theta)$
---
デルタ関数
$\delta(x) = \infty(x=0), 0(x\neq0)$
$\int_{-\infty}^{\infty} f(x)\delta(x)dx = $
---
数量化理論III類
- 主成分分析
- 目的
- 多次元データの次元を削減すること
- 線形変換の範囲で低次元への変数変換を行うこと
- 演習全くわからん
## 9 12/3
- 平均, 分散, Max, minのrangeを[0,1]にする
- 平均を0, 分散を1に標準化
- $Z_i = \frac{x_i - \mu}{\sigma}$
- 最大値を1, 最小値を0に規格化
- $X_i = \frac{x_i - x_i^{min}}{D_i}$
---
距離(matric)関数の定義
- 距離が0なら同じ点
- $d(\vec{x}, \vec{y}) = 0 if and only if \vec{x} = \vec{y}$
- 交換しても同じ
- $d(\vec{x}, \vec{y}) = d(\vec{y}, \vec{x})$
- 遠回りすると距離は大きくなる
- $d(\vec{x}, \vec{y}) + d(\vec{y}, \vec{z}) \ge d(\vec{x}, \vec{z})$
---
Euclid距離とManhattan距離
- Euclidが直線距離
- Manhattanが軸に平行な移動をした際の距離
- (9,3,1)と(1,1,0)の点で考える
---
- 定量データの定義をする
- 複数の距離の取り方がある
- 大きい距離にバイアスをかけたいときはユークリッド距離を使う
- 距離の組み合わせも可能
---
次元ののろい
- 占める割合を計算するときに, 次元数の指数乗になっている
- 類似度で対応
- $cos \theta = \frac{\vec{x}\cdot \vec{y}}{\vec{x}\vec{y}}$
---
クラスタリング
- ここから先はユークリッド距離を使う
---
k-means
- k-means clustering
- あらかじめクラスタ数を指定する必要がある
- ランダムにk個の点を選び, 種とする
- 今回の例では2回でできたが, 実際の例ではもっと多くの試行を行う必要がある
- 分けて重心が動かなくなったら終了
---
尤度のはなし
- xに確率密度関数を入れるとおk
- 平均がk個あるような$\mu$
- $x_{c_k}$ -> $\mu_{c_k}$
---
クラスタ間距離
- simple
- 単一連結法
- クラスタ中の最も近い距離を測る
- 鎖効果が適応される可能性がある
- 近いデータのみをくっつけようとしてしまう
- 広がりを見ていない
- centroids
- 重心間の距離を測る
- complete
- 最も遠いデータ間の距離を測る
- これがベスト
- 最後にできるクラスタがデンドログラム
## 10 - 12/10
DBSCAN
- 密度ベースクラスタリングの手法
- 点Aを中心とする半径$R_\epsilon の円の中の点の数がminPoints$以下であれば円の中の点と同じクラスタとして判断する
- 同じクラスタ内の他の点についても行う
---
Affinity Propagation
||データ似ている|似ていない|
|:-:|:-:|:-:|
|距離|小(短い)|大(長い)|
|類似度|大(高)|小(低)|
---
メッセージの種類
- Responsibility: r(i,k)
- 点iが所属するクラスタのexamplar(代表点)が点kである適切度
- 選挙で言う支持度の高さ
- 大きい方が良い
- Availability: a(i,k)
- 点iが点kをexamplar(代表点)とするクラスタに所属する適切度
- 所属したさ
## 11 12/17
決定木
- Yes/Noはクラス
- クラスは人が決めて分けた物
- クラスタは似たもの同士をまとめた物
---
問題

$I_{Gini}$
$= 1-(p^2 + q^2)$
$= 1-p^2-(1-p)^2$
$= -2p^2 + 2p$
$= -2(p-\frac{1}{2})^2 + \frac{1}{2}$
Max: $\frac{1}{2}$
---
問題
左
$\Delta I_{Gini}$
$= I_{Gini}^0 - r_L I_{Gini}^L - r_R I_{Gini}^R$
$= 1 - (\frac{1}{2}^2 + \frac{1}{2}^2) - \frac{1+3}{3+3} \times (1 - (\frac{3}{4}^2 + \frac{1}{4}^2)) - \frac{0 + 2}{3+3} \times (1 - (0^2 + 1^2))$
$= 1 - \frac{1}{2} - \frac{1}{4}$
$= \frac{1}{4}$
右
$\Delta I_{Gini}$
$= I_{Gini}^0 - r_L I_{Gini}^L - r_R I_{Gini}^R$
$= 1 - (\frac{1}{2}^2 + \frac{1}{2}^2) - \frac{1+2}{3+3} \times (1 - (\frac{2}{3}^2 + \frac{1}{3}^2)) - \frac{1 + 2}{3+3} \times (1 - (\frac{1}{3}^2 + \frac{2}{3}^2))$
$= 1 - \frac{1}{2} - \frac{2}{9} - \frac{2}{9}$
$= \frac{1}{18}$
以上より, 左の方が$\Delta I$が大きいので, 上手く分けられていると言える。
---
$\Delta I$
$= 分ける前の偏り - 分けた後の偏り$
$= I^0 - (r_L I^L + r_R I^R)$
- $\Delta I$を最大化する条件を見つける
- 偏らせたい
- Gini係数は小さくなってほしい
---
汎化性能
- 多くのデータに対して有用かということ
---
オーバーフィッティング(過学習)
- 学習データにのみ特化した学習をしてしまうこと
- 学習モデルが持つパラメータ(決定木の場合は枝)が多すぎる場合に生じる
---
アンダーフィッティング
- データの傾向が思うように学習されないこと
- 学習もモデルがもつパラメータ数が少なすぎる場合や, モデルそのものが適切が無いときに生じる
---
アンサンブル学習
- 複数の学習モデルを組み合わせてより高性能な学習モデルを作ること
---
ランダムフォレスト
- 説明変数からランダムにm個選んで, それらを使って決定木を構築すること
- N個の決定木の中から, 複数の分類結果について多数決をランダムフォレストの最終的な分類結果とする
## 12 1/7
SVM(support vector machine)
- 2種類のデータを最もよく分類する境界線(面)を求める手法
- n次元のデータに対して(n-1)次元の超平面を求める
- **超平面で2つに分類できるデータセットであることが前提**
- データが混在しているデータセットには向かない
---
svmの問題設定
- ラベルとして正負の+-1を付与する
- データが正の時は$x_i^+$, 負の時は$x_i^-$と書く
---
平面と点の距離
- 平面2x + 3y + 4z + 5 = 0について
- (2 3 4)(x y z) + 5 = 0のように内積を用いて表現する
- ここで, (2 3 4)を法線ベクトル$n$と呼ぶ
- (x y z)を平面上の点$x$と呼ぶ
- 従って, 平面の式は$n \dot x + b = 0$という式で表せる
- 平面上にない点$p$について, $p$から平面までの距離dは以下の式で表せる
- $d = \frac{\|n \dot p + b\|}{\|\|n\|\|}$
- $p + t \frac{n}{\|n\|}$が平面上の点なら$d = \|t\|$
- $n \dot (p + t\frac{n}{\|n\|}) + b = 0$
- $n \dot p + b + t\frac{n\dot n}{\|n\|} = 0$
- $n \dot p + b + t\|n\| = 0$
- ここからtについて解いてd = \|t\|を用いて計算する
---
svmの不等式制約
- εは最小値なので, それ以外はε以上になる
---
マージン最大化
- 最大化問題を, 逆数にすることで最小化問題に書き換える
- この最小化問題を解くことが, svmの超平面を求めることになる
---
高次元空間の問題への変換
- 二次元空間の円の式も, 変数変換(次元拡張)を行うことで超平面で分類することが可能になる
---
カーネル
- $\phi(x_i)$の内積のことをカーネルと呼ぶ
- RBFカーネルがよく使われる
---
モデルの性能評価
- 定量データ
- 最小二乗誤差
- モデルによって得られた結果と正解データの差の二乗和を求める
- 相関係数
- モデルに依って得られた結果と正解データの相関係数を求める
- 定性データ
- 混同行列(confusion matrix)
- y=-xが正解
- y=xが不正解
- 精度(適合率): P=$\frac{TP}{TP+FP}$
- 正しいと出力されたうち, 本当に正しかったか割合
- 再現率: R=$\frac{TP}{TP+TN}$
- 本当に正しい答えのうち, 正しいと出力された割合
- F値: F=$\frac{2*P*R}{P+R}$
- 悪い方に引っ張られる平均(調和平均)
- Accuracy = $\frac{TP+FN}{TP+TN+FP+FN}$
- モデルの作り方は「学習」にあたる
||正例(出力)|負例(出力)|
|:-:|:-:|:-:|
|正例(正解)|True Positive(TP)|True Negative(TN)|
|負例(正解)|False Positive(FP)|False Negative(FN)|
## 13
- 手法の目的に合わせて手法のえらびかたが分かるようになることが目的
- 手法が分かっていれば良いという訳ではない