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

Enum.mapから始めるElixirデータサイエンス

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for piacerex piacerex
June 01, 2019

 Enum.mapから始めるElixirデータサイエンス

Avatar for piacerex

piacerex

June 01, 2019
Tweet

More Decks by piacerex

Other Decks in Technology

Transcript

  1. Erlang & Elixir Fest 2019 LT Enum.mapから始める Elixir データサイエンス 2019/05/30

    ver 0. 5作成 2019/05/31 ver 0. 9作成 2019/06/01 ver 1. 0作成
  2. 3 Enum.map/reduceが、かなりイイ具合 大抵のデータ処理は、この2つと、filter/sortをパイプで繋げば、 ほぼ完結と、シンプルで強力過ぎるのが、Elixir最大の魅力です defmodule DataCleansing do def run( filename

    ) do filename |> File.stream! # データクレンジング |> Flow.map( & String.replace( &1, ",", "¥t" ) ) # ①CSV→TSV |> Flow.map( & String.replace( &1, "¥r¥n", "¥n" ) ) # ②CRLF→LF |> Flow.map( & String.replace( &1, "¥"", "" ) ) # ③ダブルクォート外し # 集計 |> Enum.map( & &1 |> String.split( "¥t" ) ) # ④タブで分割 |> Enum.map( fn [ _head | tail ] -> tail |> List.first end ) # ⑤2番目の項目を抽出 |> Enum.reduce( %{}, fn name, acc -> # ⑥同値の出現数を集計 Map.update( acc, name, 1, &( &1 + 1 ) ) end ) |> Enum.sort( & elem( &1, 1 ) > elem( &2, 1 ) ) # ⑦多い順でソート end end
  3. 7 参考:最近、出た「Broadway」は「Flow」の後継 今年3月にオースティンで開催された「Lonestar ElixirConf」で、 Elixir創始者 José Valim が披露した「Broadway」は、この 「Flow」の後継ライブラリであり、Flow (GenStage)

    で未達成 だった「データ消失回避用ダウン」「障害時イベント消失軽減」 と それらを叶える「スーパーバイザツリー構成」を実現します https://www.youtube.com/watch?v=a3FtBNMzMxM
  4. 9 細かい操作を始めるとSQL/pandasと比べてしまう… たとえば、下記のようなところで、Enumの舌足らずを感じます ➢ 「Enum.sort」がイケてない SQLのORDER BYのように第2優先以降が指定できない ➢ LEFT/RIGHT JOIN的な、片方がnilのデータが未対応

    ➢ 複数項目指定のdropができない (drop以外にも結構ある) ➢ Enum.reduceで似たような処理を頻繁に書く機会多かった ➢ CSV変換が無い … あと、こんなデメリットもあります ➢ with_indexやatなど、添字アクセス風関数は、オブジェクト 指向屋さんの好物で、Elixirっぽく無いコードを書かせてしまう ➢ 行列やテンソルのようなデータ操作が、カオスになっていく…
  5. 14 データサイエンス以外の分野でも使われ始めています 「Esuna」は、データサイエンス文脈に限らず、データ処理全般を カンタンに取り扱えるため、AI・ML案件だけで無く、以下のような データ処理においても利用しています ① 事業向けデータ整形/集計の「BI」 ※Business Intelligence ②

    既存システムのリプレースに伴う「データ移行」 「ETLツール」のカバー範囲を、マルチコアのパワーとErlangVMの 安定性で、高速かつ安全にこなすことが可能です それと、データ操作をElixirコード生成するので、こんな使い方も ③ インプットデータからデータ加工を行うようなWeb/API開発 (データ読込/加工部分がプログラミングレスで生成できる)
  6. 16 訓練画像の加工/管理もEsunaに搭載予定 現在は、テキスト/数値主体のデータ処理のみの対応ですが、 画像系Deep Learningの退屈で頻出する前処理…たとえば、 ➢ OpenCVでやるような加工 (回転/拡大・縮小/色変更) ➢ オーバーサンプリリングやアンダーサンプリング

    などの操作と、それら画像の管理もEsunaで簡素化したいです これで、訓練画像の加工/管理の手間が減り、 モデル開発やSIにより集中しやすくなります 「退屈なことはPythonにやらせよう」では無く、 退屈なことは、そもそもやらないようにするために、 ツールに落とし込もう…ということですね (≒自らの生産性を上げるための生産こそ本懐)
  7. tokyo.ex#11 + fukuoka.ex#24 + Shinjuku.ex#13 akiba.ex + kochi.ex + KYOTOEX

    + hibikino.ex + α … . 国内の各地域Elixirコミュニティ集合 !!
  8. 22 fukuoka.exが手掛けるデータサイエンスプロダクト ➢ 「Hastega」 … GPU & マルチコアドライバ ➢ 「Cockatrise」

    … FPGAドライバ ※予測性能はGPU以上 ➢ 「DeepPipe」 … ディープラーニングコア (MNIST90%超) これらはEsunaと結合し、Pythonツールチェーンと勝負できる、 爆速のデータサイエンスプラットフォームを提供します (TensorFlowやscikit-learnといったMachine Learning/ Deep Learningの牙城を崩しに行く?…かも知れない) 「ツールチェーン」の充実に加え、今月から新たに開始するコラム、 「Esunaで始めるデータサイエンス入門」で、fukuoka.exは、 「Elixirによるデータサイエンス実現」 を福岡だけに限らず、全国/全世界に配信していこうと思います
  9. 23 最後に: Elixirの「潮目」は今後かなり変わっていく Lonestar ElixirConf 2019の、Bruce Tateのキーノートでは、 José と Plataformatec

    から始まった初期のElixirの流れが、 José自身の「Elixir Is Done」という、ある種の完了宣言にて、 コミュニティや各アルケミストに開放されていく趣旨の発表でした 今後のElixirおよび周辺を握るカギは「1人1人の投票 (vote)」 https://www.youtube.com/watch?v=KW85rW6-PgI
  10. 24 ~JEAへのLonestar ElixirConf フォローのお礼~ この場を借りて、ElixirConf登壇参加の渡航費用フォローという、 ステキ過ぎる施策をご提供いただいた「一般社団法人 Japan Elixir Association (JEA)」に、改めて感謝の気持ちをお伝え

    したいと思います (皆さま、どうぞ一緒に拍手をお願いします) 「Erlang & Elixir Fest 2019」も、JEAの主催となりますが、 毎年、とても素晴らしい「Elixirのお祭りの場」を作っていただき、 アルケミストとしては、本当に嬉しい限りです