Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RecoChoku tech night #09 -reinvent2018報告会-

recochoku
December 12, 2018

RecoChoku tech night #09 -reinvent2018報告会-

2018年12月12日のRecoChoku tech night #09での登壇内容です。

recochoku

December 12, 2018
Tweet

More Decks by recochoku

Other Decks in Technology

Transcript

  1. 自己紹介 小林 真弓(コバヤシ マユミ) • 2017年 新卒入社(2年目) • 事業システム部 システム・アーキテクトグループ

    • 社内ツールの開発(2017/10~) • 新規プロジェクトのWeb開発に携わりはじめています • AWS初心者 • サーバレスでの開発はしたことないですが、今回のre:Inventをキッカケに興味を 持ち始め、色々調べてみました
  2. 今回のre:Inventで・・・ 触ってみた - curlコマンドを叩いてみる P-1174:~ ma-kobayashi$ curl -v http://kbys-lambda-alb-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com *

    Rebuilt URL to: http://kbys-lambda-alb-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com/ * Trying xx.xxx.xxx.xxx…. * TCP_NODELAY set * Connected to kbys-lambda-alb-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com (xx.xxx.xxx.xxx) port 80 (#0) > GET / HTTP/1.1 > Host: kbys-lambda-alb-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com > User-Agent: curl/7.54.0 > Accept: */* > < HTTP/1.1 502 Bad Gateway < Server: awselb/2.0 < Date: Mon, 10 Dec 2018 07:23:54 GMT < Content-Type: text/html < Content-Length: 138 < Connection: keep-alive < <html> <head><title>502 Bad Gateway</title></head> <body bgcolor="white"> <center><h1>502 Bad Gateway</h1></center> </body> </html> * Connection #0 to host kbys-lambda-alb-xxxxxxxxxx.ap-northeast-1.elb.amazonaws.com left intact
  3. 触ってみた - curlコマンドを叩いてみる The response from the Lambda function is

    not in the expected format (レスポンスの型が違います)
  4. 触ってみた Requests can include HTTP GET, HEAD, PUT, POST, DELETE,

    PATCH and OPTIONS methods, and request and response bodies can be text or binary. The Application Load Balancer that you’ve set up with AWS Lambda takes care of translating an HTTP/S request into an AWS Lambda-compatible event. 要求には、HTTP GET、HEAD、PUT、POST、DELETE、PATCH、OPTIONSメソッドが 含まれ、要求および応答の本文にはテキストまたはバイナリを使用できます。 AWS Lambdaで設定したApplication Load Balancerは、HTTP(S)リクエストをAWS Lambda イベントに変換します。 Lambda functions as targets for Application Load Balancers https://aws.amazon.com/jp/blogs/news/lambda-functions-as-targets-for-application-load-balancers/
  5. 今回のre:Inventで・・・ 触ってみた - Lambda関数の修正 def lambda_handler(event, context): response = {

    "statusCode": 200, "isBase64Encoded": False, "headers": { "Content-Type": "text/html; charset=utf-8" } } response['body'] = """ <html> <head> <meta charset="UTF-8"> <title>kobayashi test</title> </head> <body> <p>今日はre:Invent報告会です</p> </body> </html>""" return response
  6. 自己紹介 • 名前 • 海津 純平(カイヅ ジュンペイ) • 居住地 •

    新潟(出生〜高校) • 宮城(大学) • 東京(現在) • 好きな言語 • Python • 好きなAWSのサービス • AWS CloudFormation
  7. AWS SAM 1 AWSTemplateFormatVersion: '2010-09-09' 2 Transform: AWS::Serverless-2016-10-31 3 Resources:

    4 HelloWorldFunction: 5 Type: AWS::Serverless::Function 6 Properties: 7 CodeUri: hello_world/ 8 Handler: app.lambda_handler 9 Runtime: python3.6 10 Events: 11 HelloWorld: 12 Type: Api 13 Properties: 14 Path: /hello 15 Method: get AWS CloudFormation のサーバーレス拡張
  8. まとめ • PyCharm内だけでサーバーレスアプリケーション開発が可能 • ローカル実行 • リージョンと認証情報の指定 • デプロイ •

    リソース参照 • リモート実行 • 動作確認のためにデプロイする必要がない • 全員環境を揃えて開発をすると効率良いかも
  9. パーソナライズレコメンドを行う場合の手順 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3

    レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり 購入履歴など
  10. パーソナライズレコメンドを行う場合の手順 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) レコメンドリスト1 レコメンドリスト2 レコメンドリスト3

    1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3 購入履歴など
  11. パーソナライズレコメンドを行う場合の手順 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) レコメンドリスト1 レコメンドリスト2 レコメンドリスト3

    1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3 購入履歴など Amazon Personalizeとは パーソナライズを容易にする機械学習サービス。
  12. 用語 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3

    レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり 購入履歴など
  13. 用語 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3

    レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり レシピ レシピ レシピ 購入履歴など
  14. 用語 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3

    レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり レシピ レシピ レシピ ソリューション ソリューション ソリューション 購入履歴など
  15. 用語 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2 学習アルゴリズム3

    レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり レシピ レシピ レシピ ソリューション ソリューション ソリューション 購入履歴など キャンペーン
  16. 1. APIを叩くだけで、機械学習が可能である。 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2

    学習アルゴリズム3 レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり 購入履歴など
  17. 1. APIを叩くだけで、機械学習が可能である。 モデル1 モデル2 モデル3 評価(0.60) 評価(0.87) 評価(0.40) 学習アルゴリズム1 学習アルゴリズム2

    学習アルゴリズム3 レコメンドリスト1 レコメンドリスト2 レコメンドリスト3 1. メガネ 2. 蛍光ペン 3. しおり 1. しおり 2. 本1 3. 蛍光ペン 1. 防水ケース 2. メガネ 3. しおり レシピ レシピ レシピ ソリューション ソリューション API API API API ソリューション 購入履歴など API キャンペーン
  18. 1. APIを叩くだけで、機械学習が可能である。(一部) Create Delete Describe Get List Retrain Update Algorithm

    ◦ ◦ ◦ ◦ Campaign ◦ ◦ ◦ ◦ ◦ CampaignUpdate ◦ Dataset ◦ ◦ ◦ ◦ ◦ DatasetGroup ◦ ◦ ◦ ◦ DatasetImportJob ◦ ◦ ◦ ◦ ◦ DatasetImportJobRun ◦ ◦ EventTracker ◦ ◦ ◦ ◦ FeatureExportJob ◦ ◦ ◦ FeatureTransformation ◦ ◦ ◦ ◦ Recipe ◦ ◦ ◦ ◦ ◦ Schema ◦ ◦ ◦ ◦ Solution ◦ ◦ ◦ ◦ ◦ ◦ SolutionVersion ◦ ◦ Metrics ◦
  19. 2. 機械学習をやったことない人でも使える Deep-FM Recipe Matrix factorizationに基づくレシピ FFNN Recipe feed-forward neural

    network (FFNN) に基づくレシピ HRNN Recipe ユーザ行動の変化をモデルする階層型ニューラルネットワークに基づくレシピ Popularity-Baseline Recipe データセットのアイテムの人気をカウントするアルゴリズムのレシピ SIMS Recipe 商品間の類似度を計算するアルゴリズムのレシピ + 自分で作成したレシピ
  20. 2. 機械学習をやったことない人でも使える Deep-FM Recipe Matrix factorizationに基づくレシピ FFNN Recipe feed-forward neural

    network (FFNN) に基づくレシピ HRNN Recipe ユーザ行動の変化をモデルする階層型ニューラルネットワークに基づくレシピ Popularity-Baseline Recipe データセットのアイテムの人気をカウントするアルゴリズムのレシピ SIMS Recipe 商品間の類似度を計算するアルゴリズムのレシピ + 自分で作成したレシピ
  21. Deep-FM Recipe Matrix factorizationに基づくレシピ FFNN Recipe feed-forward neural network (FFNN)

    に基づくレシピ HRNN Recipe ユーザ行動の変化をモデルする階層型ニューラルネットワークに基づくレシピ Popularity-Baseline Recipe データセットのアイテムの人気をカウントするアルゴリズムのレシピ SIMS Recipe 商品間の類似度を計算するアルゴリズムのレシピ + 自分で作成したレシピ Amazon Personalizeがレシピを勝手に選んでくれる機能も! 2. 機械学習をやったことない人でも使える
  22. 2. 機械学習をやったことない人でも使える Deep-FM Recipe Matrix factorizationに基づくレシピ FFNN Recipe feed-forward neural

    network (FFNN) に基づくレシピ HRNN Recipe ユーザ行動の変化をモデルする階層型ニューラルネットワークに基づくレシピ Popularity-Baseline Recipe データセットのアイテムの人気をカウントするアルゴリズムのレシピ SIMS Recipe 商品間の類似度を計算するアルゴリズムのレシピ + 自分で作成したレシピ
  23. 2. 機械学習をやったことない人でも使える Deep-FM Recipe Matrix factorizationに基づくレシピ FFNN Recipe feed-forward neural

    network (FFNN) に基づくレシピ HRNN Recipe ユーザ行動の変化をモデルする階層型ニューラルネットワークに基づくレシピ Popularity-Baseline Recipe データセットのアイテムの人気をカウントするアルゴリズムのレシピ SIMS Recipe 商品間の類似度を計算するアルゴリズムのレシピ + 自分で作成したレシピ 2017年7月に発表された 映画のレコメンドで最も良い結果を出した手法!!!
  24. 自己紹介 • 名前 • 岡崎 拓哉 • 趣味 • プログラミング

    • ドラム • インコと戯れる • 好きな食べ物 • 鶏の唐揚とか
  25. 作り方概要 • 「Amazon Forecast」 に「S3」に配置してある CSV ファイルを読み込ませる • CSV ファイルから予測データ作成用に

    DataSet を作成する • DataSet※ を指定してJob※として読み込みを行う • 「Amazon Forecast」が提供する予測データの作成用のオプション※を選択する • 「Amazon Forecast」ダッシュボードから商品の需要予測データを見る
  26. 補足 • Dataset • Amazon Forecast のタスク定義ファイル • Amazon が定義したスキーマに準拠している必要あり

    • Job • Amazon Forecast に DataSet を読み込ませる事でデータの読み込みが可能 • オプション • オプション名 • 予測データの期間 • 予測データのレシピ(生成アルゴリズム)
  27. 質疑応答 ・ALB Support for Lambdaを試してみました:小林 真弓 ・AWS Toolkit for PyCharmを触ってみた:海津

    純平 ・Amazon Personalizeの紹介 :福治 菜摘美 ・Amazon Forecastの紹介:岡崎 拓哉 sli.do #RecoTech09