EPG's BLOG

某金融会社の社内SE。気になったことをちょいちょい書いていきます

データサイエンス講義 3章「アルゴリズム」

データサイエンス講義の第3章について。

※数式は、Texでも記述できるらしいが、まだブログ上での記載方法が分からないので、ひとまずプレーンテキストにて記述。

 

データサイエンス講義

データサイエンス講義

 

 

アルゴリズム:タスクを達成するための手続き、手順、ルールの集合
ベストなアルゴリズム:効率が良い、計算時間が短いetc.

データサイエンスに関して、知っておくべきアルゴリズム3つ。
1.データ変更、準備、処理のアルゴリズム
    - ソートやMapReduce、Pregal etc.
2.パラメータを推定する最適化アルゴリズム
    - 確率的勾配降下法ニュートン法、最小二乗法etc.
3.機械学習アルゴリズム


3.1 機械学習アルゴリズム

用途:予測、分類、クラスタリング

●統計モデリング機械学習アルゴリズムの違い

■生み出された分野
統計モデリング:統計の分野
機械学習アルゴリズム:計算機科学

■設計思想
統計モデリング事象の根底にある生成するプロセスを推論するよう設計
機械学習アルゴリズム:予測や分類精度が最も高くなるよう設計

■パラメータの解釈
統計モデリング:パラメータに対応する現実世界の減少や行動を説明できるようにしたい。
機械学習アルゴリズム:注力しない(つまり、ブラックボックス)。予測力を最適化することが目的のため。

■信頼区間
統計モデリング:パラメータ/推定量に対し、信頼区間と事後分布を計算し、変動性や不確実性を取り込むことに注力。
機械学習アルゴリズム:そのような概念はない。


3.2 3つの基本アルゴリズム
データで解決できる問題の多くは、数学的には分類問題や予測問題として扱うことが可能。
データサイエンティストの最も難しいこと;現実の問題から適切な方式を選ぶこと。

 

3.2.1 線形回帰
2つの変数、属性間の数学的関係を示したい時に利用。
※特に、どのような変数が明らかになっている場合に利用すると効果有。
結果変数(従属変数)、予測変数(説明変数)の間に線形関係を仮定。

モデルへ取り込みたい内容:傾向と変動

 

■傾向
線形回帰は決定論的であり、以下の数式によって、表現。
Y =β0 + β1 * X
Y:結果変数、X:予測変数

目的:最適な直線を探し当てること
最適な直線:予測と結果の差(残差平方和)が最も小さくなる直線
残差平方和(RSS(β)):Σ{(Y予(i) - Y(i))^2}
RSS(β):ある組み合わせβにおける残差平方和
Y予(i):データi番目の予測結果
Y(i):データi番目のY

2乗するのは、符号問題をなくすため。
「差」と書いているが、実際は予測データと実データの「距離」という言い方が良い。

 

■変動
傾向だけ分かったとしても、実際には同じ入力データに対して、結果にバラつきがある。
そこで、以下の数式のように誤差項を導入。

Y =β0 + β1 * X + ε
ε:誤差項

モデリングする際、誤差項は「○○分布に従う」という前提をおくのが定石。
特に、正規分布(平均0, 標準偏差σ)を仮定することが多い。

ε ~ N(0,σ^2)

誤差項の分散を推定は、予測データと実データの差を利用。

σ予 = Σ(e(i)^2)/(n-2)

e(i) = Y予(i) - Y(i)
n:全データ数

(n-2)で割るのは、不偏推定量を示すため。


■モデルの評価指標
決定係数(R-Squared):そのモデルで説明される分散の割合。1に近いほどよく表す。
p値(Pr(>|t|)):そのパラメータの有意性。帰無仮説として「パラメータ=0」を立て、値が0に近いほど帰無仮説を棄却することを示し、そのパラメータが有意であることを示す。

 

その他、多重線形回帰(複数の予測変数から1つの結果変数を算出)、多項式回帰等が存在。
(e.g.)
多重線形回帰: Y = β0 + β1 * X1 + β2 * X2 + β3 * X3
多項式回帰: Y = β0 + β1 * X1 + β2 * X1^2 + β3 * X1^3


■演習と結果
【内容】
真のモデルと正規分布に従う乱数から、データセットを作成。
そのデータセットから線形回帰を行う。

 

# # # # # # # # # # # # # # # # # # # # # # # # # 

#真のデータが線形性を持っているとして、線形回帰
#真のデータ: Y = β0 + β1 * X1

#データ数
dataNum = 1000

#説明変数の平均と標準偏差
ave = 5
std = 7

#誤差項の標準偏差
stderror = 2

#真値
true_beta0 <- 1.1
true_beta1 <- -8.2

#予め入ってるデータの削除
rm(X_1,Y,test_error)

#説明変数の作成
X_1 <- rnorm(dataNum,ave,std)
hist(X_1, col = "grey")

#誤差項
test_error <- rnorm(dataNum,0,stderror)

#真のデータ作成(誤差込)
Y <- true_beta0 + true_beta1 * X_1 + test_error

#パラメータ推定
estY <- lm(Y~X_1)
summary(estY)

#データと推定モデルの可視化
plot(X_1,Y,pch = 20, col = "black")
abline(estY, lwd=2, col="red")

# # # # # # # # # # # # # # # # # # # # # # # # # 

 

summary(estY)を実行した結果は以下。

Call:
lm(formula = Y ~ X_1)

Residuals:
Min 1Q Median 3Q Max
-5.4472 -1.2846 0.0063 1.3065 6.5014

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.979700 0.075828 12.92 <2e-16 ***
X_1 -8.196586 0.008733 -938.58 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.939 on 998 degrees of freedom
Multiple R-squared: 0.9989, Adjusted R-squared: 0.9989
F-statistic: 8.809e+05 on 1 and 998 DF, p-value: < 2.2e-16

 

決定係数が0.99なので、このモデルでほぼ正解ってことが言えてます。

また、p値もほぼ0なので、有意のあるパラメータってことです。

f:id:EPG:20141103144753p:plain

 

■参考にしたページ(コーディング)

データセットと線を同じ図に表示する方法。

Rで線形単回帰分析 - matsuou1の日記

 

■参考になるページ(学術的部分)
図も数式もあるので分かりやすい。

データマイニングの基礎:線形回帰分析とは|インターネット広告代理店で働くデータサイエンティストのブログ

具体例があるので良いかと。

Teradata|マーケターのためのデータマイニング・ヒッチハイクガイド:第9回:線形回帰分析

 

ちゃんと学びたい人は、PRMLの3章を読んだら良いかと。

パターン認識と機械学習 上

パターン認識と機械学習 上