Noto(52)38この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。Zeppelinというエントリーがあったので、そちらを実際に試してみたレポートになります。内容としてはMovieLensのデータを使ってレコメンデーションエンジンを作るというものです。Workshopというものがあったようで、そちらのMLlibのハンズオンをEMR上でZeppelinを使ってやってみるというものでした。bootcampをベースに日本語化したサイトがありました。MLlib(機械学習)になります。詳細に説明されていましたので紹介しておきます。用語の説明MovieLensMovieLensは映画のレコメンデーションシステムで運営母体であるGroupLensによってレーティング情報が公開されています。レコメンデーションシステムの題材としてよく利用されているようで、私が以前記述したEMR上でMahoutを使ってレコメンデーションというエントリーでもMovieLensを利用していました。Sparkは大量のデータを高速に処理するための汎用エンジンです。MLlibはそのSparkに含まれる機械学習のライブラリになります。協調フィルタリング協調フィルタリングは推薦システムに一般的に利用される手法です。Squares、ALS)を利用しています。Deckを見ると雰囲気がつかめるかと思います。Notebook)と同じようなWebアプリケーションです。画面上でSparkのコードを記述すると実行することができ、その実行結果もまとめて残しておくことができます。処理を書いてその場で実行できるという意味では対話型シェルとも言えますし、その処理結果を残しておけるという意味ではドキュメントとも言えるものです。Reduceは大量のデータを処理するためのWebサービスです。Hadoopクラスタを提供します。SparkやZeppelinはEMRによってHadoopクラスタ上に自動的にセットアップすることが可能です。実際に試す際の要点は以下の通りです。東京リージョンで試して動作することを確認しています。MovieLensのデータは予めS3にアップロードしておくEMRでSparkとZeppelinも同時にセットアップするようにしてHadoopクラスタを起動するZeppelinにはSSHトンネルを利用してアクセスするMovieLensのデータは予めS3にアップロードしておくSparkからS3上にあるデータを使ってレコメンデーションエンジンのモデルを作成することになるため、まずはGroupLensのサイトからMovieLensのデータをダウンロードしてS3にアップロードして下さい。MovieLensはデータサイズに応じて何種類か用意されていますので好みのサイズを利用して下さい。私は中規模ぐらいのml-10m.zipを利用しました。ダウンロードしたらマネジメントコンソールなどを利用してS3にファイルをアップロードして下さい。movies.datとratings.datの2ファイルをアップロードすることになります。YOUR_BUCKET_NAME/movieLens/ratings.datEMRでSparkとZeppelinも同時にセットアップするようにしてHadoopクラスタを起動するEMRを使ってHadoopクラスタを構築します。cluster]ボタンをクリックして下さい。options]をクリックして下さい。設定値は以下の通りです。記述していないものはデフォルト値を利用しています。cluster]をクリックしてクラスターを構築して下さい。Sparkを追加しPigとHueを削除。settings]をクリックしてテキストエリアに入力する。任意ZeppelinにはSSHトンネルを利用してアクセスするEMRによって構築されるHadoopクラスタはAWS上に存在するのでSSHトンネルを作成してZeppelinにアクセスします。ローカルのポート番号は任意です。ここでは8157としています。hadoop@MASTER_PUBLIC_DNSMASTER_PUBLIC_DNSはマネジメントコンソール上で確認できます。ec2-XXX-XXXX-XXX-XXX.ap-northeast-1.compute.amazonaws.comの箇所です。SSHトンネルができたらブラウザのURLにhttp://localhost:8157/と入力して下さい。Zeppelinのトップページが表示されるはずです。レコメンデーションエンジン作成Zeppelinにも接続できたので、実際にレコメンデーションエンジンを作成したいと思います。これからソースコードを示しますが、変更する箇所はS3のバケット名であるYOUR_BUCKET_NAMEの箇所だけです。合計で3回YOUR_BUCKET_NAMEが登場します。最初のS3からのデータのロードと最後のモデルをS3に保存する箇所です。該当するソースコードの解説箇所で改めて変更が必要なことを記述しています。Notebookの作成レコメンデーションエンジン用のNotebookを作ります。note]をクリックして下さい。Name]は任意です。Recommenderとして下さい。作成したNotebookをクリックして下さい。レコメンデーションエンジン用のNotebookの画面が表示されます。利用するライブラリのimportまずは今回のレコメンデーションエンジンに必要なライブラリをimportします。テキストエリアに以下を入力して右上の実行ボタン[▷]をクリックして下さい。MatrixFactorizationModel}S3からデータのロードS3からmovies.datとratings.datのデータをロードします。最後にprintln関数で件数を出力することでデータが正しくロードされていることを確認します。movieLensHomeDir定数のYOUR_BUCKET_NAMEの箇所は自身の環境に合わせて変更して下さい。movies.")学習、評価、テスト用データの作成レーティング情報を以下のようにタイムスタンプの下1桁を使って分割します。Error)を計算する関数computeRmseを定義しておきます。ALS.trainメソッドで学習データを使ってモデルを作成します。lambdaについてはそれぞれ2種類用意して、計8通りのパターンについてモデルを作成し、評価データを使って一番RMSEが小さいモデルを採用するようにしています。8回モデルを作成するため数分かかります。}}モデルのテストテストデータのRMSEを確認します。学習データと評価データの単なる平均のレーティングと比べると23%改善していました。"%.")モデルを使って実際にレコメンデーションするモデルを使って実際にレコメンデーションしてみます。100のユーザーに対するレコメンデーションを行います。1}ジャンルをComedyに限定したレコメンデーション先程は全映画からTop10の映画をレコメンデーションしましたが、今度はジャンルをComedyに限定してTop5のレコメンデーションを行います。今回作成したレコメンデーションのモデルをS3に保存します。することで後で再利用することが出来ます。YOUR_BUCKET_NAMEの箇所は自身の環境に合わせて変更して下さい。"s3n://YOUR_BUCKET_NAME/movieLens/model/recommendation")このコードを実行すると実際にS3にモデルが保存されていることを確認できます。まとめいかがだったでしょうか。Zeppelinを利用することでローカルのブラウザでAWS上のSparkを操作できるのはかなり便利かと思います。MLlibの利用方法についても雰囲気を掴んで頂けたのではないかと思います。簡単に試せますので、ぜひ一度お試し下さい。522,789大規模データ処理とか機械学習周りに興味があります。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。2020年03月11日3【3/11(水)リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。kaji900AWSを全く知らない状態で入社して5年が経過、中途採用のAWSエンジニアの育成リーダーを1年間担当しています。そんな中で教える機会が増えました。自分がAWSに関するスキルアップために実践したことについてまとめてみました。どなたかのお役に立てれれば光栄です。濱田孝治437re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。泰雨132皆さん、こんにちは。コンサル部のテウです。2020年もあっという間に2ヶ月が経ちました。今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。入門できる方法をご紹介させて頂きたいと思います。本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。kaji900AWSを全く知らない状態で入社して5年が経過、中途採用のAWSエンジニアの育成リーダーを1年間担当しています。そんな中で教える機会が増えました。自分がAWSに関するスキルアップために実践したことについてまとめてみました。どなたかのお役に立てれれば光栄です。濱田孝治437re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。夏目祐樹414こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。