data mining with r algae bloom case

Post on 24-May-2015

1.132 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

R でデータマイニング

@kenchan0130_aki

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

Tokyo.R #24

某理科系大学院生

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

  ⇨ テキストマイニング?

寝ることが趣味

働いたら負け

最近の原動力  ⇨

自己紹介

某理科系大学院生

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

  ⇨ テキストマイニング?

寝ることが趣味

働いたら負け

最近の原動力  ⇨

自己紹介

Luis Torgo(2010)

•導入

•藻類の予測

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

•不正行為の検知

•マクロアレイの分類

Data Mining with RLearning with Case Studies

Luis Torgo(2010)

•導入

•藻類の予測

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

•不正行為の検知

•マクロアレイの分類

藻類の予測

また次の機会

また次の機会

また次の機会

Data Mining with RLearning with Case Studies

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

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

しゃる

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

本日の目標

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

引用:Wikipedia

データマイニング

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

いいえ

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

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

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

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

この問題の背景

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

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

発生頻度を予測できたら

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

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

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

データ

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

使うのはalgae

mxPH・・・ ph値の最大値

mnO2・・・ 酸素の最小値

Cl ・・・ 塩化物の平均値

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

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

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

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

Chla ・・・ 葉緑素の平均

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

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

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

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

− plotしてみたりする

データの要約と可視化

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

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

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

Histogram of algae$mxPH

algae$mxPH

Density

6 7 8 9 10

0.00.10.20.30.40.50.60.7

Histogram of algae$mxPH

algae$mxPH

Density

6 7 8 9 10

0.00.10.20.30.40.50.60.7

正規分布みたいですよね

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

 mxPH = algae$mxPH

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

やめたいときは detach(algae)

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

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

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つ存在することがわかる

-3 -2 -1 0 1 2 3

67

89

Normal QQ plot of maximum pH

norm quantiles

algae$mxPH

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

-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

次にoPO4の箱ひげ図

0100200300400500

Orth

opho

spha

te (o

PO

4)

0100200300400500

Orth

opho

spha

te (o

PO

4)

positive skewが確認できる

0100200300400500

Orth

opho

spha

te (o

PO

4)

positive skewが確認できる

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

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

0 50 100 150 200

05000

15000

25000

algae$NH4

meanmean+sdmedian

0 50 100 150 200

05000

15000

25000

algae$NH4

meanmean+sdmedian

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

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

0 50 100 150 200

05000

15000

25000

algae$NH4

153

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

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

げ、NA祭りだ・・・

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

manyNAs()

is.na()

complete.cases()

na.omit()

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

NAを処理する方法

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

large medium small

020

4060

80

River Size

Alg

al a

1

見づらいので・・・

Algal a1

Riv

er S

ize

large

medium

small

0 20 40 60 80

Algal a1

Riv

er S

ize

large

medium

small

0 20 40 60 80

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

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

Algal A1

Riv

er S

ize

large

medium

small

0 20 40 60 80

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

Algal A1

Riv

er S

ize

large

medium

small

0 20 40 60 80

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

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

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

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を表している

欠損値の補完

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

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

平均と中央値で補完する

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

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

今回はPO4とoPO4

回帰した結果で補完

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

藻類の発生頻度を予測

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

予測モデル

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

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

分散分析確認してみよう

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

正直、微妙

正直、微妙

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

約30%の信頼度

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

うん、微妙

約40%の信頼度になった

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

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

これ

0.6158 < xerror < 0.83332

これ

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

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

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

モデルの選択と評価

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

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

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

-10 0 10 30

020

4060

80Linear Model

Predictions

True

Val

ues

10 20 30 400

2040

6080

Regression Tree

Predictions

True

Val

ues

正直、微妙

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

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

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

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

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

と終わらせています

言い訳をすると

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

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

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

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

ありがとうございました

top related