第一回data mining勉強会 -第二章

45
第一回 第一回 DataMining DataMining 勉強会 勉強会 2013/1/10 2013/1/10 第二章 第二章 R R による基本統計量の計算 による基本統計量の計算

Upload: tomonobuhirano

Post on 04-Jul-2015

334 views

Category:

Education


1 download

TRANSCRIPT

Page 1: 第一回Data mining勉強会 -第二章

第一回第一回 DataMiningDataMining勉強会勉強会

2013/1/10 2013/1/10 第二章第二章

RRによる基本統計量の計算による基本統計量の計算

Page 2: 第一回Data mining勉強会 -第二章

自己紹介自己紹介

About Me● Name: Tomonobu.Hirano● 最近 Hadoopに関われなくて不満。● 1/4まで引っ越し残作業その他で勉強してなかった。● 発表の前日と当日朝4時までこの資料を作ってた。● いろいろヒドイ無計画なエンジニア。

Page 3: 第一回Data mining勉強会 -第二章

ContentsContents● Rによる平均と分散の計算

● 平均と分散● Rを使った計算

● Rを始めるための弾丸ツアー● インストール● 起動 - インタラクティブモードとバッチモード● 演算子、制御構造● 変数と型● データソース● デモ● ヘルプ● その他

● n →進数 略(さすがに大丈夫でしょう)

Page 4: 第一回Data mining勉強会 -第二章

基本統計基本統計

平均と分散平均と分散

Page 5: 第一回Data mining勉強会 -第二章

お前ら、平均と分散は

もちろん知ってるな?

Page 6: 第一回Data mining勉強会 -第二章

Of Course Yes!

Page 7: 第一回Data mining勉強会 -第二章

超基本統計超基本統計

平均と分散平均と分散

~完~~完~

省略

Page 8: 第一回Data mining勉強会 -第二章

平均と分散平均と分散

テキスト見て式を復習しておいてください。テキスト見て式を復習しておいてください。念のため。念のため。

Page 9: 第一回Data mining勉強会 -第二章

では、 Rを使って計算するんだ。

Page 10: 第一回Data mining勉強会 -第二章

RRを使った平均と分散を使った平均と分散

> x1 <- c( 118, 119, 121, 122, 170 )> x1 <- c( 118, 119, 121, 122, 170 )> x2 <- c(128,129,130,131,132)> x2 <- c(128,129,130,131,132)

> mean(x1)> mean(x1)> var(x2)> var(x2)

Page 11: 第一回Data mining勉強会 -第二章

以上。

Page 12: 第一回Data mining勉強会 -第二章

意味わかんない!

Page 13: 第一回Data mining勉強会 -第二章

RRの導入の導入

RRを「始める」にあたって、を「始める」にあたって、「覚えておいた方がよいこと」「覚えておいた方がよいこと」「便利なこと」を中心に記述。「便利なこと」を中心に記述。(詳しい利用ケースなどは、(詳しい利用ケースなどは、

後の回に出てくるでしょう。期待。)後の回に出てくるでしょう。期待。)

Page 14: 第一回Data mining勉強会 -第二章

RRとはとは R言語

● 統計・分析・グラフィックスに優れたスクリプト言語。● AT&Tが開発した統計言語 Sからアイデアを得た、OSSでの実装。

● Windows、Mac、 Linux、 Unix版など、様々なOSで動作。● オブジェクト指向、関数型言語の特徴を持つ。

しかし● R一文字ってGoogleで検索し辛い。● 検索結果が専門的すぎて素人お断り。

Page 15: 第一回Data mining勉強会 -第二章

スクリプト言語…?

Page 16: 第一回Data mining勉強会 -第二章

何言ってんのプログラミングとかするわけないよ所詮 PCオタクがするもんだよ

オタクは帰れ帰れ!

Page 17: 第一回Data mining勉強会 -第二章

そこのお前。Windowsの電卓とEXCELだけで1000万レコード計算してみろ。

Page 18: 第一回Data mining勉強会 -第二章

※スクリプト言語の1個を覚えるだけで計算がこんなに便利に。

※ここからややプログラミング言語的な話に入ります。とりあえず、変数と型と関数リファレンスがあれば入っていけるでしょう。

※ここでは紹介レベル。各項目の詳細は各自ご調査を。

※いずれEXCELで 1000万行できそうで怖い。

Page 19: 第一回Data mining勉強会 -第二章

RRのインストールのインストール

CRAN( Comprehensive R Archive Network)で提供されている。

For Windows● http://www.r-project.org/● プロジェクトページ =>CRANから適当に探してWindows向けのインストーラを取得。とりあえず baseパッケージをどうぞ。

For Linux● 同じくプロジェクトページの CRANから。● Redhat系、 Debian系、 SUSELinux、 ubuntu向けにパッケージが公開されている。

Page 20: 第一回Data mining勉強会 -第二章

RRの起動の起動

二つのモードがある。 インタラクティブモード

● 一つ一つコマンドを打ち込んでその結果を確認しつつ動作させるもの。

● つまりはインタプリタ。● デフォルトのモード。普通に起動するとこちらで動作する。

バッチモード● あらかじめ Rのコマンドを記述したスクリプトファイルを用意し、それらを一括して起動させるモード。

● コマンドラインから $ R CMD BATCH 「スクリプトファイル」で実行。

Page 21: 第一回Data mining勉強会 -第二章

演算子と制御構造①演算子と制御構造①

演算子● 一般的なスクリプト言語、オブジェクト指向言語にある基本的なものはほとんど存在。

● +、 -、 *、 /、 ^、 <、 >、 ==、 !=、 &&、 ||、 !、など。● 中々見ない記法のものは以下。

– %/%:整数除算– %%:mod(剰余 )– <- :代入演算子

Page 22: 第一回Data mining勉強会 -第二章

RRの演算子と制御構造②の演算子と制御構造②

制御構造● 一般的なスクリプト言語にある制御構造はやっぱり大体ある。● for、 while、 if、など。● forはベクトル等を対象にすると便利な使い方が可能。

– といっても、最近の言語じゃこの程度当たり前か・・・

> for (n in Nile) print(n * 2)

Page 23: 第一回Data mining勉強会 -第二章

RRの変数と型①の変数と型①

変数● 一般的な変数と同様。● 宣言不要。● 静的型付けではない。● 同じ変数に別の型のデータを何度も入れ替えできる。● 代入には【 <-】演算子を使う。 =も効くが特殊なケースでうまく動かないことがあるらしい。

> n <- c(1,3,5,9)> m <- c(10,5,5,8)

Page 24: 第一回Data mining勉強会 -第二章

RRの変数と型②の変数と型②

変数の参照● 変数名打って ENTER叩くだけ。● print(変数名 )● attributes(変数名 )● 変数名 $ 要素名 ( =>後述)

> n> m> print(n)> print(m)

Page 25: 第一回Data mining勉強会 -第二章

RRの変数と型③の変数と型③

ベクトル型● 同じ型のデータセット。● c(要素 1,要素 2, ...)で生成できる。● x[インデックス番号 ]で参照できる。● インデックスは1から始まる。● 長さは length(x)で参照

> vec <- c(100,110,120,120,130)> vec> vec[2]> vec[2:4]

Page 26: 第一回Data mining勉強会 -第二章

RRの変数と型④の変数と型④

文字、数字、ブール、文字列型● 文字や数字は特に苦労なし。● ブール値は「 TRUE」、「 FALSE」。 T 、 Fで省略可能。● 文字列型はダブルクォーティングで生成する。● 文字列型は文字型のベクトルとなっている。

– というよりも、単なる文字型すら要素1の文字ベクトル。– これは数値も同様で、単独の値は要素1のベクトル。

> str1 <- “teststr”> str1

Page 27: 第一回Data mining勉強会 -第二章

RRの変数と型⑤の変数と型⑤

行列型● 数学でいう n×m行列。● c(要素 1,要素 2, ...)で生成できる。● 全要素が同じ型である。● rbind(行結合)、 cbind(列結合)で、ベクトルを結合して作る。

● インデックス二つで要素を指定する他、行のみ、列のみの指定が可能。

> mtx1 <- rbind(c(1,5,6),c(2,6,7))> mtx2 <- cbind(c(1,5,6),c(2,6,7))> mtx1> mtx2> mtx1[1,2]> mtx1[,2]> mtx1[2,]

Page 28: 第一回Data mining勉強会 -第二章

RRの変数と型⑥の変数と型⑥

リスト型● データ構造に出てくるいわゆる [リスト ]とは無関係。● 異なる型の値を複数保持できるもの。● C言語の構造体に近い。● list()で作る。● listの各要素にアクセスするには、● 変数名 $要素名(スペース等開けない)

> l1 <- list(unit=2, val="str")> l1> l1$unit

Page 29: 第一回Data mining勉強会 -第二章

RRの変数と型⑦の変数と型⑦

データフレーム型● 一言で行ってしまえば、 RDBのテーブルみたいなもの。● 各カラムそれぞれ異なる型を持てる行列。● 実際の中身としては、各要素が行列であるリスト、ということになっている。

● data.frame()で作成。● 基本的には、このように作るよりも、 RDBやファイルなどから

Importする。

> df <- data.frame(list(uid=c("0001","0002","0003"),time=c(10,20,40)))> df> df$time> df[,1]

Page 30: 第一回Data mining勉強会 -第二章

RRの変数と型⑧の変数と型⑧

変数出力、型調査など。● print● attributes()● class()● str():オブジェクト構造を出力

関数定義 クラス作成

● 宿題。● 関数自作の際、 returnを省略すると最後の式の戻り値がそのまま returnされる。(ここだけチェックした・・・)

Page 31: 第一回Data mining勉強会 -第二章

RRのデータソースのデータソース

Input● RDBからデータ Input→データフレームを作成● ファイルからデータ Input→データフレームを作成● 量が大きくなればこの2パターンが主

> res <- read.table("exam_result",header=TRUE)> res> res$math> mean(res$math)

Page 32: 第一回Data mining勉強会 -第二章

Coffee Break.

Page 33: 第一回Data mining勉強会 -第二章

寝るな。起きろ。

Page 34: 第一回Data mining勉強会 -第二章

RRデモデモ デモデータ

● Rにはあらかじめデモデータが備わっています。● data()で参照してみましょう。

Page 35: 第一回Data mining勉強会 -第二章

平均と分散、その他統計平均と分散、その他統計

デモデータを使った平均、分散、など● mean(Orange$age)● var(Orange$age)● sd(Orange$age)● mean(Nile)● max(Nile)● sum(Nile)

グラフ化(グラフィックスは次回の講義)● hist(Orange$age)

Page 36: 第一回Data mining勉強会 -第二章

RRの関数の関数

山の様に。

Page 37: 第一回Data mining勉強会 -第二章

ヘルプヘルプ

何が出てきても調べられるように、ヘルプの参照をチェック。● help(関数名 )、 ?” ”関数名● help.search(“ ”キーワード )、 ??” ”→キーワード 検索が走る。● help(package=パッケージ名 )で、パッケージマニュアル。● example(関数名 )で、各関数の使用例とデモが出力される。● example(lm)(線形モデル例)● Googleではヒットさせ辛い。 R言語専門の検索サイトなどを使うのも手。 SeekRなど。 http://seekr.jp/

Page 38: 第一回Data mining勉強会 -第二章

その他その他

IDE● 通常はコマンドラインで利用する。● しかし IDE(統合開発環境 )も存在する。● RStudio

– http://d.hatena.ne.jp/hiratake55/20120527/1338091311● StatET( Eclipse)● ESS(emacs)

Page 39: 第一回Data mining勉強会 -第二章

SummarySummary Rを使ったら

● 本当に統計的な計算に向いている。他の言語に比べて。– 例:発表者の以前作ったシェルスクリプト(ヒストグラム出すまで)

– gnuplotを使ったが 226行。– Rなら hist(データセット )で終わり。– 早いし楽。

● オブジェクトサイズ 2GBまでという制限があり、巨大なデータセットには不向き。

● オブジェクト指向的要素、パフォーマンス、並列 Rなどはご興味ありましたら各自で。

● グラフィックスは4章(次回)。

Page 40: 第一回Data mining勉強会 -第二章

統計に向いてるのは本当です。使いましょう。

Page 41: 第一回Data mining勉強会 -第二章

ご清聴ありがとうございました。

Page 42: 第一回Data mining勉強会 -第二章

余談

Page 43: 第一回Data mining勉強会 -第二章

なぜ私のCentOS6.3にはEPEL経由で

yumインストールできんのだ。

※ライブラリのバージョンが合わない・・・

Page 44: 第一回Data mining勉強会 -第二章

バカじゃないの!ソースコードからビルドすればいいだけじゃん!そんなこともできないんなら仕事やめなよHAHAHA!

Page 45: 第一回Data mining勉強会 -第二章

※RはOSSです。ソースコードはこちら。http://cran.md.tsukuba.ac.jp/src

CentOS6.3のビルドツールチェインなら、特に苦労なくすんなり入った。