#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築〜のメモ

今日(2018-02-18)のDevelopers Summit 2016 - Hack the Realで最後に参加したセッション。

個人でこれをやったのは着想がすばらしいなと思ってただただ感心したセッション。

本エントリのコンテンツは以下。

で、以下よりがメモ。

【18-B-5】Apache Sparkを利用した「つぶやきビッグデータ」クローンとリコメンドシステムの構築 / 野田 純一氏 [GMOインターネット]

  • @n428dev
    • Software Design 201511 号
    • ConoHa を使った Hadoop 事例
  • 目的
    • NHK NEWS WEB のつぶやきビッグデータをつくりたい
      • 3月でこの番組なくなる?つぶやきビッグデータも?!
  • Spark について
    • MR とは別のアプローチ、 DAG での並列分散処理
      • Job Scheduling Process
        • RDD Objects
        • Scheduler
      • ITPro の記事。 DAG と MR の違い
    • インメモリ
    • Hadoop ecosystem の一部として扱われるが Hadoop と直接な関係はない
  • Spark Streaming について
    • リアルタイムに流れてくるストリーム対する集計ができる
    • 直近一時間のツイート数を毎分集計する、直近3時間でアクセスが多いIPを集計するなどの、 WINDOW集計が可能になる
    • データソース
      • Kafka, Flume, HDFS/S3, Kinesis, Twitter > Spark Streaming > HDFS, DB, Dashboards
  • 検証サービス説明
    • Twitter > Spark Streaming > Mikasa, Ikazuchi
  • Spark Streaming を使用したオンライン Twitter 解析
    • ここはスライドを参照したい
      • Streaming
        • Twitter Streaming API
          • 400 までの検索キーワードが指定可能
        • Spark Streaming
          • kuromoji: 形態素解析
            • デフォルトの辞書にない情報は自分で追加する必要がある
          • ウィンドウ集計の活用
            • 直近 5 分
            • 直近 60 分
        • Apache Kafka
      • Recommendation
        • Kafka
          • Ruby
        • nginx
          • Data-Driven Document
        • Amazon Product Advertizing API
        • Trend Product Bot (Twitter account へ) @Akihabara_itso
    • 完全スタンドアロン構成 (Mac or Linux)
      • ZK
      • Kafka
      • nginx
      • GraphX
      • Spark Streaming
      • Spark
      • Ruby
      • Java
      • Scala
  • Demo.

資料埋め込み

資料が公開されたらこちらに埋め込ませて頂く予定。

関連リンク

devsumi2016 でわたしがとってきた他セッションのメモ

のちほど他のエントリを書いたら更新する予定です。 garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com

乗り遅れるな!KafkaとSparkを組み合わせたリアルタイム分析基盤の構築〜のメモ

Developers Summit 2016 - Hack the Realで参加してきた三コマ目のメモを公開。

本エントリ、コンテンツは以下。

以降よりメモ公開。

【18-B-4】乗り遅れるな!KafkaとSparkを組み合わせたリアルタイム分析基盤の構築 / 田中 裕一氏 [日本アイ・ビー・エム]

  • 基盤の構築にフォーカスを当てた話。
  • 講演のターゲット
    • Spark をはじめたい、ビッグデータをはじめたいエンジニアのとっかかり
  • 持ち帰りポイント
    • Spark+Kafka をつかった解析基盤の概要の把握、オリジナルの基盤構築を行うことができる
    • ビジネス担当の方にはこんなことができるんじゃないか?というビジネスの発想の種
  • Hadoop/Spark の広がりについて
    • Spark のひろがり
      • Spark はイノベータ、アーリアダプタを超えて広がりつつある
    • 業界に横串で展開される BigData
    • BigData とはどんなものか
      • 毎日発生し続けるデータ
        • ウェブサイトデータ
        • ログデータ
        • オペレーションデータ
        • オフィスデータ
        • センサーデータ
        • カスタマーデータ
        • ソーシャルデータ
        • メディアデータ
  • 従来の Hadoop 基盤のおさらいと問題提起
    • DataSource>HDFS>YARN>Hive,Mahout>Batch>Data>RDB>BI,API,Batch
    • 問題
      • Input のタイミングの問題
      • 処理時間の問題
        • どうやってレイテンシーを下げるのか
      • データ反映の問題
        • つくったデータをどうやって提供していくのか?
  • Spark/Kafka の概要のおさらい
    • Apache Spark
      • Component
        • SparkSQL, Datasets, DataFrames: SQL IF の提供
        • GraphX: グラフ操作を提供
        • Steraming: ストリーミング処理を提供
        • MLlib: 機械学習アルゴリズムを提供
        • on top of SparkCore.
      • 処理系
        • RDD & DAG, On-memory.
    • Apache Kafka: 分散 MQ
      • Component
        • Producer
        • Broker
          • Topics の単位で処理をキューイング
        • Consumer
  • リアルタイム解析基盤について
    • Kafka と Spark をつかったリアルタイム解析基盤
      • Data>Kafka>Spark>RDB>BI,Batch,API>Kafkaに返す
      • Kafka をデータハブとして使う
    • リアルタイム基盤ではキューが重要
      • キューによる処理系の分離ができる
        • データ
          • 多様なデータソース
          • 多彩なデータ
          • Sparkの障害から分離
        • Kafka
          • どんなデータでも一旦の終端になれる
        • Bigdata
          • Spark側はKafkaにのみ対応
          • データに合わせたロジック
          • 多様なデータソースの障害から分離 *キューをつかったストリーミングフロー制御
        • 処理を並べてフローを作成できる
      • キューを使った処理やアルゴリズムの検証
        • 同じデータから新たな処理を追加したい場合など
  • リアルタイム解析基盤の活用
    • ログをKafkaにキューイング、Sparkで集計処理、Kafkaに返す
    • 既存で HDFS/Hive をもっているときに SparkSQL が Hive の MetaStore を参照するようなインテグレーション例
    • MLlib を利用した異常値の検知システム
    • IoT の場合、大量書き込みが発生する、書き込み部分に HBase を使う事例
  • まとめ
    • Sparkは利活用事例がこれからなサービス
  • DataPalooza が日本でも開催される
    • サイエンティスト向けのイベント。
  • IBM の Hadoop Distribution
  • IBM は Spark に本気。

資料埋め込み

資料が公開されたらこちらに埋め込ませて頂く予定。

devsumi2016 でわたしがとってきた他セッションのメモ

のちほど他のエントリを書いたら更新する予定です。 garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com

失敗から学ぶデータ分析グループのチームマネジメント変遷〜のメモ

今日(2016-02-18)のDevelopers Summit 2016 - Hack the Realでわたしが参加したセッションの中で一番タメになったセッション。

あるあるすぎる。

個人的には他にデータ絡みの組織活動で言うとデータガバナンスなども会社( Executive )からのサポートがないとまったくワークしないということを思っている。

今後、 Executive が会社の中におけるデータ関連の活動に理解がないと会社の継続そのものが難しくなっていくだろうという話にもつながるので、エンジニアよりむしろ経営層にこそ聞いてみて欲しかった内容。

では、メモを公開。本エントリのコンテンツは以下のとおり。

以降よりがメモ。

【18-D-3】データ分析グループのチームマネジメント変遷(ロングバージョン) / 中山ところてん氏 [Emotion Intelligence]

  • タイトル改まってた→失敗から学ぶデータ分析グループのチームマネジメント変遷
  • @tokoroten
    • 高機能雑用
      • EC データ分析、新規開発、営業
    • ZenClerk というサービスを提供
      • リアルタイムでウェブ店舗に来店した顧客にクーポンを発行する
        • 機械学習でクーポンの最適配布をする
        • どのユーザにクーポンを渡すと売上が改善するかをリアルタイムに予測
          • クーポンを出されると買うユーザは誰なのか?
            • 人によってはクーポンを渡されると買うのをやめちゃう
  • 2015秋のデブサミで LT で 15 分で話した内容の拡張版。
  • データ分析グループの仕事の範囲
    • データ分析の流れ
      • 研究>開発>システム開発>アプリ運用>営業活動
      • データ分析グループ、アプリの運用でまれたログデータを解析改善活動を行っていくことでビジネスに活かす
      • 必然的にカバー範囲は研究からアプリ運用
  • データ分析グループの組成失敗例
    • ex.1 データがないのにデータ分析しろ
      • 大企業はプロセスごとにプロセスがきれている
      • 会社の壁を超えてログデータを手に入れることが困難
      • しかし会社からはデータ分析しろという命令が
    • ex.2 研究のための研究になってしまって、お金が儲からない
      難しい問題を難しく解くのは最終段階
      • データサイエンティスト=高学歴、研究者で採用
      • 雇ったら研究的な仕事しかしたがらない
      • 難しい問題を難しく解きたがる
      • 売上につながらない
    • ex.3 組織の空中分解問題
      • 現場を改善するためにアナリストを雇う
      • 研究系とアナリスト系でデータ分析グループが空中分解する
      • 双方があいつら仕事してないといいあって対立
    • ex.4 目の前の仕事におわれて本質的な仕事ができない
      • データ分析グループはスキルセット的に広範囲をカバー
      • エンジニアと営業の間に落ちた問題を拾う
      • SQL 叩いて Excel で集計するだけの簡単なお仕事
      • 同僚から感謝されるからやるが、本質的な仕事ができない
    • ex.5 価値を生むコードとシステム安定稼働を生むコードの対立
      • データ分析グループが本来の領分で仕事をしようとすると、エンジニアの領分と重複
      • 言語や品質の面でエンジニアと対立
      • いくら分析をしても本番に導入することができない
    • ex.6 データレイク不在問題
      • データ分析インフラに対する投資をしないで人を雇う
      • データ分析以外のところに多大な工数がかかる状態
      • データレイク(データ蓄積基盤+データ処理基盤)の不在
    • 何が問題なのか?
      • データ分析グループは新しく出来た組織形態
        • その運用方法を知ってる人が少ない
      • データ分析グループとはなにか?
        • 研究からアプリ運用まで一気通貫で PDCA
        • 他の職種の領域と重複する(これ重要)
          • これをわかってないとないと組織内で衝突が起こる
        • 膨大なデータを取り扱うためのシステム投資が必要
  • データ分析グループを正しく運用するには
    • Exective のサポートが必要
      • カバー範囲の明確化
        • 会社としてデータ分析グループ範囲を明確にして周知する
        • データ分析グループにもこの範囲を意識させる
          • 難しい問題を難しく解くことが仕事ではない
    • システム面のサポート
      • データへの自由なアクセス
      • ログ収集インフラ、データ分析インフラの構築
      • データ分析者のつくったコードがサービスに影響を与えないようにアーキテクチャを設計、エンジニアとの対立を解消
    • 会社としての十分なお膳立てがなければワークしない
      • 個人でどうにかできるものではない
      • データ分析グループは空軍のようなもの、陸軍と協力しなければワークしない
  • Emotion Intelligence 社で起こった事例
    • マネジメントの変遷
      • マネージメントなし
      • ペイオフマトリクス
      • ....
    • 第一の失敗
      • マネジメント無し
        • データ分析者が会社全体の雑用になってしまった
          • エンジニアと営業の間に落ちた問題をひろってるだけになってしまった
        • ペイオフマトリクス
          e.g. 【経営トレンドワード】ペイオフマトリックス | 経営全般 | 経営プロ
          • あるタスクをコストとインパクトで分析
            • タスクやアイデアをポスト・イットに書き出してマトリクス状に配置
            • 右上から機械的に作業していく
          • 元ネタ:日産脅威の会議
    • 第二の失敗
      • データ分析グループとペイオフマトリクスは相性悪かった
        • 研究、開発、運用をひとつのチームでまわす
        • イノベーションのジレンマ
          • たとえ3人の組織であっても合理的に意思決定することでイノベーションのジレンマに陥ってしまった
            • ゆえに新しいことができなくなった
      • 日産で上手く言っていたのは、管理職の意思決定がボトルネックだったから
        • 人的資源は豊富でタスクをこなせば前進した
        • ベンチャーは逆
          • 手数の少なさがボトルネック
          • ビジネスを成功させるにはアイデアが必要
      • グラフで分かるイノベーションのジレンマ(面白い、スライドみたい
    • 第三の失敗
      • どうやって合理性を無視したらいいのか?>三段ペイオフマトリクスの導入
        • 研究、開発、運用でペイオフマトリクスをつくって、右上にあるものから順番に処理
      • 最初は機能したが、研究にはられたものの、どうやって検証していいかわからないものは脇によけていった。
        • 要ブレークダウンのチケットが増えていった
          • よくよくみたらそれが会社のコアだった
      • イシューからはじめよ
        • 本質的な問題をときにいかなければならなかった
    • 第四の失敗
      • Github Issue で本質的な問題を解決しようとしたら、みんながいろんなことをそこに書き込もうとしてしまった。
      • 問題を解くには十分な思考時間と決断が必要、 Github Issue のフォーマットは向いてなかった
        • あれは Github BBS だった
      • メンタルモデルの違いからエンジニアとデータ分析者の対立
      • 何が問題だったか?
        • Issue を考える人がいなかった
        • ボールを全員でおっかける小学生サッカーのようなことを会社としてやってしまった
        • 職種間の利害対立を調整する人の不在
          • フラット組織とデータ分析組織の相性が悪い
            • フラットだと個人の対立になってしまう
      • どうしたのか?
        • 会社組織をフラットから普通のハイラキー組織に
        • フラット組織を反省する
          • ピザ二枚の理論のまま会社を大きくしてしまった
          • マネージメントしないことをフラット組織と呼んでしまった
        • データ分析内で人と役割を分けた
          • 新規系
          • 運用系
          • アプリケーション運用系
        • データレイクの構築
          • Redshift にサービスのDBをコピー、 Redshift で分析可能に
  • まとめ
    • データ分析グループは研究、開発、運用を一気通貫で回してサービスを改善
      • 会社としてのサポートが必要
    • イノベーションのジレンマはどこでもおきる
      • チーム内でもチーム間でもおきる
      • フラット組織はイノベーションのジレンマに容易に陥る
    • 普通の会社になることは悪いことじゃない
      • イノベーションのジレンマの回避には十分な思考と決断が必要
      • データ分析グループの運用には適切な強権が必要

資料埋め込み

資料が公開されたらこちらに埋め込ませて頂く予定。

2015 秋の devsumi 版

devsumi2016 版

公開されているのを発見したら、埋め込ませていただこうと思っている。

紹介されていた書籍

devsumi2016 でわたしがとってきた他セッションのメモ

のちほど他のエントリを書いたら更新する予定です。 garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com

エンジニアなら使える深層学習~TensorFlowやDataRobotで機械学習がもっと身近に〜のメモ

今日(2016-02-18)はDevelopers Summit 2016 - Hack the Realに参加してきたので、参加したセッションのメモを別々のエントリで公開していこうと思う。

まず、本エントリのコンテンツね。

では、以降からがメモ。

【18-B-1】エンジニアなら使える深層学習 ~ TensorFlowやDataRobotで機械学習がもっと身近に / シバタ アキラ氏 [DataRobot, Inc]

  • 自己紹介: @madyagi
  • 今日お伝えしたいこと
    • あなたも人工知能つかえます。つかってみてください。
    • つかってみていただくことが重要
  • そもそも人工知能って何?
    • Deep learning アルゴリズムの画像処理の性能すごすぎ
    • 機械って人間超えちゃうんじゃね?
    • とりあえず、その辺の技術全般を指すパイプ言語としてバズる
  • 人工知能を作ろうとする人増えてます
  • もうすこしだけ正確に
    • 人工知能>機械学習>深層学習
  • 機械学習って何?→技術的にも mature に
    • コンピュータアルゴリズムにパターンを学習させ、予測や識別などの問題を解かせること
      • 種類
        • 教師あり
        • 教師なし
  • 機械学習への入力データと解ける問題
    • 分類
      • 2値分類
      • 多値分類
    • 回帰
      • 連続値
    • 時系列
      • 数値x時間
    • レコメンデーション
      • 数値xアイテム
    • クラスタリング
  • すでに広くのビジネスに応用されている
    • 金融
      • 与信
    • 保険
      • 事故に合う確率
    • マーケティング
      • クリック率
      • キャンペーン効果
    • 人事・採用
      • マッチング
      • 辞めそうか?
    • スポーツ
      • 打率
    • ヘルスケア
      • 再入院率
  • トラディッショナルな機械学習はどんどん進化している
    • 研究者がアルゴリズムを書いて論文で発表
    • 開発者がOSSライブラリでコーディングできるように
    • エンドユーザ、ボタンを押すだけで誰でも使えるレベルへ(データロボット)
  • Demo (データロボット)
    • 写真は不可
    • 自動的にいくつものモデルアルゴリズムを同時に実行させてデータセットに対する分析の結果を比較。
      • 精度の高いモデルを自動で作成される?!
        • 対象のモデルを利用するための REST の API も自動で作成される?!
  • そもそも
    • 深層学習ってなに?
      • ニューラルネットワーク型アルゴリズムの隠れ層を多段にすることで、学習能力を高めたもの
        • 学習方法
          • オートエンコーダー
          • Restricted Boltzmann Machine etc...
    • Shallow Neural Network
      • Input > Linear Transformation > Hidden Representation > Linear Transformation > Hidden Representation > ... > Output
  • 深層学習への入力データと解ける問題
    • 入力データがより人間のそれと近いものへ
      • ブーリアン
      • 数値
      • カテゴリ
      • テキスト
      • 音声
      • 画像
    • 解ける問題
      • 分類
        • 2値分類
        • 多値分類
      • 回帰
        • 連続値
      • 時系列
        • 数値x時間
      • レコメンデーション
        • 数値xアイテム
      • クラスタリング
  • TensorFlow とは
    • 深層学習の構築に必要な線形代数を表現し、GPUなどの分散処理技術を使って計算するためのライブラリ。
      • エンジニアなら Python/C++ から「わりと」簡単に使える
    • 応用例
      • 手書き文字の認識
        • 書いたりすることも?
      • テキストのベクトル化
      • 機械翻訳
      • 自然言語のモデリング
      • イメージ内にある物体の識別 etc....
    • Google の物体識別アルゴリズム Inception3 は Top5 正答率で世界最高精度、人間よりも精度が高い
      • すでに TensorFlow で使える
  • Demo (TensorFlow)
    • pip で TensorFlow をインストール
    • Inseption3 (学習済みのモデル)をもってきて実行させてみる
      • Google の TensorFlow のページにある
    • GiantPanda の画像をデフォルトだと見に行くようになっていて、 GiantPanda だと答える
    • 学習済みであるものについてしか答えられない
  • TensorFlow もどんどん進化
    • Deep Dream もちかぢか TensorFlow で使えるようになる
    • 将来的にはボタン一つでポチッとレベルまでいくだろう
  • 機械学習ができない人も問題を定式化できると多様なアイデアにつながる。
    • ドメインナレッジを活用できるから。
      • 世界の全員 x AI で膨大な問題を解決できる
    • マー
      • 月のクレーターから人の顔に似たものを探すとかいうネタ

資料埋め込み

資料が公開されたらこちらに埋め込ませて頂く予定。

関連リンク

devsumi2016 でわたしがとってきた他セッションのメモ

のちほど他のエントリを書いたら更新する予定です。 garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com garagekidztweetz.hatenablog.com