azure mlやってみよう
TRANSCRIPT
[LT]Azure MLやってみよう~そうだ! 機械学習やってみよう~
「ネクストスケープ×Sansan 」 .NET勉強会
青木淳夫
このLTでは・・
▪ Azure MLについて紹介します。
▪ LTですが淡々としたスライドです。
自己紹介
▪ 青木 淳夫です。
▪ @aoki1210
▪ http://d.hatena.ne.jp/aoki1210/
▪ Microsoft MVP ASP.NET/IIS、Sitecore MVP
▪ ネクストスケープという会社で働いています
▪ http://www.nextscape.net
▪ 日本No.1のクラウド企業としてマイクロソフト社より3年連続表彰(Partner of the Year Azure)
▪ 技術者 絶賛募集中です!
参考までアンケート
▪ AzureML知っている方?
▪ AzureML試された方?
AzureMLとは
▪ 先週GA(正式サービス開始)されたばかりのMicrosoft Azureというクラウドで動作する機械学習(Machine Learning)サービス
機械学習って何?
▪ 人間が行っている学習能力と同様の機能をコンピュータで実現しようとする技術
10年前にビルゲイツも語っていた注目技術
▪ 米マイクロソフトの創業者ビル・ゲイツ氏は今から10年前の2004年2月にこう語った。
▪ 「自ら学習するマシンを生み出すことには、
マイクロソフト10社分の価値がある」
日経コンピューターの記事よりhttp://itpro.nikkeibp.co.jp/article/COLUMN/20140729/571282/
機械学習の概要(Wikipediaより)
▪ センサやデータベースなどからある程度の数のサンプルデータ集合を入力して解析を行い、そのデータから有用な規則、ルール、知識表現、判断基準などを抽出し、アルゴリズムを発展させる。なおデータ集合を解析するので統計学との関連が深い。
▪ そのアルゴリズムは、第一にそのデータが生成した潜在的機構の特徴を捉え、複雑な関係を識別(すなわち定量化)する。そして第二にその識別したパターンを用いて新たなデータについて予測を行う。データは観測された変数群のとりうる関係の具体例と見ることができ、アルゴリズムは機械学習者として観測されたデータの部分(訓練例などと呼ぶ)を学習することでデータに潜在する確率分布の特徴を捉え、学習によって得た知識を用いて新たな入力データについて知的な決定を行う。
▪ 1つの根本的な課題は、観測例に全てのとりうる挙動例を示すあらゆる入力を含めるのは(多くの実用的な関心事の場合)大きすぎて現実的でないという点である。したがって、学習者は与えられた例を一般化して、新たなデータ入力から有用な出力を生成しなければならない。
▪ 光学文字認識では、印刷された活字を事前の例に基づいて自動認識する。これは典型的な機械学習の応用例である。
▪ 機械学習は検索エンジン、医療診断、スパムメールの検出、金融市場の予測、DNA配列の分類、音声認識や文字認識などのパターン認識、ゲーム戦略、ロボット、など幅広い分野で用いられている。応用分野の特性に応じて学習手法も適切に選択する必要があり、様々な手法が提案されている。これらの手法は、テストデータにおいての検出・予測性能において評価されることがある。大量のデータから従来にない知見を得るというビッグデータの時代では、特にその応用に期待が集まっている
▪ 1959年、アーサー・サミュエルは機械学習を「明示的にプログラムしなくても学習する能力をコンピュータに与える研究分野」だとした。
▪ トム・M・ミッチェル(英語版)は、よく引用されるさらに厳格な定義として「コンピュータプログラムがある種のタスクTと評価尺度Pにおいて経験Eから学習するとは、タスクTにおけるその性能をPによって評価した際に、経験Eによってそれが改善されている場合である」とした。
▪ この文脈における一般化とは、学習用データセットを使って訓練した後に新たな見たことのない例について正確に判断できるアルゴリズムの能力をいう。学習者の最も重要な目的は、経験から一般化することである[6]。訓練例は一般に未知の確率分布に従っており、学習者はそこから新たな例について有用な予測を生み出す何か一般的なもの、その分布に関する何かを引き出す必要がある。
▪ 機械学習システムによっては人間の直観によるデータ解析の必要性を排除しようとしているが、人間と機械の協調的相互作用を取り入れたものもある。しかしそもそも、システムのデータ表現方法やデータの特徴を探る機構は人間が設計したものであり、人間の直観を完全に排除することはできない。
まずは、やってみよう
▪ 機械学習というと難しく感じるかもしれませんが、手を動かしてみるのが一番
▪ サンプルとギャラリーを見るだけでも楽しい
AzureMLの作成方法
Azureのポータルから、AzureMLを新規作成できる
AzureML Studioって?
・Webブラウザで動く・Azureの管理ポータルとは別・管理アカウントも別・使いやすいUI
サンプルが多く提供
サンプルも見れる
サンプルから新規作成も簡単
レコメンドの例をクリックする
モデルが展開される モデルが展開される
実行してみよう
Runボタンで実行できる
実行結果
Runボタンで実行できる
NDCG(Normalized Discounted Cumulative Gain)…ランキングを評価するための手法。提案された順位付けの正しさを示し大きい値であるほど良い
0.916511
①入力データ(3つ)
入力データ2(ユーザー情報)
入力データ3(レストラン情報)
入力データ1(ユーザーによるレストランのレーティング)
ここでは固定データですが、通常、インプットデータには、Readerを使います。Blob、Table、SQL Azure、Hiveなどをインプットデータとできます。
②入力データを前準備(整形)
ユーザー情報で必要なカラムを選択
レストラン情報で必要なカラムを選択
データを整形できる
③データを分割
レーティングデータを分割
データを分析用(学習用)と正解用(検証用)の2つに分ける
④トレーニング(機械学習)と検証
トレーニング(機械学習)
評価
レコメンドは、色々なパターンで出力できる
結果出力
出力結果は
▪ CSVで出力できる
▪ Webサービスでも呼び出せる
一昔前に独自のリコメンドサービス作ろうとしたら
▪ DBサーバーN台
▪ WEBサーバーN台
▪ 協調フィルタリングのアルゴリズムを実装
▪ 数年前は、お高いお話だった・・
▪ 今なら、クラウド+AzureMLで簡単にお安く
というわけで
▪ 機械学習!?と身構えるのではなく、将来性のある便利なツールととらえたほうが楽しめます。
▪ ビッグデータを扱えて、Webでいつでも使える、再利用しやすいSSIS(SQLServer Integration Service)みたいなもの。
▪ IT Pro(非エンジニア)でも使える。
最後に
▪ Machine Learningおすすめです
▪ ご清聴ありがとうございました