SlideShare une entreprise Scribd logo
1  sur  25
第4回ゼロからはじめるR勉強会
ゼロからファンクションを作る
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
自己紹介
 名前
 飯田 啓介
(twitter: menphis_feel)
(facebookの方に主に出現)
 会社
 株式会社ブリリアントサービス
 業務
 サーバー、データ解析、マイニング
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
カスタマイズした関数がほしい
Rは統計解析のライブラリーが充実
統計解析を少ないステップ数で実行できることが特
徴
 統計解析に特化した関数が標準で組み込まれている
 スクリプトなので細かい設定が不要
 CRANパッケージでモジュールの拡張が容易
カスタマイズした関数がほしい
実績のある関数は再利用したい
 他プロジェクトでも利用したい
 実績のある関数は部品化しておく
 高いデータの再現性
 処理を高速化したい
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
関数の基本系
関数名<-function(x){
x<-x+10
return(x)
}
関数を作る
関数を作る
> # 基本形
> f.test<-function(x){
+ x<-x+10     # 引数に10をたす
+ return(x)     # 結果を返す
+ }
>
> # 実行
> f.test(2)
[1] 12
早速関数を作ってみる
関数を作る
# 文字列を変数に指定
f.test2<-function(s){
# 結合する文字列を設定
smp.pb <- c("おはよう","こんばんわ","こんにちわ","寒いで
すね","暑いですね")
# 文字列をランダムに抽出
rndStr<-sample(smp.pb,1)
# 文字列を結合する
s<-paste(s, rndStr)
return(s)
}
> f.test2("飯田さん")
[1] "飯田さん おはよう"
当然スクリプトなので型指定などはない。
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
高い再現性
$ R --no-save --vanilla --file=r04_test.R
Rのファイルをそのまま読みこませればデータを再現させれ
る。
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
高速化が可能
スクリプトスクリプト
インラインインライン コンパイルコンパイル
おそいおそい バイナリーバイナリー
はやいはやい
高速化が可能
● よく使う関数
● 長いコードの関数
●
for文などコストのかかる関数
高速化の効果があるコード
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
バイナリー化する
> library(compiler)
> binary_func = compiler::cmpfun(inline_func)
> library(compiler)
> binary_func = compiler::cmpfun(inline_func)
バイナリー化のコードはこれだけ
Agenda
 自己紹介
 カスタマイズした関数がほしい
 関数を作る
 高い再現性
 高速化が可能
 バイナリー化する
 効果を確認する
効果を確認する
1. 処理時間の長い関数を作成
samples.low_random<-function(s_val){
tensu<-c(1:100)
x<-sample(length(tensu), size=3, replace=FALSE, prob=tensu)
for (i in 2:s_val){
aa<-0
for(zz in c(1:10000)){
aa<-aa+zz
}
y<-sample(length(tensu), size=3, replace=FALSE, prob=tensu)
x<-rbind(x,y)
}
…...........
}
効果を確認する
2. コンパイルして高速化
library(compiler)
samples.high_random = compiler::cmpfun(samples.low_random)
効果を確認する
3. 実行してグラフ化
measure_start<-function(s_vals){
measures.period<-c(0,0)
for (x in s_vals){
print(x)
l_time<-samples.low_func(x)
h_time<-samples.high_func(x)
y<-c(l_time[1], h_time[1])
measures.period<-rbind(measures.period, y)
}
…...............
plot(
samples.times,
(df.z[,1] - df.z[,2]),
type="l",
pch = pchs[2],.…...............
}
効果を確認する
4. 結果
関数内のループ処理回数による実行時間の差分を対数グラフで
表す。 処理回数と実行時間の差分
効果を確認する
実行時間の違いを正規分布で表すと効果がよくわかる。
ご清聴ありがとうございました
Rを共に勉強しましょ
う!

Contenu connexe

En vedette

関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフPaweł Rusin
 
R言語で統計分類基本
R言語で統計分類基本R言語で統計分類基本
R言語で統計分類基本Paweł Rusin
 
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜Yasuyuki Sugai
 
WordBench京都9月号
WordBench京都9月号WordBench京都9月号
WordBench京都9月号Koji Asaga
 
WordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオンWordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオンTakashi Hosoya
 
初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2OWL.learn
 
Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Takashi Yamane
 
EMNLP 2015 yomikai
EMNLP 2015 yomikai EMNLP 2015 yomikai
EMNLP 2015 yomikai Yo Ehara
 
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor ExtractionHumor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction裕樹 奥田
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章Shuyo Nakatani
 
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsLearning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsTakanori Nakai
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章Shuyo Nakatani
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話Kazuya Wada
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...Shuyo Nakatani
 
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]Yuta Kikuchi
 

En vedette (18)

関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ
 
R言語で統計分類基本
R言語で統計分類基本R言語で統計分類基本
R言語で統計分類基本
 
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜機会学習・データビジュアライゼーション事始め〜
 
WordBench京都9月号
WordBench京都9月号WordBench京都9月号
WordBench京都9月号
 
WordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオンWordBench京都 9月号:kintone×WordPressハンズオン
WordBench京都 9月号:kintone×WordPressハンズオン
 
初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2初心者のためのRとRStudio入門 vol.2
初心者のためのRとRStudio入門 vol.2
 
Emnlp読み会資料
Emnlp読み会資料Emnlp読み会資料
Emnlp読み会資料
 
Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)Rの導入とRStudio事始め(改訂版)
Rの導入とRStudio事始め(改訂版)
 
EMNLP 2015 yomikai
EMNLP 2015 yomikai EMNLP 2015 yomikai
EMNLP 2015 yomikai
 
Humor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor ExtractionHumor Recognition and Humor Anchor Extraction
Humor Recognition and Humor Anchor Extraction
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
Learning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional RepresentationsLearning Better Embeddings for Rare Words Using Distributional Representations
Learning Better Embeddings for Rare Words Using Distributional Representations
 
星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章星野「調査観察データの統計科学」第1&2章
星野「調査観察データの統計科学」第1&2章
 
そろそろRStudioの話
そろそろRStudioの話そろそろRStudioの話
そろそろRStudioの話
 
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
[Yang, Downey and Boyd-Graber 2015] Efficient Methods for Incorporating Knowl...
 
Rstudio事始め
Rstudio事始めRstudio事始め
Rstudio事始め
 
A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]A Neural Attention Model for Sentence Summarization [Rush+2015]
A Neural Attention Model for Sentence Summarization [Rush+2015]
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 

Similaire à 第4回関東ゼロからはじめるR言語勉強会

リファクタリングで実装が○○分短縮した話
リファクタリングで実装が○○分短縮した話リファクタリングで実装が○○分短縮した話
リファクタリングで実装が○○分短縮した話infinite_loop
 
Gasでgoogleカレンダー 移行ツールを作った話
Gasでgoogleカレンダー 移行ツールを作った話Gasでgoogleカレンダー 移行ツールを作った話
Gasでgoogleカレンダー 移行ツールを作った話AMI_YAMAMOTO
 
ワークスタイルを変革する情報基盤 [ITpro EXPO A651]
ワークスタイルを変革する情報基盤 [ITpro EXPO A651]ワークスタイルを変革する情報基盤 [ITpro EXPO A651]
ワークスタイルを変革する情報基盤 [ITpro EXPO A651]智治 長沢
 
GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話
GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話
GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話masaaki tsuchiya
 
RayPen_製品資料_231101.pdf
RayPen_製品資料_231101.pdfRayPen_製品資料_231101.pdf
RayPen_製品資料_231101.pdfGrapeCity, inc.
 
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】貴史 小川
 
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】貴史 小川
 
Ga tracker5_ムラヤマユウスケ_slideshare
 Ga tracker5_ムラヤマユウスケ_slideshare Ga tracker5_ムラヤマユウスケ_slideshare
Ga tracker5_ムラヤマユウスケ_slideshareyusuke0726
 
アジャイルマネジメントとは?
アジャイルマネジメントとは?アジャイルマネジメントとは?
アジャイルマネジメントとは?Kiro Harada
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜Katsuhiro Miura
 
20120622 data conference
20120622 data conference20120622 data conference
20120622 data conferencemanagami
 
3.5.esmで出来ること
3.5.esmで出来ること3.5.esmで出来ること
3.5.esmで出来ることe-sales-support
 
業務効率をあげる便利ツールのご紹介
業務効率をあげる便利ツールのご紹介業務効率をあげる便利ツールのご紹介
業務効率をあげる便利ツールのご紹介lolipopjp
 
データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話Recruit Lifestyle Co., Ltd.
 
PDCAを実現する、アクセス解析実践方法
PDCAを実現する、アクセス解析実践方法PDCAを実現する、アクセス解析実践方法
PDCAを実現する、アクセス解析実践方法Kennosuke Yamaguchi
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介Kenji Hara
 
20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operationYasuhiro Araki, Ph.D
 
ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法Ryota Ono
 

Similaire à 第4回関東ゼロからはじめるR言語勉強会 (20)

Yahoo!検索のパフォーマンス向上策全て見せます
Yahoo!検索のパフォーマンス向上策全て見せますYahoo!検索のパフォーマンス向上策全て見せます
Yahoo!検索のパフォーマンス向上策全て見せます
 
リファクタリングで実装が○○分短縮した話
リファクタリングで実装が○○分短縮した話リファクタリングで実装が○○分短縮した話
リファクタリングで実装が○○分短縮した話
 
Gasでgoogleカレンダー 移行ツールを作った話
Gasでgoogleカレンダー 移行ツールを作った話Gasでgoogleカレンダー 移行ツールを作った話
Gasでgoogleカレンダー 移行ツールを作った話
 
ワークスタイルを変革する情報基盤 [ITpro EXPO A651]
ワークスタイルを変革する情報基盤 [ITpro EXPO A651]ワークスタイルを変革する情報基盤 [ITpro EXPO A651]
ワークスタイルを変革する情報基盤 [ITpro EXPO A651]
 
GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話
GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話
GYOMU Hackers Night タスク管理改善を追い求めたら モブプログラミングになった話
 
RayPen_製品資料_231101.pdf
RayPen_製品資料_231101.pdfRayPen_製品資料_231101.pdf
RayPen_製品資料_231101.pdf
 
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
※サンプル マーケティング目標を明確化するサイエンス【確率モデルで戦略仮説】
 
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
※サンプル マーケティング目標を明確化するサイエンス【統計モデルで効果検証】
 
Ga tracker5_ムラヤマユウスケ_slideshare
 Ga tracker5_ムラヤマユウスケ_slideshare Ga tracker5_ムラヤマユウスケ_slideshare
Ga tracker5_ムラヤマユウスケ_slideshare
 
アジャイルマネジメントとは?
アジャイルマネジメントとは?アジャイルマネジメントとは?
アジャイルマネジメントとは?
 
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
PHPアプリの品質を(ある程度)保つために出来る事 〜組織編〜
 
About Beat Communication
About Beat CommunicationAbout Beat Communication
About Beat Communication
 
20120622 data conference
20120622 data conference20120622 data conference
20120622 data conference
 
3.5.esmで出来ること
3.5.esmで出来ること3.5.esmで出来ること
3.5.esmで出来ること
 
業務効率をあげる便利ツールのご紹介
業務効率をあげる便利ツールのご紹介業務効率をあげる便利ツールのご紹介
業務効率をあげる便利ツールのご紹介
 
データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話データ分析基盤運⽤チームの 運⽤業務を改善してみた話
データ分析基盤運⽤チームの 運⽤業務を改善してみた話
 
PDCAを実現する、アクセス解析実践方法
PDCAを実現する、アクセス解析実践方法PDCAを実現する、アクセス解析実践方法
PDCAを実現する、アクセス解析実践方法
 
マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介マーケティング向け大規模ログ解析事例紹介
マーケティング向け大規模ログ解析事例紹介
 
20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation20140717 awssummit2014-cloud-operation
20140717 awssummit2014-cloud-operation
 
ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法ユーザテストと定量分析ツールの併用方法
ユーザテストと定量分析ツールの併用方法
 

Plus de Iida Keisuke

デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)
デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)
デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)Iida Keisuke
 
デバイスWeb apiコンソーシアム lt-bril
デバイスWeb apiコンソーシアム lt-brilデバイスWeb apiコンソーシアム lt-bril
デバイスWeb apiコンソーシアム lt-brilIida Keisuke
 
Linked Open Data With R
Linked Open Data With RLinked Open Data With R
Linked Open Data With RIida Keisuke
 
第3回関西ゼロから始めるR勉強会
第3回関西ゼロから始めるR勉強会第3回関西ゼロから始めるR勉強会
第3回関西ゼロから始めるR勉強会Iida Keisuke
 
関東第1回r勉強会
関東第1回r勉強会関東第1回r勉強会
関東第1回r勉強会Iida Keisuke
 
第2回関西ゼロから始めるR言語勉強会
第2回関西ゼロから始めるR言語勉強会第2回関西ゼロから始めるR言語勉強会
第2回関西ゼロから始めるR言語勉強会Iida Keisuke
 
第1回関西ゼロからはじめるR勉強会(2)
第1回関西ゼロからはじめるR勉強会(2)第1回関西ゼロからはじめるR勉強会(2)
第1回関西ゼロからはじめるR勉強会(2)Iida Keisuke
 
第1回関西ゼロからはじめるR勉強会
第1回関西ゼロからはじめるR勉強会第1回関西ゼロからはじめるR勉強会
第1回関西ゼロからはじめるR勉強会Iida Keisuke
 

Plus de Iida Keisuke (8)

デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)
デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)
デバイスWeb apiコンソーシアム 第四回資料(RemoteRelay with Thermal camera)
 
デバイスWeb apiコンソーシアム lt-bril
デバイスWeb apiコンソーシアム lt-brilデバイスWeb apiコンソーシアム lt-bril
デバイスWeb apiコンソーシアム lt-bril
 
Linked Open Data With R
Linked Open Data With RLinked Open Data With R
Linked Open Data With R
 
第3回関西ゼロから始めるR勉強会
第3回関西ゼロから始めるR勉強会第3回関西ゼロから始めるR勉強会
第3回関西ゼロから始めるR勉強会
 
関東第1回r勉強会
関東第1回r勉強会関東第1回r勉強会
関東第1回r勉強会
 
第2回関西ゼロから始めるR言語勉強会
第2回関西ゼロから始めるR言語勉強会第2回関西ゼロから始めるR言語勉強会
第2回関西ゼロから始めるR言語勉強会
 
第1回関西ゼロからはじめるR勉強会(2)
第1回関西ゼロからはじめるR勉強会(2)第1回関西ゼロからはじめるR勉強会(2)
第1回関西ゼロからはじめるR勉強会(2)
 
第1回関西ゼロからはじめるR勉強会
第1回関西ゼロからはじめるR勉強会第1回関西ゼロからはじめるR勉強会
第1回関西ゼロからはじめるR勉強会
 

第4回関東ゼロからはじめるR言語勉強会