Suche senden
Hochladen
20121215 DevLOVE2012 Mahout on AWS
•
3 gefällt mir
•
1,798 views
都元ダイスケ Miyamoto
Folgen
Technologie
Melden
Teilen
Melden
Teilen
1 von 36
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
性能測定道 実践編
性能測定道 実践編
Yuto Hayamizu
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
Naoyuki Yamada
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
Toshi Harada
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
BrainPad Inc.
Modern stream processing by Spark Structured Streaming
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
My sqlで2億件のシリアルデータと格闘した話
My sqlで2億件のシリアルデータと格闘した話
saiken3110
Azure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPS
nishioka1
Empfohlen
性能測定道 実践編
性能測定道 実践編
Yuto Hayamizu
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews, Inc.
ElasticSearch勉強会 第6回
ElasticSearch勉強会 第6回
Naoyuki Yamada
Kof2016 postgresql-9.6
Kof2016 postgresql-9.6
Toshi Harada
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
DeltaCubeにおけるユニークユーザー集計高速化(実践編)
BrainPad Inc.
Modern stream processing by Spark Structured Streaming
Modern stream processing by Spark Structured Streaming
Sotaro Kimura
My sqlで2億件のシリアルデータと格闘した話
My sqlで2億件のシリアルデータと格闘した話
saiken3110
Azure SQLデータベース最新動向&TIPS
Azure SQLデータベース最新動向&TIPS
nishioka1
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
Spark Structured Streaming with Kafka
Spark Structured Streaming with Kafka
Sotaro Kimura
現場的!AWSとオンプレの違い(赤べこバージョン)
現場的!AWSとオンプレの違い(赤べこバージョン)
真吾 吉田
類義語検索と類義語ハイライト
類義語検索と類義語ハイライト
Shinichiro Abe
Apache Solr 入門
Apache Solr 入門
順平 西本
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
Shunsuke Kozawa
Elasticsearchインデクシングのパフォーマンスを測ってみた
Elasticsearchインデクシングのパフォーマンスを測ってみた
Ryoji Kurosawa
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Yoichi Kawasaki
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例
Masakazu Matsushita
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
Manabu Shinsaka
Terraforming
Terraforming
Tomoaki Yahagi
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Yasuhiro Matsuo
solr勉強会資料
solr勉強会資料
Atsushi Takayasu
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
KoteiIto
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
Rds徹底入門
Rds徹底入門
Junpei Nakada
Aurora
Aurora
maruyama097
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Sotaro Kimura
リアルタイム処理エンジンGearpumpの紹介
リアルタイム処理エンジンGearpumpの紹介
Sotaro Kimura
ISUCON夏期講習2015_2 実践編
ISUCON夏期講習2015_2 実践編
SATOSHI TAGOMORI
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
陽平 山口
Weitere ähnliche Inhalte
Was ist angesagt?
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Hadoop / Spark Conference Japan
Spark Structured Streaming with Kafka
Spark Structured Streaming with Kafka
Sotaro Kimura
現場的!AWSとオンプレの違い(赤べこバージョン)
現場的!AWSとオンプレの違い(赤べこバージョン)
真吾 吉田
類義語検索と類義語ハイライト
類義語検索と類義語ハイライト
Shinichiro Abe
Apache Solr 入門
Apache Solr 入門
順平 西本
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
Shunsuke Kozawa
Elasticsearchインデクシングのパフォーマンスを測ってみた
Elasticsearchインデクシングのパフォーマンスを測ってみた
Ryoji Kurosawa
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Yoichi Kawasaki
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例
Masakazu Matsushita
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
Manabu Shinsaka
Terraforming
Terraforming
Tomoaki Yahagi
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Yasuhiro Matsuo
solr勉強会資料
solr勉強会資料
Atsushi Takayasu
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
KoteiIto
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
de:code 2017
Rds徹底入門
Rds徹底入門
Junpei Nakada
Aurora
Aurora
maruyama097
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Sotaro Kimura
リアルタイム処理エンジンGearpumpの紹介
リアルタイム処理エンジンGearpumpの紹介
Sotaro Kimura
ISUCON夏期講習2015_2 実践編
ISUCON夏期講習2015_2 実践編
SATOSHI TAGOMORI
Was ist angesagt?
(20)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
MapReduce/Spark/Tezのフェアな性能比較に向けて (Cloudera World Tokyo 2014 LT講演)
Spark Structured Streaming with Kafka
Spark Structured Streaming with Kafka
現場的!AWSとオンプレの違い(赤べこバージョン)
現場的!AWSとオンプレの違い(赤べこバージョン)
類義語検索と類義語ハイライト
類義語検索と類義語ハイライト
Apache Solr 入門
Apache Solr 入門
はてなブックマークに基づく関連記事レコメンドエンジンの開発
はてなブックマークに基づく関連記事レコメンドエンジンの開発
Elasticsearchインデクシングのパフォーマンスを測ってみた
Elasticsearchインデクシングのパフォーマンスを測ってみた
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
Azure Search 言語処理関連機能 〜 アナライザー、検索クエリー、辞書、& ランキング, etc
ソーシャルゲームにおけるAWS/MongoDB利用事例
ソーシャルゲームにおけるAWS/MongoDB利用事例
Amazon RDS (MySQL) 入門
Amazon RDS (MySQL) 入門
Terraforming
Terraforming
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
Amazon RDS for PostgreSQL ( JPUG 2014夏セミナー) #jpug
solr勉強会資料
solr勉強会資料
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
Aws×phpでの 高信頼かつハイパフォーマンスなシステム
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
[DI08] その情報うまく取り出せていますか? ~ 意外と簡単、Azure Search で短時間で検索精度と利便性を向上させるための方法
Rds徹底入門
Rds徹底入門
Aurora
Aurora
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
Spark Structured StreamingでKafkaクラスタのデータをお手軽活用
リアルタイム処理エンジンGearpumpの紹介
リアルタイム処理エンジンGearpumpの紹介
ISUCON夏期講習2015_2 実践編
ISUCON夏期講習2015_2 実践編
Ähnlich wie 20121215 DevLOVE2012 Mahout on AWS
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
KinebuchiTomo
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
陽平 山口
Jubatusでマルウェア分類
Jubatusでマルウェア分類
Shuzo Kashihara
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
IIJ
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!
Hiroshi Hayakawa
Groovyコンファレンス
Groovyコンファレンス
Shinichiro Takezaki
mxnetで頑張る深層学習
mxnetで頑張る深層学習
Takashi Kitano
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
Takashi Someda
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
Takahiro Iwase
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MITSUNARI Shigeo
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Kentaro Yoshida
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
Hideyuki Takeuchi
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
Yoshiyuki Asaba
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
Takahiro Iwase
Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版
Daiyu Hatakeyama
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
Daiyu Hatakeyama
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
Tomoharu ASAMI
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
Ähnlich wie 20121215 DevLOVE2012 Mahout on AWS
(20)
Asakusa バッチの運用を支える技術
Asakusa バッチの運用を支える技術
JAWSDAYS 2014 ACEに聞け! EMR編
JAWSDAYS 2014 ACEに聞け! EMR編
Jubatusでマルウェア分類
Jubatusでマルウェア分類
使ってみた!ioMemoryで実現する噂のAtomic write!
使ってみた!ioMemoryで実現する噂のAtomic write!
Oracleがnode.jsをやり始めたというのだが!
Oracleがnode.jsをやり始めたというのだが!
Groovyコンファレンス
Groovyコンファレンス
mxnetで頑張る深層学習
mxnetで頑張る深層学習
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
20110519 okuyama tokyo_linuxstudy
20110519 okuyama tokyo_linuxstudy
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
高速な暗号実装のためにしてきたこと
高速な暗号実装のためにしてきたこと
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
MySQLと組み合わせて始める全文検索プロダクト"elasticsearch"
Web時代の大富豪的プログラミングのススメ
Web時代の大富豪的プログラミングのススメ
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
位置情報を使ったサービス「スマポ」をPostgreSQLで作ってみた db tech showcase 2013 Tokyo
20110517 okuyama ソーシャルメディアが育てた技術勉強会
20110517 okuyama ソーシャルメディアが育てた技術勉強会
Azure Machine Learning Services 概要 - 2019年2月版
Azure Machine Learning Services 概要 - 2019年2月版
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
設計/ドメイン設計(5) 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第27回】
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Mehr von 都元ダイスケ Miyamoto
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
都元ダイスケ Miyamoto
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
都元ダイスケ Miyamoto
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
都元ダイスケ Miyamoto
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
都元ダイスケ Miyamoto
AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論
都元ダイスケ Miyamoto
20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案
都元ダイスケ Miyamoto
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
都元ダイスケ Miyamoto
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016
都元ダイスケ Miyamoto
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
都元ダイスケ Miyamoto
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
都元ダイスケ Miyamoto
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
都元ダイスケ Miyamoto
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
都元ダイスケ Miyamoto
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
都元ダイスケ Miyamoto
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
都元ダイスケ Miyamoto
20130516 cm課外授業8-aws
20130516 cm課外授業8-aws
都元ダイスケ Miyamoto
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
都元ダイスケ Miyamoto
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
都元ダイスケ Miyamoto
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
都元ダイスケ Miyamoto
DevLOVE Beautiful Development - 第一幕 陽の巻
DevLOVE Beautiful Development - 第一幕 陽の巻
都元ダイスケ Miyamoto
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
都元ダイスケ Miyamoto
Mehr von 都元ダイスケ Miyamoto
(20)
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
アプリケーション動作ログ、 ERRORで出すか? WARNで出すか? #cmdevio2019
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
クラスメソッドにおける Web API エンジニアリングの基本的な考え方と標準定義 - Developers.IO 2018 (2018-10-05)
AWSクラウドデータストレージ総論
AWSクラウドデータストレージ総論
20170312 F.K様向け ライフパートナーM.M様のご提案
20170312 F.K様向け ライフパートナーM.M様のご提案
Spring Day 2016 - Web API アクセス制御の最適解
Spring Day 2016 - Web API アクセス制御の最適解
マイクロWebアプリケーション - Developers.IO 2016
マイクロWebアプリケーション - Developers.IO 2016
Single Command Deployのための gradle-aws-plugin講座
Single Command Deployのための gradle-aws-plugin講座
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
20150908 ”時間の流れ” という無限リストを扱うAWS Lambda
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
体で覚えるSQS! DEVIO-MTUP11-TOKYO-007
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
AWSにおけるバッチ処理の ベストプラクティス - Developers.IO Meetup 05
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20140315 JAWS DAYS 2014 ACEに聞け! CloudFormation編
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20131210 CM re:Growth - Infrastructure as Code から Full Reproducible Infrastru...
20130516 cm課外授業8-aws
20130516 cm課外授業8-aws
20121206 VOYAGE LT - 名前重要って言うけどさ
20121206 VOYAGE LT - 名前重要って言うけどさ
20120830 DBリファクタリング読書会第三回
20120830 DBリファクタリング読書会第三回
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
java-ja 第1回 チキチキ『( ゜ェ゜)・;'.、ゴフッ』 - Strategy
DevLOVE Beautiful Development - 第一幕 陽の巻
DevLOVE Beautiful Development - 第一幕 陽の巻
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
DevelopersSummit2011 【17-E-1】 DBも変化せよ - Jiemamy
20121215 DevLOVE2012 Mahout on AWS
1.
黄色いゾウ使いの パレード ∼Mahout on AWS∼ 都元ダイスケ 2012-12-15
@DevLOVE2012
2.
自己紹介 • 都元ダイスケ (@daisuke_m) •
Java屋です • java-jaから来ま(ry Java オブジェクト指向 Eclipse 恭ライセンス 薬 Mahout Spring XML Jiemamy DDD HadoopOSGi Haskell Scala Maven Wicket AWS 酒
3.
works • 日経ソフトウエア • Java入門記事 •
Eclipse記事
4.
Mahoutインアクション
5.
Mahoutとは • Javaで実装された • スケーラブルな •
オープンソースの • 機械学習ライブラリ
6.
代表的な機械学習 • レコメンド(推薦) • クラスタリング •
クラシファイイング(分類) • その他色々ある
7.
アプリと機械学習 • CRUD (create,
read, update, delete) • FILTER (where) • AGGREGATE (count, sum, ave, max, min...) • SORT (order by) • INTELLIGENCE (machine learning)
8.
スケーラブル • 機械学習の精度は、データ量依存 • データ量に応じ、計算量が指数的に増加 •
大規模な計算リソースが必要 • Hadoop (MapReduce) • AWS Elastic MapReduce
9.
レコメンド 1,101,5.0 1,102,3.0 1,103,2.5 2,101,2.0 2,102,2.5 2,103,5.0 2,104,2.0 ... 1128 [ 1179:5.0, 3160:4.6582785, ..., 797:4.0637455 ] 1136[ 33493:4.8670673, 6934:4.86497,
..., 230:4.335819 ] ... recommendation 【input】 【output】
10.
非分散 レコメンド
11.
入力データ (intro.csv) 1,101,5.0 1,102,3.0 1,103,2.5 2,101,2.0 2,102,2.5 2,103,5.0 2,104,2.0 3,101,2.5 3,104,4.0 3,105,4.5 3,107,5.0 4,101,5.0 4,103,3.0 4,104,4.5 4,106,4.0 5,101,4.0 5,102,3.0 5,103,2.0 5,104,4.0 5,105,3.5 5,106,4.0
12.
簡単なレコメンド import java.io.File; import java.util.List; import
org.apache.mahout.cf.taste.impl.model.file.FileDataModel; import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; import org.apache.mahout.cf.taste.recommender.*; import org.apache.mahout.cf.taste.similarity.UserSimilarity; DataModel model = new FileDataModel(new File("intro.csv")); UserSimilarity similarity = new PearsonCorrelationSimilarity(model); UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model); Recommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity); List<RecommendedItem> recommendations = recommender.recommend(1, 2); for (RecommendedItem recommendation : recommendations) { System.out.println(recommendation); }
13.
結果! RecommendedItem[item:104, value:4.257081] RecommendedItem[item:106, value:4.0]
14.
レコメンドの理屈 • 1∼5の「ユーザ」 • 101∼107の「アイテム」 •
そしてスコア
15.
16.
• 1さんと5さん似てる • 1さんと4さんも 何と無く似てる •
2さんとは逆の好み? • 3さんとの関連は 見えない
17.
• 1 vs
5 = 0.94 • 1 vs 4 = 0.99 • 1 vs 2 = -0.76 • 1 vs 3 = NaN • 1 vs 1 = 1.0
18.
相関係数 • 1 vs
1 = 1.0 • 1 vs 2 = -0.7642652566278799 • 1 vs 3 = NaN • 1 vs 4 = 0.9999999999999998 • 1 vs 5 = 0.944911182523068 それぞれの人が1さんの予想評点に与える影響度
19.
http://ja.wikipedia.org/wiki/相関係数
20.
加重平均 0.94 ×0.99 × 0.94
× 0.94 ×0.99 × )/ 1.93 )/ 0.94 )/ 1.93 4.25 =( 3.50 =( 4.00 =( この情報は 相関係数が低い またはNaNなので もうアテにしない
21.
結果! RecommendedItem[item:104, value:4.257081] RecommendedItem[item:106, value:4.0] (再掲)
22.
分散 レコメンド
23.
分散レコメンド 1,101,5.0 1,102,3.0 1,103,2.5 2,101,2.0 2,102,2.5 2,103,5.0 2,104,2.0 ... 1128 [ 1179:5.0, 3160:4.6582785, ..., 797:4.0637455 ] 1136[ 33493:4.8670673, 6934:4.86497,
..., 230:4.335819 ] ... recommendation 【input】 【output】 S3 S3EMR
24.
http://www.grouplens.org/node/73
25.
• 1万アイテム • 7万2千ユーザ •
1千万評価 MovieLens 10M 実は これでも まだ小規模 だと思う
26.
データの 加工
27.
S3入力の準備 •バケットを作る mahoutinaction-jp •ファイルを2つアップロード •mahout/mahout-core-0.7-job.jar •input10m/mahout-10m-ratings.dat
28.
upload by code import
java.io.File; import com.amazonaws.auth.*; import com.amazonaws.services.s3.*; import com.amazonaws.services.s3.model.Region; AWSCredentials cred = new BasicAWSCredentials( "AccessKeyID", "SecretAccessKey"); AmazonS3 s3 = new AmazonS3Client(cred); s3.createBucket("mahoutinaction-jp", Region.AP_Tokyo); s3.putObject( "mahoutinaction-jp", "mahout/mahout-core-0.7-job.jar", new File("mahout-core-0.7-job.jar")); s3.putObject( "mahoutinaction-jp", "input10m/mahout-10m-ratings.dat", new File("mahout-10m-ratings.dat"));
29.
EMRの起動 • JAR Location mahoutinaction-jp/mahout/ mahout-core-0.7-job.jar •
JAR Arguments org.apache.mahout.cf.taste.hadoop.item.RecommenderJob -Dmapred.map.tasks=40 -Dmapred.reduce.tasks=19 -Dmapred.input.dir=s3n://mahoutinaction-jp/input10m -Dmapred.output.dir=s3n://mahoutinaction-jp/output10m --numRecommendations 100 --similarityClassname SIMILARITY_PEARSON_CORRELATION
30.
compute by code import
com.amazonaws.auth.*; import com.amazonaws.services.elasticmapreduce.*; import com.amazonaws.services.elasticmapreduce.model.*; import com.amazonaws.services.elasticmapreduce.util.*; AWSCredentials cred = new BasicAWSCredentials( "AccessKeyID", "SecretAccessKey"); AmazonElasticMapReduce emr = new AmazonElasticMapReduceClient(cred); emr.setEndpoint("elasticmapreduce.ap-northeast-1.amazonaws.com"); RunJobFlowRequest runRequest = new RunJobFlowRequest() .withName("mahout-10m") .withSteps( ... ) // detailed on next page .withInstances( ... ) // detailed on next page .withAmiVersion("2.1.4") .withLogUri("s3n://mahoutinaction-jp/log"); RunJobFlowResult runResult = emr.runJobFlow(runRequest);
31.
RunJobFlowRequest runRequest =
new RunJobFlowRequest() .withName("mahout-10m") .withSteps( new StepConfig() .withName("Setup Hadoop Debugging") .withActionOnFailure(ActionOnFailure.TERMINATE_JOB_FLOW) .withHadoopJarStep( new StepFactory("ap-northeast-1.elasticmapreduce") .newEnableDebuggingStep()), new StepConfig() .withName("Custom Jar") .withActionOnFailure(ActionOnFailure.TERMINATE_JOB_FLOW) .withHadoopJarStep(new HadoopJarStepConfig() .withJar("s3n://mahoutinaction-jp/mahout/mahout-core-0.7-job.jar") .withMainClass("org.apache.mahout.cf.taste.hadoop.item.RecommenderJob") .withArgs(Arrays.asList( "-Dmapred.map.tasks=40", "-Dmapred.reduce.tasks=19", "-Dmapred.input.dir=s3n://mahoutinaction-jp/input10m", "-Dmapred.output.dir=s3n://mahoutinaction-jp/output10m", "--numRecommendations", "100", "--similarityClassname", "SIMILARITY_PEARSON_CORRELATION")))) .withInstances(new JobFlowInstancesConfig() .withPlacement(new PlacementType("ap-northeast-1a")) .withInstanceCount(20) .withMasterInstanceType("m1.small") .withSlaveInstanceType("m1.small") .withKeepJobFlowAliveWhenNoSteps(false) .withHadoopVersion("0.20.205")) .withAmiVersion("2.1.4") .withLogUri("s3n://mahoutinaction-jp/logs"); 後でごゆっくりどうぞ
32.
watch by code AmazonElasticMapReduce
emr = ...; RunJobFlowResult runResult = ...; String jobFlowId = runResult.getJobFlowId(); DescribeJobFlowsRequest describeRequest = new DescribeJobFlowsRequest().withJobFlowIds(jobFlowId); DescribeJobFlowsResult describeResult = emr.describeJobFlows(describeRequest); JobFlowDetail detail = describeResult.getJobFlows().get(0); JobFlowExecutionStatusDetail statusDetail = detail.getExecutionStatusDetail(); JobFlowExecutionState state = JobFlowExecutionState.fromValue(statusDetail.getState()); // COMPLETED, FAILED, TERMINATED, RUNNING, SHUTTING_DOWN, // STARTING, WAITING, BOOTSTRAPPING
33.
結果を取り出す 指定したロケーションにファイルが いくつか生成されている。
34.
35.
download by code import
java.io.InputStream; import java.util.List; import com.amazonaws.auth.*; import com.amazonaws.services.s3.*; import com.amazonaws.services.s3.model.*; AWSCredentials cred = new BasicAWSCredentials( "AccessKeyID", "SecretAccessKey"); AmazonS3 s3 = new AmazonS3Client(cred); ObjectListing listing = s3.listObjects( "mahoutinaction-jp", "output10m"); List<S3ObjectSummary> summaries = listing.getObjectSummaries(); for (S3ObjectSummary summary : summaries) { System.out.println(summary.getKey()); if (summary.getKey().endsWith("/_SUCCESS")) { continue; } S3Object obj = s3.getObject("mahoutinaction-jp", summary.getKey()); InputStream in = obj.getObjectContent(); // ... }
36.
Summary • 機械学習 は、ちょっとインテリな機能 •
分散・非分散アルゴリズム • 非分散ならオンラインで • 分散ならAWSのEMRで • 本スライドはこの後すぐにUP予定。 Twitterで @daisuke_m をチェック!
Jetzt herunterladen