第一回data mining勉強会 -第二章
TRANSCRIPT
第一回第一回 DataMiningDataMining勉強会勉強会
2013/1/10 2013/1/10 第二章第二章
RRによる基本統計量の計算による基本統計量の計算
自己紹介自己紹介
About Me● Name: Tomonobu.Hirano● 最近 Hadoopに関われなくて不満。● 1/4まで引っ越し残作業その他で勉強してなかった。● 発表の前日と当日朝4時までこの資料を作ってた。● いろいろヒドイ無計画なエンジニア。
ContentsContents● Rによる平均と分散の計算
● 平均と分散● Rを使った計算
● Rを始めるための弾丸ツアー● インストール● 起動 - インタラクティブモードとバッチモード● 演算子、制御構造● 変数と型● データソース● デモ● ヘルプ● その他
● n →進数 略(さすがに大丈夫でしょう)
基本統計基本統計
平均と分散平均と分散
お前ら、平均と分散は
もちろん知ってるな?
Of Course Yes!
超基本統計超基本統計
平均と分散平均と分散
~完~~完~
省略
平均と分散平均と分散
テキスト見て式を復習しておいてください。テキスト見て式を復習しておいてください。念のため。念のため。
では、 Rを使って計算するんだ。
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)
以上。
意味わかんない!
RRの導入の導入
RRを「始める」にあたって、を「始める」にあたって、「覚えておいた方がよいこと」「覚えておいた方がよいこと」「便利なこと」を中心に記述。「便利なこと」を中心に記述。(詳しい利用ケースなどは、(詳しい利用ケースなどは、
後の回に出てくるでしょう。期待。)後の回に出てくるでしょう。期待。)
RRとはとは R言語
● 統計・分析・グラフィックスに優れたスクリプト言語。● AT&Tが開発した統計言語 Sからアイデアを得た、OSSでの実装。
● Windows、Mac、 Linux、 Unix版など、様々なOSで動作。● オブジェクト指向、関数型言語の特徴を持つ。
しかし● R一文字ってGoogleで検索し辛い。● 検索結果が専門的すぎて素人お断り。
スクリプト言語…?
何言ってんのプログラミングとかするわけないよ所詮 PCオタクがするもんだよ
オタクは帰れ帰れ!
そこのお前。Windowsの電卓とEXCELだけで1000万レコード計算してみろ。
※スクリプト言語の1個を覚えるだけで計算がこんなに便利に。
※ここからややプログラミング言語的な話に入ります。とりあえず、変数と型と関数リファレンスがあれば入っていけるでしょう。
※ここでは紹介レベル。各項目の詳細は各自ご調査を。
※いずれEXCELで 1000万行できそうで怖い。
RRのインストールのインストール
CRAN( Comprehensive R Archive Network)で提供されている。
For Windows● http://www.r-project.org/● プロジェクトページ =>CRANから適当に探してWindows向けのインストーラを取得。とりあえず baseパッケージをどうぞ。
For Linux● 同じくプロジェクトページの CRANから。● Redhat系、 Debian系、 SUSELinux、 ubuntu向けにパッケージが公開されている。
RRの起動の起動
二つのモードがある。 インタラクティブモード
● 一つ一つコマンドを打ち込んでその結果を確認しつつ動作させるもの。
● つまりはインタプリタ。● デフォルトのモード。普通に起動するとこちらで動作する。
バッチモード● あらかじめ Rのコマンドを記述したスクリプトファイルを用意し、それらを一括して起動させるモード。
● コマンドラインから $ R CMD BATCH 「スクリプトファイル」で実行。
演算子と制御構造①演算子と制御構造①
演算子● 一般的なスクリプト言語、オブジェクト指向言語にある基本的なものはほとんど存在。
● +、 -、 *、 /、 ^、 <、 >、 ==、 !=、 &&、 ||、 !、など。● 中々見ない記法のものは以下。
– %/%:整数除算– %%:mod(剰余 )– <- :代入演算子
RRの演算子と制御構造②の演算子と制御構造②
制御構造● 一般的なスクリプト言語にある制御構造はやっぱり大体ある。● for、 while、 if、など。● forはベクトル等を対象にすると便利な使い方が可能。
– といっても、最近の言語じゃこの程度当たり前か・・・
> for (n in Nile) print(n * 2)
RRの変数と型①の変数と型①
変数● 一般的な変数と同様。● 宣言不要。● 静的型付けではない。● 同じ変数に別の型のデータを何度も入れ替えできる。● 代入には【 <-】演算子を使う。 =も効くが特殊なケースでうまく動かないことがあるらしい。
> n <- c(1,3,5,9)> m <- c(10,5,5,8)
RRの変数と型②の変数と型②
変数の参照● 変数名打って ENTER叩くだけ。● print(変数名 )● attributes(変数名 )● 変数名 $ 要素名 ( =>後述)
> n> m> print(n)> print(m)
RRの変数と型③の変数と型③
ベクトル型● 同じ型のデータセット。● c(要素 1,要素 2, ...)で生成できる。● x[インデックス番号 ]で参照できる。● インデックスは1から始まる。● 長さは length(x)で参照
> vec <- c(100,110,120,120,130)> vec> vec[2]> vec[2:4]
RRの変数と型④の変数と型④
文字、数字、ブール、文字列型● 文字や数字は特に苦労なし。● ブール値は「 TRUE」、「 FALSE」。 T 、 Fで省略可能。● 文字列型はダブルクォーティングで生成する。● 文字列型は文字型のベクトルとなっている。
– というよりも、単なる文字型すら要素1の文字ベクトル。– これは数値も同様で、単独の値は要素1のベクトル。
> str1 <- “teststr”> str1
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,]
RRの変数と型⑥の変数と型⑥
リスト型● データ構造に出てくるいわゆる [リスト ]とは無関係。● 異なる型の値を複数保持できるもの。● C言語の構造体に近い。● list()で作る。● listの各要素にアクセスするには、● 変数名 $要素名(スペース等開けない)
> l1 <- list(unit=2, val="str")> l1> l1$unit
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]
RRの変数と型⑧の変数と型⑧
変数出力、型調査など。● print● attributes()● class()● str():オブジェクト構造を出力
関数定義 クラス作成
● 宿題。● 関数自作の際、 returnを省略すると最後の式の戻り値がそのまま returnされる。(ここだけチェックした・・・)
RRのデータソースのデータソース
Input● RDBからデータ Input→データフレームを作成● ファイルからデータ Input→データフレームを作成● 量が大きくなればこの2パターンが主
> res <- read.table("exam_result",header=TRUE)> res> res$math> mean(res$math)
Coffee Break.
寝るな。起きろ。
RRデモデモ デモデータ
● Rにはあらかじめデモデータが備わっています。● data()で参照してみましょう。
平均と分散、その他統計平均と分散、その他統計
デモデータを使った平均、分散、など● mean(Orange$age)● var(Orange$age)● sd(Orange$age)● mean(Nile)● max(Nile)● sum(Nile)
グラフ化(グラフィックスは次回の講義)● hist(Orange$age)
RRの関数の関数
山の様に。
ヘルプヘルプ
何が出てきても調べられるように、ヘルプの参照をチェック。● help(関数名 )、 ?” ”関数名● help.search(“ ”キーワード )、 ??” ”→キーワード 検索が走る。● help(package=パッケージ名 )で、パッケージマニュアル。● example(関数名 )で、各関数の使用例とデモが出力される。● example(lm)(線形モデル例)● Googleではヒットさせ辛い。 R言語専門の検索サイトなどを使うのも手。 SeekRなど。 http://seekr.jp/
その他その他
IDE● 通常はコマンドラインで利用する。● しかし IDE(統合開発環境 )も存在する。● RStudio
– http://d.hatena.ne.jp/hiratake55/20120527/1338091311● StatET( Eclipse)● ESS(emacs)
SummarySummary Rを使ったら
● 本当に統計的な計算に向いている。他の言語に比べて。– 例:発表者の以前作ったシェルスクリプト(ヒストグラム出すまで)
– gnuplotを使ったが 226行。– Rなら hist(データセット )で終わり。– 早いし楽。
● オブジェクトサイズ 2GBまでという制限があり、巨大なデータセットには不向き。
● オブジェクト指向的要素、パフォーマンス、並列 Rなどはご興味ありましたら各自で。
● グラフィックスは4章(次回)。
統計に向いてるのは本当です。使いましょう。
ご清聴ありがとうございました。
余談
なぜ私のCentOS6.3にはEPEL経由で
yumインストールできんのだ。
※ライブラリのバージョンが合わない・・・
バカじゃないの!ソースコードからビルドすればいいだけじゃん!そんなこともできないんなら仕事やめなよHAHAHA!
※RはOSSです。ソースコードはこちら。http://cran.md.tsukuba.ac.jp/src
CentOS6.3のビルドツールチェインなら、特に苦労なくすんなり入った。