data mining with r algae bloom case

86
R でデータマイニング @kenchan0130_aki ~サンプリングデータのケース~ Tokyo.R #24

Upload: tadayuki-onishi

Post on 24-May-2015

1.132 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Data Mining with R algae bloom case

R でデータマイニング

@kenchan0130_aki

~サンプリングデータのケース~

Tokyo.R #24

Page 2: Data Mining with R algae bloom case

某理科系大学院生

専攻は確率過程、信用リスク

  ⇨ テキストマイニング?

寝ることが趣味

働いたら負け

最近の原動力  ⇨

自己紹介

Page 3: Data Mining with R algae bloom case

某理科系大学院生

専攻は確率過程、信用リスク

  ⇨ テキストマイニング?

寝ることが趣味

働いたら負け

最近の原動力  ⇨

自己紹介

Page 4: Data Mining with R algae bloom case

Luis Torgo(2010)

•導入

•藻類の予測

•株式市場のリターンの予測

•不正行為の検知

•マクロアレイの分類

Data Mining with RLearning with Case Studies

Page 5: Data Mining with R algae bloom case

Luis Torgo(2010)

•導入

•藻類の予測

•株式市場のリターンの予測

•不正行為の検知

•マクロアレイの分類

藻類の予測

また次の機会

また次の機会

また次の機会

Data Mining with RLearning with Case Studies

Page 6: Data Mining with R algae bloom case

私も初心者です!一緒に勉強しましょう

ここにはデータマイニングのプロが多くいらっ

しゃる

− 分からないことはお聞きしてしまおう!

本日の目標

Page 7: Data Mining with R algae bloom case

 データマイニングとは、統計学、パターン認識、人工知能等のデータ解析の技法を大量のデータに網羅的に適用することで知識を取り出す技術。 通常のデータの扱い方からは想像が及びにくい、ヒューリスティクな知識獲得が可能であるという期待を含意していることが多い。

引用:Wikipedia

データマイニング

Page 8: Data Mining with R algae bloom case

今回はすごい技術教えてくれるんですか?

Page 9: Data Mining with R algae bloom case

いいえ

Page 10: Data Mining with R algae bloom case

データをどう見るのか?(に近いです)

Page 12: Data Mining with R algae bloom case

水中に存在する藻類の識別は大変

顕微鏡検査やらなんやらと経験者が必要

高価で分析スピードが遅い

この問題の背景

Page 13: Data Mining with R algae bloom case

安価で自動化されたシステムを作れるかもしれない

化学物質だけではなく、他の特性(季節や川の種類など)がどう影響するか理解できるかもしれない

発生頻度を予測できたら

Page 14: Data Mining with R algae bloom case

水のサンプルはヨーロッパの異なる河川で一年間採取したもの

有害な藻類の発生頻度とほぼ同じ間隔で採取

DMwRパッケージのalgaeのデータセットを使います

データ

Page 15: Data Mining with R algae bloom case

パッケージが用意されているのでインストール

使うのはalgae

Page 16: Data Mining with R algae bloom case

mxPH・・・ ph値の最大値

mnO2・・・ 酸素の最小値

Cl ・・・ 塩化物の平均値

NO3 ・・・ 硝酸イオンの平均値

NH4 ・・・ アンモニウムイオンの平均値

oPO4 ・・・ オルソリン酸イオンの平均

PO4 ・・・ リン酸の合計の平均値

Chla ・・・ 葉緑素の平均

a1~a7 ・・・ 異なる7つの藻類の発生頻度

Page 17: Data Mining with R algae bloom case

データが与えられたらとりあえずsummary

− データ(統計量など)を確認する

データを見える化しましょう

− plotしてみたりする

データの要約と可視化

Page 18: Data Mining with R algae bloom case

summaryから頻度などの特徴が得られる

Page 19: Data Mining with R algae bloom case

とりあえずたくさん可視化してみましょう!

Page 20: Data Mining with R algae bloom case

試しにmxPHのヒストグラムを出力してみる

Page 21: Data Mining with R algae bloom case

Histogram of algae$mxPH

algae$mxPH

Density

6 7 8 9 10

0.00.10.20.30.40.50.60.7

Page 22: Data Mining with R algae bloom case

Histogram of algae$mxPH

algae$mxPH

Density

6 7 8 9 10

0.00.10.20.30.40.50.60.7

正規分布みたいですよね

Page 23: Data Mining with R algae bloom case

ちなみに attach(algae) をすると

 mxPH = algae$mxPH

 直接カラム名でアクセスできる

やめたいときは detach(algae)

Page 24: Data Mining with R algae bloom case

じゃあ本当に正規分布なのか確かめる

Page 25: Data Mining with R algae bloom case

Histogram of maximum pH value

algae$mxPH

Density

6 7 8 9 10

0.0

0.2

0.4

0.6

0.8

1.0

Page 26: Data Mining with R algae bloom case

Histogram of maximum pH value

algae$mxPH

Density

6 7 8 9 10

0.0

0.2

0.4

0.6

0.8

1.0

裾の辺りに小さい値が2つ存在することがわかる

Page 27: Data Mining with R algae bloom case

-3 -2 -1 0 1 2 3

67

89

Normal QQ plot of maximum pH

norm quantiles

algae$mxPH

# distribution:デフォルトで norm# envelope:デフォルトで 0.95

Page 28: Data Mining with R algae bloom case

-3 -2 -1 0 1 2 3

67

89

Normal QQ plot of maximum pH

norm quantiles

algae$mxPH

ほぼ正規分布であることがわかる5%エラーで

# distribution:デフォルトで norm# envelope:デフォルトで 0.95

Page 29: Data Mining with R algae bloom case

次にoPO4の箱ひげ図

Page 30: Data Mining with R algae bloom case

0100200300400500

Orth

opho

spha

te (o

PO

4)

Page 31: Data Mining with R algae bloom case

0100200300400500

Orth

opho

spha

te (o

PO

4)

positive skewが確認できる

Page 32: Data Mining with R algae bloom case

0100200300400500

Orth

opho

spha

te (o

PO

4)

positive skewが確認できる

値の大きい外れ値がいくつか確認できる

Page 33: Data Mining with R algae bloom case

もうちょい外れ値についてゴニョゴニョ

Page 34: Data Mining with R algae bloom case

0 50 100 150 200

05000

15000

25000

algae$NH4

meanmean+sdmedian

Page 35: Data Mining with R algae bloom case

0 50 100 150 200

05000

15000

25000

algae$NH4

meanmean+sdmedian

やっぱり外れ値いっぱいあるね

Page 36: Data Mining with R algae bloom case

外れ値の元データどういうのか知りたいですね

Page 37: Data Mining with R algae bloom case

0 50 100 150 200

05000

15000

25000

algae$NH4

153

Page 38: Data Mining with R algae bloom case

いちいちマウスでクリックは面倒くさい

plotで大体15000以上だからそれで検索かけてもOK

Page 39: Data Mining with R algae bloom case

げ、NA祭りだ・・・

Page 40: Data Mining with R algae bloom case

ちゃんとNAを除く処理を書くようにしましょう

Page 41: Data Mining with R algae bloom case

manyNAs()

is.na()

complete.cases()

na.omit()

mean()やsd()などのna.rmオプション

NAを処理する方法

Page 42: Data Mining with R algae bloom case

藻類の発生頻度の分布を箱ひげ図で確かめる

Page 43: Data Mining with R algae bloom case

large medium small

020

4060

80

River Size

Alg

al a

1

見づらいので・・・

Page 44: Data Mining with R algae bloom case

Algal a1

Riv

er S

ize

large

medium

small

0 20 40 60 80

Page 45: Data Mining with R algae bloom case

Algal a1

Riv

er S

ize

large

medium

small

0 20 40 60 80

a1はsmallに多く分布していることが確認できる

Page 46: Data Mining with R algae bloom case

もうちょっと・・・すごい(気がする)箱ひげ図

Page 47: Data Mining with R algae bloom case

Algal A1

Riv

er S

ize

large

medium

small

0 20 40 60 80

# ●は頻度の平均値# 縦線は左から 第一四分位点、中央値、第三四分位点# ダッシュは実際のデータの頻度

Page 48: Data Mining with R algae bloom case

Algal A1

Riv

er S

ize

large

medium

small

0 20 40 60 80

頻度も確認できるので便利

# ●は頻度の平均値# 縦線は左から 第一四分位点、中央値、第三四分位点# ダッシュは実際のデータの頻度

Page 49: Data Mining with R algae bloom case

a3

autumn

spring

summer

winter

0 10 20 30 40

minO2 minO2

autumn

spring

summer

winter

minO2

0 10 20 30 40

minO2

# number:データを何個に分けるか# overlap:分けた時にデータをどのくらい重複させるか

# striplotは latticeパッケージ

Page 50: Data Mining with R algae bloom case

a3

autumn

spring

summer

winter

0 10 20 30 40

minO2 minO2

autumn

spring

summer

winter

minO2

0 10 20 30 40

minO2

# number:データを何個に分けるか# overlap:分けた時にデータをどのくらい重複させるか

# striplotは latticeパッケージ

a3とseasonの関係とminO2を表している

Page 51: Data Mining with R algae bloom case

欠損値の補完

さっきも出てきたNAたちをどうしようか?ということ

欠損値を除く=その行のデータが消える −色々な方法で補完

Page 52: Data Mining with R algae bloom case

平均と中央値で補完する

Page 53: Data Mining with R algae bloom case

相関関係を使って補完してみる

Page 54: Data Mining with R algae bloom case

補完OKなのは相関係数0.9以上

Page 55: Data Mining with R algae bloom case

今回はPO4とoPO4

Page 56: Data Mining with R algae bloom case

回帰した結果で補完

Page 57: Data Mining with R algae bloom case

k近傍法でNAを補完してくれる関数がDMwRには用意されている

Page 58: Data Mining with R algae bloom case

藻類の発生頻度を予測

今回は線形回帰モデルと樹木モデルを使用

予測モデル

Page 59: Data Mining with R algae bloom case
Page 60: Data Mining with R algae bloom case

調整済み決定係数低いなぁー

Page 61: Data Mining with R algae bloom case

調整済み決定係数低いなぁー

分散分析確認してみよう

Page 62: Data Mining with R algae bloom case

seasonのF値低いし除いてみようかな

Page 63: Data Mining with R algae bloom case
Page 64: Data Mining with R algae bloom case

正直、微妙

Page 65: Data Mining with R algae bloom case

正直、微妙

一応ちゃんと比較してみる

Page 66: Data Mining with R algae bloom case

約30%の信頼度

Page 67: Data Mining with R algae bloom case

Rには素敵な関数stepが用意されています

Page 68: Data Mining with R algae bloom case

うん、微妙

Page 69: Data Mining with R algae bloom case

約40%の信頼度になった

Page 70: Data Mining with R algae bloom case

どうも線形モデルはうまく当てはまらない?

Page 71: Data Mining with R algae bloom case

xerrorの最小値からその標準偏差1倍の範囲内の最大のxerror値を選ぶ

これ

Page 72: Data Mining with R algae bloom case

0.6158 < xerror < 0.83332

Page 73: Data Mining with R algae bloom case

これ

この剪定した結果を用いて樹木を作る

Page 74: Data Mining with R algae bloom case
Page 75: Data Mining with R algae bloom case

なんでcp=0.08なんですかね?

Page 76: Data Mining with R algae bloom case

今の作業を全部やってくれる関数がDMwRには用意されている

Page 77: Data Mining with R algae bloom case

モデルの選択と評価

線形回帰モデルと樹木モデルのモデルを評価する

Page 78: Data Mining with R algae bloom case

平均絶対誤差(mae)、平均二乗誤差(mse)、平均二乗誤差のルート(rmse)、正規化平均二乗誤差(nmse)、正規化平均絶対

誤差(nmae)を求めてくれる関数がDMwRには用意されている

Page 79: Data Mining with R algae bloom case

-10 0 10 30

020

4060

80Linear Model

Predictions

True

Val

ues

10 20 30 400

2040

6080

Regression Tree

Predictions

True

Val

ues

正直、微妙

Page 80: Data Mining with R algae bloom case

ホールドアウト、モンテカルロシミュレーション、ブートストラップなどを使って予測モデルを直してくれる

experimentalComparison関数というものがDMwRには用意されている

Page 81: Data Mining with R algae bloom case
Page 82: Data Mining with R algae bloom case

すみませんこれより先よくわかりませんでした

Page 83: Data Mining with R algae bloom case

おそらくスコアをつけて予測モデルを修正していくらしい

Page 84: Data Mining with R algae bloom case

この本は「モデル選択の段階でとても興味深い得点を得ることができた」

と終わらせています

言い訳をすると

Page 85: Data Mining with R algae bloom case

まとめデータを可視化してどうなってるのか見ましょう

欠損値(NA)をうまく処理しましょう

モデル予測の当てはめは面倒

今回の方法も「こんな風にやっていけばデータマイニングできるんじゃない?」という提唱にすぎません

Page 86: Data Mining with R algae bloom case

ありがとうございました