Mais conteúdo relacionado Semelhante a エンタープライズと機械学習技術 (20) エンタープライズと機械学習技術2. Agenda
Part I
エンタープライズでの
機械学習技術利用の広がり
Part II
機械学習のアルゴリズム
Part III
Azure MLでの
予測ソリューション開発サンプル
4. Part I
エンタープライズでの機械学習技術利用の広がり
ビッグデータ処理と統計学的アプローチ
機械学習技術とは何か?
2014年の各社の動き
Google Prediction API
MS Azure Machine Learning
IBM Watson Analytics
機械学習への期待の背景
小売業の変化
6. ビッグ・データ処理と人間の能力
我々が利用できるデータは、年々、増大している。それば
かりではない。あるデータと他のデータの関連を考えるこ
とで、複数のデータを組み合わせた、新しいデータが生ま
れる。そのサイズは、元のデータより、さらに巨大になる。
こうした全組み合わせのスキャンが必要な巨大な処理は、
機械にまかせるしかない。ビッグデータ処理の一つの側
面は、こうしたタイプのデータ処理の機械化である。
ただ、人間は巨大なデータをそのまま利用できるわけで
はない。人間がハンドルできるのは、ごく限られた大きさ
のデータだけだ。多くの場合、巨大なデータが価値を持つ
のは、そこから意味のある情報を引き出せるからだ。そこ
で、結果として引き出された情報は、元のデータと比べる
と、圧倒的に小さなサイズの情報である。
7. ビッグデータ処理と統計的手法
逆に、少数のデータのサンプルから、もとになるデータの
基本的な特徴を抽出する手段が、昔から存在する。統計
的手法がそれである。
例えば、テレビの「視聴率」の調査では、関東・関西等の
11地区では毎日、青森・岩手等の16地区では月初めの
二週間の調査が行われているが、それに参加しているの
は、関東、関西、名古屋の3地区で600世帯、それ以外の
地区は200世帯であると言われている。
それに対して、5年ごとに行われる「国勢調査」は、すべて
の世帯を対象に行われる悉皆調査である。
機械学習アルゴリズムは、基本的には、ビッグデータ処理
に、統計的手法を導入しようというものである。
8. ビッグデータ処理の様々なスタイル
検索– PageRankによる絞り込み
Web検索は、可能的にはすべてのWeb上のデータを対
象とする、典型的なビッグデータ処理である。少数のデー
タをサンプリングして、その中を検索しても意味はない。た
だし、検索条件にマッチしたすべてのページが表示される
わけではない。主要には、PageRankという指標を導入し
て、それが高いものだけを表示するのが、非常に革新的
なアイデアだった。
一般に、巨大なデータから、有用な小さなデータを抽出す
るのを、データ・マイニングとかフィルタリングというが、
Googleによる検索は、こうしたデータ・マイニングの成功
例でもある。
ただし、PageRankの計算には、事前の全件スキャンが
必要である。これは人間にはできないことだ。
9. ビッグデータ処理の様々なスタイル
Amazonのrecommendation
Amazonのrecommendationも典型的なビッグデータ
処理の一つである。そこでは、個人が購入した商品に対し
て、同じ商品を購入した他の人たちが、他にどのような商
品を購入したかがチェックされる。その結果、一番、多い
組み合わせが、リコメンドされる。(おそらく全件チェックな
のだとおもうが、よく分からない。)
検索でのPageRankとは違って、商品の購入予測には、
いろいろなファクターを導入することが可能である。それま
での自身の購買履歴・年齢・性別・住んでいる地域・趣味
等々。こうした予測をリアルタイムで行うには、全件の突き
合わせより、事前の統計予測の方が現実的である。
こうした手法は、現在、急展開中の個人向けの広告でも
同様である。
10. ビッグデータ処理の様々なスタイル
センサー・ネットワークの場合
各家に、電力の消費量(ある場合には発電量)・温度・湿
度等を感知するスマートメーターが設置されている場合を
考えよう。この時、各家の監視・電力の配分・異常チェック
は必須なので、ある時間ごとでの全センサーのスキャン
は必須である、
一方、時間帯(夜と昼等)や季節の変化による、電力消費
量の変化は、ある程度、予測可能である。この定常的な
予測値に対して、「異常」のチェックが可能になる。
ここでは、決定論的なコントロールと確率論的な予測の両
方が必要になる。
ロボットやヘリコプターの姿勢制御では、各部分の自由度
が高いので、確率論的な制御が適しているとも言われて
いる。
12. 機械学習アルゴリズムに可能なこと
数値予測とカテゴリー分類
機械学習アルゴリズムは、数値予測とカテゴリーへの分
類という二つのことを行う。
数値予測は、与えられた複数のパラメーターから、一つの
数値を予測する。例えば、
(住所、土地面積、建物の種類)から、建物の値段を予測する
ある選手の過去のデータから、来年度の成績を予測する。マイケ
ル・ルイス「マネー・ボール」
過去36ヶ月の気温のデータから、来月の気温を予測する
カテゴリー分類は、与えられた複数のパラメーターから、
それが、どのカテゴリーに属するかの予測をする
与えられた個人情報から、クレジットの与信の可否を決める
手書文字の画像データが与えられた時、何の文字かの判定
13. 機械学習モデル構成のステップ
モデルの選択・訓練・テスト・評価
あるデータが入力として与えられた時、ある答えを出力す
るシステムを作る。これを、モデルと呼ぼう。通常は、こう
した機能をもつプログラムを開発するのだが、機械学習で
は、ユーザーは基本的には、プログラムを作らない。
1. 基本的な機械学習アルゴリズムに基づくモデルは、いくつ
か与えられており、そのうち一つを選ぶことから始める。
2. プログラムを書く代わりに、選んだモデルに、訓練用の
データを与えることで、機械自身が自ら学習して、統計的
に正しい答えを出すモデルになることを期待する。
3. 訓練によって構成されたモデルが、望んだ振る舞いをす
るかは、訓練用データとは、別のデータによってテストされ
る。
4. その結果の評価で、モデルの調整を行う。
14. 機械学習モデル構成のサンプル
クレジットカードの与信システム
ある個人の(年齢, 収入, 学歴, 既婚/未婚)の四つの特
徴から、クレジットカードの与信の可否を決める機械学習
モデルを考えてみよう。
もしも、クレジット会社が、先の四つの個人の特徴から、与
信の可否を決めるアルゴリズムを持っているのなら、その
アルゴリズムをプログラムとして組み込むのが一番正確
なので、機械学習モデルを使う必要はない。ここでは、こ
のクレジット会社は、四つの特徴をベースに、面談した窓
口の担当者が「総合的」に判断しているものとしよう。
こうした時、機械学習モデルを構成するには、すでにこの
会社で審査が終了している次のような形式の一定数の
データが、訓練用とテスト用に必要になる。
(年齢, 収入, 学歴, 既婚/未婚, 与信の可否)
15. 機械学習モデル構成のサンプル
クレジットカードの与信システム
次の形式の訓練用データとテスト用データ
(年齢, 収入, 学歴, 既婚/未婚, 与信の可否)
が、それぞれ与えられたとしよう。この時、例えば、次のよ
うな手順で機械学習モデルは構成される。
1. 機械学習アルゴリズムとしてSVM(Support Vector
Machineアルゴリズム)を実装したモデルを選ぶ。
2. このモデルに、訓練用のデータ2,000件を読み込ませる
これを「訓練用データで、モデルを訓練する」という。
3. 訓練されたモデルが、望んだ振る舞いをするかを、テスト
用データ1,000件でテストする。
4. その結果の評価で、モデルやパラメーターの調整を行う。
5. 問題がなければ、実際の与信に、このモデルを利用する。
16. 設計
データ構造・アルゴリズム等
実装
プログラム
配備
アプリケーション
リクエストレスポンス
Smart Machine
設計
学習モデルと
訓練用データの選択
機械学習
機械学習アルゴリズム
配備
アプリケーション
リクエストレスポンス
人間の仕事
訓練用データ
機械の仕事
21. 機械学習アルゴリズムが、
クラウドを利用で、誰でも利用可能に
現状:「機械学習には、これまで、複雑なソフト
ウェア、パフォーマンスの高いコンピューター、そ
してそのすべてを理解する経験豊富なデータサ
イエンティストが必要でした。.... 」
クラウド利用
「クラウドを活用することで、... 機械学習は、より
広範囲のユーザーに届くようになります。将来の
結果を予測することが達成可能になったので
す。」
22. 参考資料
各社のページから
Google Prediction API
Microsoft Azure Machine Learning
IBM Watson Content Analytics
23. Google Prediction API
2010年8月2日
“Machine Learning: Google Prediction API”
http://bit.ly/1GRx02Z
2014年9月23日
https://cloud.google.com/prediction/
25. Google Prediction API
使いやすいRESTful インターフェースを通じて
Google の機械学習アルゴリズムを利用できる、
データの分析と予測のためのAPI です。
データを活用する: 過去の履歴を使用して、将
来のトレンドを予測できます。Prediction API を
使用すると、メッセージのルーティング、スパムの
検出、ユーザーにおすすめのサービスの紹介が
行えます。データはGoogle の強力なインフラス
トラクチャが分析します。
https://cloud.google.com/prediction/?hl=ja
26. Google Prediction API
高速&高信頼性: Cloud Storage を使用して
複数のデータセンターを横断してデータが複製さ
れます。ほとんどの予測クエリは200 ミリ秒もか
かりません。パフォーマンスも向上します。
クラウドの統合: Google サービスは互いに連
携するよう設計されています。Google
BigQuery からの結果を使用したり、Cloud
Storage から最大2.5 GB のデータセットを取
得したりして予測モデルを作成できます。
Prediction API はGoogle App Engine から
直接使用できます。
28. 購入の予測
Google のクラウドベースの機械学習ツールでは、データ
を分析してアプリケーションに、顧客の評判分析、スパム
検出、メッセージのルーティング判断、アップセル最適化
分析、ドキュメントとメールの分類などの機能を追加でき
ます。
たとえば、ビール、ワイン、チーズを販売するサイトに訪問
者の購入履歴があり、訪問者がワインに興味があるかど
うかを予測したい場合、Google では、トレーニングデー
タを3 つの要素(高価なデザートチーズを顧客が購入し
た回数、顧客が以前にワインを購入した場合に値1 とし
購入しなかった場合には値0、顧客がビールを購入した
回数)に基づいて作成できます。
https://cloud.google.com/prediction/docs/scenarios#purchaseprediction
29. 感情分析モデルの作成
このドキュメントでは、Google Prediction API を使用し
て基本的な感情分析モデルを作成する方法について説明
しています。感情分析モデルは、テキスト文字列を分析し、
指定したラベルに基づいて分類する場合に使用します。
たとえば、ツイートを分析してその内容がポジティブなの
かネガティブなのかを判断したり、メールを分析してその
内容が気分を良くするものか悪くするものなのか、悲しく
するものなのかを判断したりできます。
https://cloud.google.com/prediction/docs/sentiment_analysis
30. Microsoft Azure
Machine Learning
2014年6月16日
“Microsoft Azure Machine Learning
combines power of comprehensive machine
learning with benefits of cloud”
http://bit.ly/1zlFNFm
32. Microsoft Azure
Machine Learning
強力なクラウドベースの予測分析
新しいユーザーにも、熟練のユーザーにも適した
設計
MS Research、Xbox、Bing で実証済みのア
ルゴリズム
オープンソースのR 言語を高度にサポート
ビッグデータソリューション用のHDInsight へ
のシームレスな接続
モデルを運用環境にわずか数分でデプロイ
http://azure.microsoft.com/ja-jp/services/machine-learning/
33. 機械学習の力
コンピューターシステムを使用して履歴データを
マイニングすることで将来のトレンドや動きを予測
する機械学習は、毎日大勢の人々の生活に関係
しています。機械学習は、検索エンジン、オンライ
ンレコメンデーション、ターゲット広告、仮想アシ
スタント、需要予測、不正検出、スパムフィルター
といった最近のあらゆるサービスを強化します。
これらは利用方法のほんの一部です。可能性は
それだけではありません。
34. Azure Machine Learning の紹介
機械学習にはこれまで、複雑なソフトウェア、パフォー
マンスの高いコンピューター、そしてそのすべてを理
解する経験豊富なデータサイエンティストが必要でし
た。データ分析を始めたばかりの多くのユーザーに
とって、さらには大企業にとっても、単純に困難でコス
トがかかります。予測分析用に完全に管理されたクラ
ウドサービス、Azure Machine Learning を体験
してください。クラウドを活用することで、Azure
Machine Learning の機械学習は、より広範囲の
ユーザーに届くようになります。将来の結果を予測す
ることが達成可能になったのです。
35. ドラッグ、ドロップ、予測
Azure Machine Learning により、データサイエン
スについての専門的な知識のないユーザーでもデー
タをマイニングして予測できるようになります。統合開
発環境のML Studio は、ドラッグアンドドロップで
操作でき、シンプルなデータフローグラフを使用して
実験をセットアップします。ほとんどのタスクでは、1
行のコードも記述する必要がありません。さらにML
Studio では、サンプル実験のライブラリが用意され
ていて、時間を節約することができます。また、Bing
とXbox で実証されてきたものと同じアルゴリズムを
含む、Microsoft Research の洗練されたアルゴリ
ズムを特徴としています。
36. R 言語のコミュニティ
Azure Machine Learning は、経験豊かなデータ
サイエンティスト向けにも設計されています。統計や
データマイニングによく使われるオープンソースの
プログラミング環境であるR をサポートしています。
既存のR コードをワークスペースに直接ドロップする
ことも、ML Studio で独自のコードを作成することも
できます。350 を超えるR パッケージが安全にサ
ポートされています。既存の作業を実証されたアルゴ
リズムと組み合わせて照合し、一度に最大で10 の
モデルをテストできます。Azure Machine
Learning の実験は簡単に共有できるため、中止し
た箇所から他のユーザーが実験を再開できます。
37. クラウドで広がる可能性
Azure Machine Learning では、ソフトウェアをイ
ンストールしたり、ハードウェアを構成したり、頭を悩
ます不可解な開発環境を扱ったりする必要はありま
せん。ブラウザーさえあれば、どこからでもAzure に
ログオンして予測モデルを開発し、新しい分析モデル
をこれまでにない速さでデプロイできます。また、
Azure Machine Learning ではAzure Storage
上にファイルをほぼ無制限に保管でき、Hadoop
ベースのビッグデータソリューションである
HDInsight や、SQL Database、Virtual
Machines といったAzure の他のデータ関連サー
ビスにシームレスに接続できます。
38. IBM Watson Content
Analytics
2014年5月27日
“IBM Watson Content Analytics V3.5 helps
transform business outcomes by exposing
meaningful, actionable insights from
enterprise information”
http://ibm.co/1xjPIgK
40. IBM Watson Content Analytics
非構造化データからインサイトを引き出すことに
よって業績を向上させるための製品
Watson Content Analytics (旧称: Content
Analytics with Enterprise Search) は、コンテン
ツ分析の威力とエンタープライズ検索のスケールを1
つの製品の中で組み合わせた検索/ 分析プラット
フォームです。リッチ・テキスト分析によって、非構造
化データとそれに関連する構造化データからトレンド
やパターンや関係を抽出できます。そのようにして引
き出したインサイトを利用すれば、業務成果の予測と
達成に向けて、事実に基づく意思決定ができるように
なります。http://ibm.co/1GRCOcw
41. Watson Content Analyticsの機能
非構造化データと非構造化コンテンツの検索: 企業全体
にわたる各種ソースのコンテンツ(文書、e-メール、レ
ポートなど) が対象になります。
企業全体にわたる検索結果の分析: 事実に基づく意思決
定に役立ちます。
トレンドやパターンや関係にかかわるインサイトの抽出:
ビジネス・インテリジェンスを高めて、ケース管理を拡張で
きます。
他のIBM システムと協調したスケーラビリティー、柔軟
性、統合性の強化: オープン・スタンダード・プラットフォー
ムを使用してさまざまなソリューションと統合できます。
スターター・パック機能の組み込み: 初期段階の実装や
小規模な実装に最適です。
46. みずほ銀行と日本IBM、次世代チャネ
ル構築へ「Watsonテクノロジー」活用
みずほ銀行と日本アイ・ビー・エム(以下日本IBM)はこの
たび、次世代チャネル構築を目的に、音声データをテキス
ト化する音声認識技術、およびIBMの保有するWatson
テクノロジーや関連技術を組み合わせて、コールセンター
や銀行窓口での顧客対応などでタイムリーに有益な情報
を提示するシステムを共同で構築することに合意したと発
表した。Watsonテクノロジーとは、質問や対話に基づい
て、タイムリーに的確な回答を導き出すためのコグニティ
ブ・コンピューティング(情報を分析し、学習や推論を行い、
アクションに結びつける、といった人間の認知的活動の実
現を目指したコンピュータ技術)の基盤。学習機能を備え
ており、経験を重ねる中で自律的に回答の精度を高めて
いくことができる。http://news.mynavi.jp/news/2014/11/12/147/
49. 第三の情報爆発
ネット上の最初の「情報爆発」は、インターネットを利用す
る個人の爆発的拡大によって起きた。そこでの情報発信
の主力は、静的なテキストベースのものであった。
ネットワークのブロードバンド化と個人が享受・発信する
情報のリッチコンテンツ化による情報の増大が、それに続
く。
第二の「情報爆発」は、モバイルとSNSの普及によっても
たらされた。モバイル・デバイスは個人を常にネットに接続
させ、SNSはソーシャルなグラフの内部でリアルタイムに
メッセージの交換を繰り返す。
進行中の第三の「情報爆発」は、ネットワークに接続する
デバイスとセンサーの爆発的な拡大によって、もたらされ
ようとしている。
50. モバイルは、最強のマーケティング・ツール
21世紀初頭の大規模データの処理技術の中核は、検索
と広告技術である。
一方で、こうした大規模分散システムから派生したクラウ
ドのエンタープライズでの利用は大きく拡大した。
現在のエンタープライズでのクラウド利用で、もっとも重要
なターゲットとして想定されているのは、個人が持ち歩くス
マートフォン、タブレット等のモバイル・デバイスである。
個人に強くひも付き、多くのセンサーを備え、位置情報・購
買情報その他の情報が取得可能なモバイル・デバイスは、
エンタープライズにとって、最強のマーケティング・ツール
になろうとしている。
51. 広告のターゲットはモバイルと個人
2010年ごろ、モバイルとSNSの爆発的な普及で、リアル
タイムのメッセージがネット上のコンテンツの主流となった
ことを背景に、検索のバッチ処理からリアルタイム処理へ
の大きな転換が起きる。
この変化の中で、広告の主要なターゲットは、PC上のブラ
ウザーからモバイルと個人に変わる。個人を特定し追跡
する技術の追求とともに、グラフの検索・知識の検索と
いった、新しい検索技術の模索が始まる。
モバイルと個人をターゲットにする広告の技術は、大きく
変わろうとしている。知識の表現と言語能力へのアプロー
チをも展望するこの分野での競争は、現代のIT企業間の
競争のもっとも中心的な分野になっている。
52. 企業の価値を最大化するシステム
基幹系と情報系の統合
現在のエンタープライズのシステムには、基幹系・勘定系
と呼ばれる領域と情報系・Web系と呼ばれる領域が並存
している。そうした重層的構造は歴史的に形成されたもの
である。
20世紀末から21世紀のはじめにかけての時期、インター
ネットとその技術の急速な普及を背景として、サーバー・
サイドのWebアプリのスタイルが登場し、基幹系のWeb
アプリケーション化が、エンタープライズ・システムの技術
的な中心課題となった。エンタープライズ・システムのクラ
ウド化は、こうした過程の完成段階である。
現在起きようとしていることは、エンタープライズの価値を
最大化しようとする、マーケット・ドライブの、基幹系と情報
系の統合である。
53. 「IT技術のマーケティングへの応用」は、
すべての企業にとっての課題
個人にとって最適の商品を売り込む最適の広告を打つた
めには、個人の行動の把握と、ターゲットになる集団の全
体としての行動の傾向の分析は、欠かせないものになる。
それは、大規模な分散処理システムに支えられた高度化
した広告だけの問題ではない。ここで目指されている方向
は、一般の企業のマーケティングの基本でもある。
重要なことは、ネットワークとマシンの性能向上とクラウド
利用の拡大によって、一般の企業でも、大規模のデータを
ハンドルし、その分析をビジネスに活かす条件が広がって
いることである。
一般のコンシューマーを直接の顧客とする小売業の分野
で大きな変化が起きようとしている。
56. “The Future of Shopping”
-- RichRelevance社White Paper
マーケティングと小売業は、ますます強く、解けない計算
のように感じられるかもしれない。新しいトレンド、アプ
ローチ、デジタル・チャンネルは、毎朝、次々生えてくる
マッシュルームのように見える。ブランドでも小売でも、両
方で、誰もが、何が妥当なのか、この次に出てくる新しい
ものは何なのかに頭を悩ませている。LinkedIn,
Facebook, YouTube, Twitter, Google+ ... これら
の新しいチャンネルのそれぞれが、ある決定を必要として
いる。それをするかしないかの。もし、それをするとすれば、
既存のメッセージや製品やキャンペーンのコンテンツをカ
スタマイズしたり目標の再設定をすべきなのか? そして、
それに慣れた頃、InstagramやPinterestが現れる。ど
こで、それは終わるのだろうか?
57. “The Future of Shopping”
-- RichRelevance社White Paper
それは終わりはしない。しかし、ひとたび、個別の要素を
定義し解決すれば、そんなに複雑なことにはならない。
未来のショッピングの基礎は、少数の議論の余地のない
事実の中にある。ソーシャル・メディアは存在を続け、あな
たの顧客は決定的にMobileで、ますますローカルなもの
になる。そして女性が重要な鍵を握っている。
58. 個人化“personalization” と
参加“participation”
これである! ショッピングの予見可能な未来は、明確な
ものになる。ソーシャルとモバイルとローカルな取り組み
に、個人化“personalization” と参加
“participation” を掛け合わせるだけだ。(4Pは、いまや
6Pになる)。忘れないで欲しいのは、分母の女性
“Female” である。これは、急速に成長しつつある、巨大
なマーケットを表している。
4P: right Product, Place, Price and Promotion
59. 「消費者の行動データが、ショッピング
の未来をドライブする」
物事を、自身のビジネスの境界内(それは、サイロ化され
たチャンネルだ)の自分に快適な目線からではなく、消費
者の目線で見ることが重要である。
“オムニチャンネル・リテーリング”(ハーバード・ビジネス・
レビューがそう名付けた)は、統合されたセールスの経験
を提供する。
目標は? 買い物客にシームレスで一貫した情報を提供
しながら、物理的な店舗の利点と、オンライン・ショッピン
グの豊かな情報の経験を融合させること。
60. “Personalization” :
購入にいたる道に沿った顧客中心の視点
個人化Personalizationは、ブランドと小売店が、収集さ
れた行動データを活用し、すべてのチャンネルで顧客向
けに作られた顧客との関係を継続することを可能にする
接着剤である。
「既製品」のインターネット広告(データと技術に基づいて
いる)は、小売店が、彼らが売っているものを欲しがってい
る人をターゲットにすることや、これらの人たちが意味の
ある会話に加わることを可能にする。
この会話は、あなたがあなたの顧客がどんな人かを知っ
ていることにではなく、彼らが現時点で何を望み、彼らが
どのように調査し、経験し、購入し、あなたが提供する製
品の配達を受けてきたかに基づいている。
61. リアルタイムの
ユーザーの行動
在庫とマージン
マルチ・チャンネルの
購買履歴
のデータ
属性データの
カタログ
サードパーティの
データソース
将来予測
データ
パーソナライズ化された
製品のリコメンデーション
ターゲット化された
プロモーション
価値あるブランドの
広告
62. 「データの声を聞く」
Amazonのリコメンデーション開発
Greg Lindenが、リコメンデーションを思いついて会社に
提案したら、マーケット担当の上級副社長(HIPPOです
な)から「そんなことをしたらお客が逃げるだけだ」猛反対
されて、「そんなことはするな」と、禁止されたという。
Greg Lindenは、めげずに、こっそり「テスト」をした。そ
れを見つけたHIPPOは、怒ったらしい。ただトップのおエ
ライさんでも「テスト」を止めることはできない。ただ、「テス
ト」の結果は、明確であった。それはAmazonに大きな収
入をもたらすことが明らかになった。この事実の前に、
HIPPO も沈黙せざるを得なかった。こうして、Amazon
リコメンデーションが世に出たという。
"Early Amazon: Shopping cart recommendations”
http://glinden.blogspot.jp/2006/04/early-amazon-shopping-cart.html
63. 「データの声を聞く」
求められる意思決定のスタイル
彼らはデータの声をきいた。そして、不断にデータを最適
化した。エラい人の声ではない。それが、彼らの文化の中
心部分なのだ。
エラい人の決定は、もはや、デフォールトではない。(少数
の選ばれた上級マネージャーの権力を固めるのではなく)
ますます多くの責任を、実装する自由を含めて、すべての
チームメンバーに移譲することは、士気を高め、コストを削
減する。
エラい人は、自分の好みで(あるいは、一番無難な)デザ
インを、思いつきで選ぶ。しかし、これは会社内部の最終
戦を表しているに過ぎない。顧客は、もちろん、この激しい
論争を構成した20以上のデザインを目にすることはない。
66. Greg Lindenの教訓
「私の経験では、イノベーションは、下からしか起
きない。問題に一番近い人間が、それを解決する
一番いい位置にいるのだ。
イノベーションに依拠しようとするどんな組織も、
ある種の混沌を取り込まなければならないと、私
は信じている。忠誠と従属は、武器にはならない。
善と悪とを分離するためには、データの計測と客
観的な議論を用いるべきなのである。」
68. オークリッジ国立研究所の
3Dプリンター研究の「目的」
「研究所の3Dプリンター研究の目的は、プロトタ
イピングから生産への移行と、分散化した「民主
化」された製造業を可能とすることである。そこで
は、3Dプリンターが全ての人の収入の源とな
る。」Lonnie Loveの発言, group leader for
automation, robotics and manufacturing
近い将来には、全国28,000の高校に、3Dプリン
ターを置くという。
“ORNL Seeds 3-D Printers To Drive New Revolution”
「オークリッジ国立研究所は、3Dプリンターが新しい革命を
ドライブするように種をまく」http://bit.ly/1oyTaxZ
74. Part II
機械学習のアルゴリズム
機械学習技術の利用では、ユーザーは、モデルを構
成する背後のアルゴリズムの詳細について理解を求
められないことが多い。ただ、機械学習のモデルを利
用する上で、一定の統計学的知識は必要だと感じて
いる。また、どのようなメカニズムで機械学習が行わ
れているかの概略を知ることも、あったほうがいいと
思う。ここでは、機械学習アルゴリズムのいくつかを紹
介する。
76. 回帰モデル評価の基本的な用語
MAE =
1
N
^
yi - yi
N
å
i=1
RMSE =
Mean Absolute Error
(平均絶対誤差)
Root Mean Squared Error
(二乗平均平方根誤差)
77. Part II
機械学習のアルゴリズム
Neural Network -- Gradient Decent
Decision Tree
Support Vector Machine
78. Neural Network
-- Gradient Decent
Gradient Decentは、Neural Networkで、N+1
層への出力後、N層のパラメーターを修正するBack
Propagationの基本的な手段である。
ここではNeural Networkの詳細には立ちいらない
が、Gradient Decentは、NNと統計理論を結びつ
ける要の役割を果たしている。
Andrew NgのCourseraのML講義に依拠
https://www.coursera.org/course/ml
79. ポートランドでの
実際の家の価格
これを予測の為の
訓練用データとして
利用する
面積feet2
(x)
価格千ドル単位
(y)
2104 460
1416 232
1534 315
852 178
… …
記号の意味:
m = 訓練用データの数
x = “入力” 変数/ 特徴
y = “出力” 変数/ “ターゲット” 変数
m
= 97
80. 仮説:
面積feet2
(x)
価格千ドル単位
(y)
2104 460
1416 232
1534 315
852 178
… …
予測の為の
訓練用データ
家の価格hは、家の面積をxとした時、
上の式で表されると仮定する。
問題:
この時、パラメーターは、どのように
選べばいいか?
81. 3
2
1
0
h は、x の一次式なので、h のグラフは、直線になる。
パラメーターθi が変わると、グラフも変わる。
訓練用データの点(x, y) について、yがもっとも、hθ(x)
に近ずくように、θ0, θ1を決める。
0 1 2 3
3
2
1
0
0 1 2 3
3
2
1
0
0 1 2 3
88. 誤差を最小にするθ0 , θ1を求める
サンプル中のi 番目の点を(x(i), y(i))とすれ
ば、点x(i) での誤差は、hθ(x(i)) – y(i) となる。
誤差は、正負の値をとるので、単純に、誤差
の平均を取っても、打ち消しあって、全体とし
ての誤差の大きさはわからなくなる。
そこで、誤差の二乗をとって、その平均を最小
にすることを考える。
θ0 , θ1の関数である、この誤差の二乗の平
均を、コスト関数と呼ぶことがある。
93. (for fixed , this is a function of x) (function of the parameters )
94. (for fixed , this is a function of x) (function of the parameters )
95. (for fixed , this is a function of x) (function of the parameters )
96. (for fixed , this is a function of x) (function of the parameters )
100. このアルファを学習率
(Learning Rate)という。
If α is too small, gradient
descent can be slow.
アルファが、あまりに小さいと、
Gradient descentは、ゆっくり
にしか進まない。
アIf ルα is ファtoo がlarge, 、あまりgradient
に大きいと、
Gradient descent can descentovershoot は、the
最小値
をminimum. 通り越してIt しmay まう。fail 場to
合によっ
てconverge, は、振動or したeven り、収diverge.
束しない場
合もある。
108. Decision Tree
Decision Treeは、直感的にもわかりやすく、同じモ
デルで、数値予測にもカテゴリー分類の両方に使える
というメリットがある。かつ、予測も早く正確である。た
だ、統計的な方法とのつながりは、薄いように思う。
Shmueli, Patel & Bruce
“Classification and Regression Trees”に依拠
http://bit.ly/1x7PSGA
112. Decision Treeを作る
次の表のようなデータ、収入と敷地面積と芝
刈り機の所有のデータが与えられている時、
このデータの芝刈り機の所有を表すDecision
Treeを作ってみよう。
最初のデータから始めて、片っ端から、二分
木を作っていってもいいが、それは少し形が悪
い。
113. 収入敷地面積芝刈り機の所有
Income Lot_Size Ownership
60.0 18.4 owner
85.5 16.8 owner
64.8 21.6 owner
61.5 20.8 owner
87.0 23.6 owner
110.1 19.2 owner
108.0 17.6 owner
82.8 22.4 owner
69.0 20.0 owner
93.0 20.8 owner
51.0 22.0 owner
81.0 20.0 owner
75.0 19.6 non-owner
52.8 20.8 non-owner
64.8 17.2 non-owner
43.2 20.4 non-owner
84.0 17.6 non-owner
49.2 17.6 non-owner
59.4 16.0 non-owner
66.0 18.4 non-owner
47.4 16.4 non-owner
33.0 18.8 non-owner
51.0 14.0 non-owner
63.0 14.8 non-owner
この表は、芝刈
り機の所有の有
無でソートされて
いる。
114. どのようにデータを分割するか?
一つの変数について、データをソートする。ここでは敷地面
積でソートしてみる。
連続した値の中間点を見つける。
例えば、最初の中間点は、14.4になる。(小さい方から見た
最初の値14.0 と次の14.8の中間)
データを、敷地面積> 14.4 と敷地面積< 14.4に分割する。
この分割を評価したら、次の中間点15.4 に進む。(14.8 と
16.0 の中間)
この過程を全ての中間点について繰り返し、最適の分割点
を見つける。分割の評価法については、後で述べる。
118. Impurityとリカーシブな分割
分割で得られた長方形について、分割の評価を与える指
標を計算する。この指標はImpurityと呼ばれ、次に見
るようにいくつかの計算法がある。
計算のそれぞれのステージで、可能な全ての分割と、全
ての変数について、この指標Imprurityを計算する。
この指標が最大になるような分割を選び、次のステージに
進む。
分割点は、Tree上のNodeになる。
ここで紹介しているCHARTというアルゴリズムでは、これ
以上分割ができなくなるまで分割を続ける。すなわち、与
えられたデータが、すべてLeaf Nodeに収まったときに、
この処理は終わる。
119. Impurinity
分割の評価1: Gini Index
m個のデータを含んだ長方形AのGini Index
I(A) = 1 -
pk = 長方形A に含まれるデータのうち、クラス
k に属するデータの割合
I(A) = 0 全てのデータが同じクラスに属する
時
最大値全てのクラスが、均等に含まれている
時(= 0.50 二分木での最大値)
121. Leaf Node(終端)のラベルを決める
Leaf Nodeのラベルは、それに含まれるデータの
「投票」とCut Offの値によって決められる。
それぞれのLeaf Node内のデータは、訓練用
データから来る。
デフォールトのCut Off の値は、0.5である。すな
わち、Leaf Nodeのラベルは、多数を占めるクラ
スの名前になる。
Cutoff = 0.75にすれば、そのLeafを”1”と名付け
るためには、そのLeaf内に、75%以上の“1” デー
タがなければいけないことになる。
122. Decision Treeの「枝刈り」
こうして得られたTreeは、Test用のデータには、
完全に一致しているのだが、予測用に使おうとす
ると、Test用データ固有のノイズを拾って、むしろ
正確に予測できないという問題が起きる(Over
Fitting)。
そこで、CARTでは、いったん組み上げたTreeを、
ある基準で「枝刈り」をして、Treeを小さなものに
する。
その基準をCost Complexity という。
123. Cost Complexity
CC(T) = Err(T) + a L(T)
CC(T) = Tree Tのcost complexity
Err(T) = 間違って分類されたデータの割合
a = ユーザーによって設定されたTreeのサイズに応
じたペナルティ
与えられたサイズのTreeの中で、CCが一番小さ
い値をとるTreeを選ぶ。
これを、それぞれのサイズのTreeに適用する。
124. 数値予測とDecision Tree
Decision Treeのメリットの一つは、同じ考えの
モデルを使って、今まで見たようなクラス分けだけ
ではなく、数値予測もできることである。ただ、次
のような点で、クラス分けとは異なっている。
予測は、長方形内のターゲット変数のとる値の平
均として計算される。
Impurityは、Leafの平均からの誤差の平方和で
測られる。
パフォーマンスは、RMSE (root mean squared
error)で、計測される。
125. X2<0.3
4
X1<0.0
9
w2
w1
w2
X2<0.8
3
X2<0.5
6
X1<0.5
6
w1
w2 w1
X1<0.2
7
X1<0.8
9
w2 w1
127. Boosted Decision Tree
Fermi Lab
http://www-boone.fnal.gov/slides-talks/
conf-talk/yang/boosting-ccast.ppt
128. The MiniBooNE Detector
• 12m diameter tank
• Filled with 800 tons
of ultra pure mineral oil
• Optically isolated inner
region with 1280 PMTs
• Outer veto region with 240
PMTs.
11.6-10,2006 H.J.Yang - CCAST Workshop 128
130. ANN vs BDT-Performance/Stability
30 variables for training
10 Training Samples(30k/30k):
selected randomly from 50000 signal
and 80000 background events.
Testing Sample:
54291 signal and 166630 background
Smearing Testing Sample:
Each Variable and testing event is
smeared randomly using the formula,
V_ij = V_ij * ( 1 + smear*Rand_ij )
Where Rand_ij is random number with
normal Gaussian distribution.
11.6-10,2006 H.J.Yang - CCAST Workshop 130
132. Support Vector Machine
Christopher Manning and Pandu Nayak
CS 276 :Information Retrieval and Web Search
http://web.stanford.edu/class/cs276/
133. History
The Study on Statistical
Learning Theory was started
in the 1960s by Vapnik
Statistical Learning Theory is
the theory about Machine
Learning Principle from a
small sample size.
Support Vector Machine is a
practical learning method
based on Statistical Learning
Theory
A simple SVM could beat a
sophisticated neural
networks with elaborate
features in a handwriting
recognition task.
137. denotes +1
denotes -1
f(x,w,b) = sign(w x + b)
このどれでもいい
のだが、...
どれが一番いいの
だろう?
線形のClassifiers
138. denotes +1
denotes -1
f(x,w,b) = sign(w x + b)
+1クラスへの
誤った分類
線形のClassifiers
このデータをどの
ように分類する
か?
139. denotes +1
denotes -1
f(x,w,b) = sign(w x + b)
線形のClassifier
のマージンを、そ
の境界がデータ
の点にぶつかるま
で増やすことので
きる幅として定義す
る
.
線形のClassifiers
140. denotes +1
denotes -1
f(x,w,b) = sign(w x + b)
最大マージン
Classifierは、
最大のマージンを
持つClassifierに
他ならない。
これが一番単純な
SVM(LSVM)と呼ば
れるものだ。
Linear SVM
Support Vectors
は、マージンが
迫っているデータ
点である。
1. マージンを最大にすることは、直感的に
もPAC理論的にも正しい。
2. このことは、Support Vectorだけが重要
であることを意味する。それ以外の訓練
用データは、無視できる。
3. 経験的には、これはとてもうまく働く。
最大のマージン
141. Sec. 15.1
141
マージンの幾何
超平面に最も近いデータの点がSupport Vector。
マージンρ は、クラスのSupport Vector の間の分離幅
x ρ
r
x′
w
r: の計算
点線x’−x は、決定境界と垂直だから
wとは平行である。その単位ベクトルは
w/|w|, だからこの直線は、rw/|w|。
x’ = x – yrw/|w|で、
x‘ はwTx’+b = 0を満たすので、
wT(x –yrw/|w|) + b = 0
|w| = sqrt(wTw) を使えば、
wTx –yr|w| + b = 0
これをrについて解けば、r が求まる。
r = y(wTx + b)/|w|
142. 142
数学的に見たLinear SVM
線形分離が可能な場合
全てのデータが、超平面から少なくとも距離1だけ離れていると仮定しよ
う。この時、次の二つの条件式が訓練用データ{(xi ,yi)} について成り立つ。
wTxi + b ≥ 1 if yi = 1
wTxi + b ≤ −1 if yi = −1
Support vectorにとっては、不等号は等号になる。
先に見たように、超平面からの全てのサンプルの距離は、次の式であら
わされるので、
w x b
マージンの値は、次のようになる
2
w
r =
w
r y
T +
=
Sec. 15.1
143. wTxa + b = 1
143
Linear Support Vector Machine (SVM)
仮説
wT x + b = 0
そのほかのスケールからの条件
mini=1,…,n |wTxi + b| = 1
これから、次の式が導かれる
wT(xa–xb) = 2
ρ = ||xa–xb||2 = 2/||w||2
wT x + b = 0
wTxb + b = -1
ρ
Sec. 15.1
144. が最大となり、かつ全ての{(xi , yi)}で、
144
Linear SVMs Mathematically (cont.)
こうして、二次の最適化問題を定式化できる
次の条件を満たすw とb をみつけよ。
2
w
= r
wTxi + b ≥ 1 if yi=1; wTxi + b ≤ -1 if yi = -1
より良い定式化は(min ||w|| = max 1/ ||w|| なので):
次の条件を満たすw とb をみつけよ。
Φ(w) =½ wTw は、最小となり;
全ての{(xi ,yi)}について、yi (wTxi + b) ≥ 1
Sec. 15.1
145. 最適化問題を解く
次の条件を満たすw とb をみつけよ。
Φ(w) =½ wTw は、最小となり;
全ての{(xi ,yi)}について、yi (wTxi + b) ≥ 1
線形の制約条件に従属した二次関数を最適化する必要が有る
二次の最適化問題は、数学的にはよく知られた問題で、それを解くため
の多くの解法が知られている。
その解法には、最初の問題の全ての制約条件に関連するラグランジェ
の未定乗数を持つ双対の問題を構成するという解法が含まれている。
次の条件を満たすα…αをもとめよ。
1N Q(α) =Σα- ½ΣΣααyyxTxは、最大値を取り、かつ、
i ijiji
j (1) Σαiyi = 0
(2) αi ≥ 0 for all αi
146. 最適化問題の解法
この解法は、次の形をしている。
w =Σαiyixi b= yk- wTxk for any xk such that αk 0
それぞれの非ゼロのαi は、対応するxi が、support
vectorであることを示している。
この時、分割関数は、次の形をしている。
f(x) = Σαiyixi
この形は、テストデータx とsupport Vector xi の内積で
決まることに注意しよう。このことに、我々はのちに立ち返る
だろう。
同様に、この最適化問題を解くということは、訓練用データの
全てのペアxi
Txj について、その内積を計算することを含ん
でいることに留意しよう。
Tx + b
147. ノイズのあるデータセット
Hard Margin: これまでは、全
てのデータが正しく分類される
ことを要求してきた。
- 分類で、エラーはない
もしも、訓練用データがノイズ
を含んでいたら?
解1: 強力なカーネルを使う
denotes +1
denotes -1
OVERFITTING!
148. Soft Margin Classification
分離が難しく、あるいは、ノイズが多いデータには、誤分
類を許すように、ゆるい(slack)変数ξi を追加するこ
とができる。
e11
e7
e2
二次の最適化の基準はどう
なるか?
次の式を最小化する
R
C εk
k
1
1
w .
w
2
149. Hard Margin v.s. Soft Margin
古い定式化
Find w and b such that
Φ(w) =½ wTw is minimized and for all {(xi ,yi)}
yi (wTxi + b) ≥ 1
Slack変数込みの新しい定式化
Find w and b such that
Φ(w) =½ wTw + CΣξi is minimized and for all
{(xi ,yi)}
yi (wTxi + b) ≥ 1- ξi and ξi ≥ 0 for all i
パラメータC は、オーバー・フィッティングをコントロールする
ものと考えればいい。
150. Linear SVMs: まとめ
分類子は、分離超平面である。
もっとも重要な訓練用データは、Support Vectorである。それは、超
平面を定義する。
二次最適化アルゴリズムは、どの訓練用データがSupport Vectorで
あるかを、非ゼロのラグランジェ未定乗数αi で決めることができる。
問題のデュアルな定式化でも、この解でも、両方で、訓練用データはドッ
ト積の内部にしか現れない。
Find α1…αN such that
Q(α) =Σαi - ½ΣΣαiαjyiyjxi
Txj is maximized and
(1) Σαiyi = 0
(2) 0 ≤ αi ≤ C for all αi
Tx + b
f(x) = Σαiyixi
152. Non-linear SVMs: 特徴空間
一般的なアイデア: 元の入力空間は、そこでは訓練用デー
タが分離可能である、ある高次元の特徴空間に、常に、写像
されることができる。
Φ: x → φ(x)
153. The “Kernel Trick”
線形分類子は、ヴェクター間のドット積(内積) K(xi,xj)=xi
Txjに依拠している
もし、全てのデータが、ある変形Φ: x → φ(x) で高次元空間に写像される
のなら、ドット積は次のようになる。
K(xi,xj)= φ(xi) Tφ(xj)
kernel function は、ある拡張された特徴空間で内積に対応する関数である
例:
2次元ベクトルx=[x1 x2]に対し、K(xi,xj)=(1 + xi
Txj)2 とする。
K(x,x)= φ(x) Tφ(x)を証明する必要がある。
ijijK(x,x)=(1 + xTx)2
iji
j,
= 1+ xi1
2xj1
2 + 2 xi1xj1 xi2xj2+ xi2
2xj2
2 + 2xi1xj1 + 2xi2xj2
= [1 xi1
2 √2 xi1xi2 xi2
2 √2xi1 √2xi2]T [1 xj1
2 √2 xj1xj2 xj2
2 √2xj1 √2xj2]
= φ(xi) Tφ(xj), ここで、φ(x) = [1 x1
2 √2 x1x2 x2
2 √2x1 √2x2]
154. どの関数がKernelになるか?
ある関数K(xi,xj) に対して、
K(xi,xj)= φ(xi) Tφ(xj)をチェックするのは退屈である。
Mercerの定理を使う。
全てのsemi-positive definiteな対称関数はKernelである。
Semi-positive definiteな対称関数は、次のsemi-positive
definite な、対称Gram行列に対応している。
K(x1,x1) K(x1,x2) K(x1,x3) … K(x1,xN)
K(x2,x1) K(x2,x2) K(x2,x3) K(x2,xN)
… … … … …
K(xN,x1) K(xN,x2) K(xN,x3) … K(xN,xN)
K=
155. Kernel Functions の例
線形: K(xi,xj)= xi
Txj
p乗の多項式: K(xi,xj)= (1+ xi
Txj)p
Gaussian (radial-basis function network):
i j
( , ) exp( 2
Sigmoid: K(xi,xj)= tanh(β0xi
)
Txj + β1)
2
2
i j
x x
x x
K
157. x 2
x 2
x x
1 2
( , , 2 ) 1 2
160. Microsoft Azure
Machine Learning
強力なクラウドベースの予測分析
新しいユーザーにも、熟練のユーザーにも適した
設計
MS Research、Xbox、Bing で実証済みのア
ルゴリズム
オープンソースのR 言語を高度にサポート
ビッグデータソリューション用のHDInsight へ
のシームレスな接続
モデルを運用環境にわずか数分でデプロイ
http://azure.microsoft.com/ja-jp/services/machine-learning/
161. Azure ML Studioの提供
機械学習モデルの構成
Azure ML Studio上で、モジュールをワイアリングするこ
とで、簡単に機械学習モデルが構成できる。
機械学習モデルにとって、もっとも基本的なモジュールは、
モデルのアルゴリズムを提供するモジュール(多様なアル
ゴリズムが用意されている)と、モデルを訓練するTrain
Model モジュールと、訓練済みの完成したモデルである
Score Modelモジュールの三つである。
三つのモデルのワイアリングの様子を、次の図で、示した。
162. Azure MLの基本的な構成
Algorithm
Train Model
Score Model
①
モデルのアルゴ
リズムを選択する
②
モデルを訓練用
データで訓練する
③
訓練されたモデル
をデータで動かす
訓練用
データ
データ
学習
学習済
163. Azure ML Studioの提供
「実験」というコンセプト
Azure ML Studioは、機械学習モデルの「実験」の場と
いう位置付けを持っている。
複数のアルゴリズムのモデルの、複数のデータセット上で
の振る舞いを、実験として比較することが簡単にできる。
実験を繰り返して、試行錯誤で、モデルのチューンアップ
をはかるというアプローチは、とても強力である。
実験にもいくつかのステージがある。訓練段階の実験は、
訓練終了後のScore Model中心のScore段階の実験に
移行する。
Azure ML Studioは、実験の世界に閉じているわけで
はない。実験が終わったら、そのモデルをAzure上の
Webサービスとして、すぐにデプロイできる。
169. Part III
サンプルと使用されたモデル
クレジットのリスク予測Support Vector Machine (SVM) ,
Boosted Decision Tree
自転車の時間貸しboosted decision tree regression
CRMタスクboosted decision tree classifiers
飛行機の遅れの予測Two-class boosted decision tree,
two-class logistic regression
ネットワーク侵入検出boosted decision tree
感情分析Linear regression, two-class logistic
regression, multiclass logistic regression classifier
類似した会社を見つけるk-Means clustering
学生の成績boosted decision tree
172. 開発の手順
1. ML workspaceを作成する
2. データをアップロードする
3. 新しい「実験」を作成する
4. モデルを訓練し、評価する
5. Web serviceに公開する
6. Web serviceにアクセスする
175. データセットの特徴
この実験では
http://archive.ics.uci.edu/ml/datasets/Statlog+
(German+Credit+Data) のUCI Statlog (German
Credit Card) データセットを利用している。このウエブサ
イトから、german.dataファイルを使う。
このデータセットは、一群の属性で記述された人間を、ク
レジット・リスクが高いか低いかに分類する。それぞれの
サンプルは、人間を表しており、20の特徴がある。それら
の特徴は、数値であったり、カテゴリーであったり、クレ
ジット・リスクを表す二値ラベルだったりする。
177. Attribute 1: (qualitative)
Status of existing checking
account
Attribute 2: (numerical)
Duration in month
Attribute 3: (qualitative)
Credit history
Attribute 4: (qualitative)
Purpose
Attribute 5: (numerical)
Credit amount
Attibute 6: (qualitative)
Savings account/bonds
Attribute 7: (qualitative)
Present employment since
Attribute 8: (numerical)
Installment rate in
percentage of disposable
income
Attribute 9: (qualitative)
Personal status and sex
Attribute 10: (qualitative)
Other debtors / guarantors
Attribute 11: (numerical)
Present residence since
Attribute 12: (qualitative)
Property
Attribute 13: (numerical)
Age in years
Attribute 14: (qualitative)
Other installment plans
Attribute 15: (qualitative)
Housing
Attribute 16: (numerical)
Number of existing credits
at this bank
Attribute 17: (qualitative)
Job
Attribute 18: (numerical)
Number of people being
liable to provide
maintenance for
Attribute 19: (qualitative)
Telephone
Attribute 20: (qualitative)
foreign worker
180. データ・フォーマットの変換
元のデータセットには、空白で区切られた形式が含まれて
いる。このデータセットをCSV形式に変換して、ML
Studioにアップロードする。
この変換は、Powershellを使えば、次のようにすればで
きる。
cat dataset.txt | %{$_ -replace " ",","} | sc german.csv
あるいは、Unixのsedコマンドを使う。
sed 's/ /,/g' german.data > german.csv
187. データを準備する
最初に、Metadata Editorを
使って、元のデータセットのカラム
名を、UCIサイトからとったデータ
の記述を利用して、意味が分かり
やすい名前に置き換える。
新しいカラム名は、Metadata
Editorの新しいカラム名のフィー
ルドに、コンマ区切りで置かれる。
188. Metadata Editor
New Column Field
1. Status of checking
account
2. Duration in months
3. Credit history
4. Purpose
5. Credit amount
6. Savings account/bond
7. Present employment
since
8. Installment rate in
percentage of disposable
income
9. Personal status and sex
10. Other
debtors/guarantors
11. Present residence since
12. Property
13. Age in years
14. Other installment plans
15. Housing
16. Number of existing
credits at this bank
17. Job
18. Number of people being
liable to provide
maintenance for
19. Telephone
20. Foreign worker
21.Credit risk
191. 訓練用とテスト用のデータの生成
高いリスクの人を低いと誤って分類した場合のコストは、
低いリスクの人を高いリスクと誤って分類した場合のコス
トより、5倍ほど高いので、このコスト関数を反映した新し
いデータセットを生成する。
新しいデータセットでは、高いリスクのサンプルは、5回複
製され、一方、低いリスクのサンプルは、そのままにして
おく。次のページのRスクリプトを実行すればよい。
訓練用とテスト用のデータセットの分割は、同じデータが、
訓練用とテスト用の両方に含まれるのを防ぐために、この
複製の前に行う。
192. R Script モジュールの実行
dataset1 <- maml.mapInputPort(1)
data.set<-dataset1[dataset1[,21]==1,]
pos<-dataset1[dataset1[,21]==2,]
for (i in 1:5) data.set<-rbind(data.set,pos)
maml.mapOutputPort("data.set")
195. 実験の目的とデータ分割
この実験では、モデルを生成する二つのアプローチ、すな
わち、元のデータセットでの訓練と、複製されたデータセッ
トでの訓練の二つを比較する。
両方のアプローチで、問題のコスト関数に揃えるために、
テストは、複製されたテストデータを利用する。
データセットの分割と複製の最終的なワークフローは、次
のようになる。このワークフローでは、Splitモジュールの
左側の出力は訓練用データで、右側の出力は、テスト用
データである。訓練用データは、Rスクリプトの実行がある
のとないのがある。それは、複製のあるなしに対応してい
ることに注意。
198. モデルを選択する
この実験では、訓練用データのサンプルの複製の効果の
チェックと合わせて、二つのアルゴリズム: Support
Vector Machine (SVM) とBoosted Decision
Treeのパフォーマンスの比較を行う。
こうして、次の四つのモデルを生成する。
1. SVM, 元のままのデータで訓練
2. SVM, 複製したデータで訓練
3. Boosted Decision Tree,元のままのデータで訓練
4. Boosted Decision Tree,複製したデータで訓練
199. モデルを選択する
Boosted decision trees は、どんなタイプの特徴で
も、うまく働く。
しかし、SVMモジュールは、線形のクラス分けを生み出
すので、そのモデルは、すべての特徴が同じスケールを
持つ時に、最良のテストエラーを返す。すべての特徴を同
一のスケールに変換するために、Scalingモジュールの
Transform Dataで、tanh変換を使う。この変換は、す
べての数値で表される特徴を、[0, 1]の範囲に変換する。
文字列で表される特徴は、SVMモジュールによって、カテ
ゴリー特徴に変えられ、その後で、0/1の二値の特徴に変
えられる。だから、文字列で表される特徴は、わざわざ変
換する必要はないことに注意。
201. モデルをテストし、評価する
学習アルゴリズムを、Two-Class Support Vector
Machineモジュールか、Two-Class Boosted
Decision Treeモジュールで初期化する。その後、
Train Model モジュールを使って、実際のモデルを生
成する。
これらのモデルは、Score Model モジュールに利用さ
れて、テスト・サンプルの成績を生み出す。
これらのモジュールを結合して、SVNと複製された訓練用
データを使ったワークフローのサンプルは、次のようにな
る。
Train Modelは、訓練用データに結合され、Score
Modelは、テスト用データと結合されることに注意。
204. モデルを評価する
実験の評価段階では、先の四つのモデルの正確性を計
算する。この目的のために、Evaluate Model モ
ジュールを利用する。
このモジュールは、すべてのサンプルが誤ったクラス分け
に対して同一のコストを持つ場合のみ、正確性を計算でき
る。しかし、最初に、コストが高いサンプルを複製してある
ので、Evaluate Model モジュールによる正確性の計
算は、こうしたコストを反映した次の値になる。
n+とn-は、元のデータ中の正負のサンプルの数。
e+とe-は、同じく、誤分類した正負のサンプルの数。
205. モデルを評価する
Evaluate Model
Evaluate Modelモジュールは、二つの訓練済モデルを
比較する。それで、一つのEvaluate Modelモジュールを
二つのSVMモデルの比較に用い、もう一つのEvaluate
Modelモジュールを、二つのboosted decision tree
モデルの比較に用いる。
Evaluate Model は、多数の計量を含んだ単一行の
テーブルを生み出す。
Mean Absolute Error Root
Mean Squared Error
Relative Absolute Error
Relative Squared Error
Coefficient of Determination
207. モデルを評価する
4つの全ての結果を見るために、これらを一つのテーブルの
中に結合する。Evaluate Model は、多数の計量を含ん
だ単一行のテーブルを生み出す。
Add Rowモジュールを使って、全ての結果を一つのテー
ブルに結合する。
その後、Execute R ScriptのRスクリプトを使って、4つ
のモジュールの正確さを記入する。
最終的なテーブルの行の名前は、手で入力される。最後に、
Project Columns モジュールを使って関係のない数字
を削除する。
208. 二つの評価モデルの出力を
一つのテーブルにまとめる
# Map 1-based optional input ports to variables
dataset <- maml.mapInputPort(1)
a <- matrix(c("SVM","weighted",
"SVM","unweighted",
"Boosted Decision Tree","weighted",
"Boosted Decision Tree","unweighted"),
nrow=4,ncol=2,byrow=T)
data.set <- cbind(a,dataset)
names(data.set)[1:2] <- c("Algorithm","Training”)
maml.mapOutputPort("data.set")
R Script
215. Azure MLの基本的な構成
Algorithm
Train Model
Score Model
①
モデルのアルゴ
リズムを選択する
②
モデルを訓練用
データで訓練する
③
訓練されたモデル
をデータで動かす
訓練用
データ
データ
学習
学習済
223. Step 5
Webサービスに公開する
スコア用の実験を準備する
訓練用実験からスコア用実験に変換する
サービスの入力と出力を選択する
Webサービスに公開する
Webサービスをテストする
Webサービスを実際のサーバーに移す
224. スコア用の実験を準備する
我々のモデルをWebサービスとして公開するための準備
として、二つのことをする必要がある。
第一に、実験のフェーズを、訓練用の実験からスコア用の
実験に変更する必要がある。公開用のサービスには、も
はや訓練は必要ない。それは、ユーザーの入力をスコア
する。訓練したモデルを保存して、訓練用の実験に使った
コンポーネントを全て消去する必要がある。
第二に、Azure MLのWebサービスは、ユーザーから入
力を受け取り、結果を返すので、実験の中でこの入力と出
力を指定しなければならない。
225. 訓練用の実験からスコア用の実験に変更する
boosted tree modelが、良い成績を収めたので、それ
を利用することを決めたので、最初に行うことは、SVCの
訓練用モデルを削除することである。
Two-Class Support Vector Machineを削除
それに接続していた、Train Model とScore Modelを
削除
Transform Data By Scalingモジュールを削除
226. 訓練用の実験からスコア用の実験に変更する
訓練したboosted tree model を保存する。それから、訓
練のために使った残りのモジュールを削除し、訓練されたモ
デルに置き換えることができる。
残ったTrain Modelモジュールを右クリックで開き、Save
as Trained Modelを選択する。Trained Modelの名前を
入力する。例えば、“Credit Risk Prediction”にする。
いったん、Trained Modelが保存されると、それはモ
ジュール・パレットに現れ、別の実験で使うことができる。
Two-Class Boosted Decision Tree とTrain Model
モジュールを削除する。
Credit Risk Prediction モデルをScore Modelモジュー
ルの左側の入力に接続する。
228. Credit riskカラムの削除
もうひとつ。もとのクレジット・カード・データは、Credit
Riskカラムを含んでいた。このカラムは、モデルがこのカ
ラムの値を予測できるように訓練するために、Train
Modelに渡されていた。しかし、モデルは今や訓練されて
いるので、このカラムをTrained モデルに渡す必要はな
い。このカラムをデータの流れから取り除くには、Project
Columnモジュールを使えばいい。
Project Column モジュールを見つけて、キャンバスに
ドラッグする。
229. Project Columnモジュールでの作業
このモジュールを、Metadata Editor モジュールの出力
につなげる。
Project Columns モジュールを選んで、Launch
column selectorをクリックする。
新しいドロップメニューから“Exclude column names”
を選び、テキスト・フィールドに、“Credit risk” と入れ、
OKをクリックする。
Connect the output of the Project Columns モ
ジュールの出力をScore Model モジュールの右側の入
力に接続する。
231. サービスの入力と出力を選択する
もとのモデルでは、スコアされるべきデータは、Score
Model モジュールの右の入力ポート(“Dataset”) に渡
され、スコアされた結果は、出力ポート(“Scored
Dataset”)に現れていた。サービスが走っている時も、
ユーザーのデータと結果は、同じポートでいい。
Score Model モジュールの右の入力ポートを右クリック
して、Set as Publish Inputを選ぶ。ユーザー・デー
タは、特徴ベクターのすべてのデータを含んでいる必要が
ある。
出力ポートを右クリックして、Set as Publish Output
を選ぶ。この出力は、サービスによって返されることにな
る。この出力は、特徴ベクターと予測されたクレジット・リス
クの予測とスコアリングの確率値を含んでいる。
233. なぜ、UCI German Credit Card Data データセットが
残されているのか、疑問を持つかもしれない。サービスは、
ユーザーデータを使うので、もとのデータセットは必要ない
はずだから。確かに、サービスは元のデータを使ってはい
ない。
ただ、これらのデータのスキーマが必要なのだ。このス
キーマは、カラムがいくつあって、どのカラムが数値をとる
のかといった情報を含んでいる。このデータは、ユーザー
のデータを解釈するのに必要なのだ。このコンポーネント
は残しておく。
最後に、実験を走らせる。(Runをクリック)
このモデルがちゃんと動いていることをチェックするには、
Score Model モジュールの出力を右クリックして、
Visualizeを選ぶ。元のデータが見えるはず。
234. Webサービスを公開する
我々の実験から導かれたWebサービスを公開するには、
キャンバスの下のPUBLISH WEB SERVICE をクリック
してOKを押す。ML Studioは、この実験をML staging
サーバー上で、Webサービスとして公開する。サービスの
ダッシュボードが現れるはずだ。
いったん公開した後で、例えば、モデルを変えたいという
ことで、このWebサービスを更新するには、以前に保存し
た訓練用の実験を編集して、パラメーターをいじって、
trained modelとして保存すればいい。スコア用の実験
を再度開けば、何かが変わっているという通知が現れる
だろう。こうして実験を更新できる。
実験を公開すれば、Webサービスは、更新されたモデル
に置き換わる。
240. Webサービスをテストする
DASHBOARD ページで、Staging Servicesの下の
Testリンクをクリックする。ダイアログがポップアップして、
サービスへの入力データを聞いてくる。元のGerman
credit risk データセットと同じカラムが出ているはず。
データセットをいれて、OKを押す。
このWebサービスで生成された結果がダッシュボードの
下に表示される。
241. Webサービスを、実際のサーバーに昇格する
これまで、サービスをML stagingサーバー上で走らせて
きた。実際のサーバーに移行する準備ができたら、実際
のサーバーへの昇格をリクエストできる。
CONFIGURATION タブで、READY FOR
PRODUCTION? の次のYESを押す。IT管理者に通知
が飛んで、管理者が、それを実際のサーバーに昇格させ
る。
244. Webサービスにアクセスする
Webサービスとして利用できるためには、ユーザーは、
サービスにデータを送り、結果を受け取ることができなけ
ればならない。このWebサービスは、Azure Webサービ
スで、次の二つの方法でデータのやり取りができる。
Request/Response – ユーザーはクレジット・データ
の一組のデータをHTTPプロトコルで送り、サービスは一
組の結果で応える。
Batch Execution – ユーザーは、サービスに、一つ
以上のクレジット・データを含んでいるAzure BLOBの
URLを送り、サービスは、結果を別のBLOBにいれ、その
URLを返す。
245. Webサービスにアクセスする
WebサービスのDASHBOARD上に、開発者がこの
サービスにアクセスするコードを書くのを支援する、二つ
の情報リンクがある。API help pageの
REQUEST/RESPONSE あるいは、BATCH
EXECUTION のリンクを開けば、サンプルコードが見ら
れる。
このページには、R, C#, Pythonのサンプルが含まれて
いる。以下に、このWebサービスにアクセスするRコード
の例を示す。
246. library("RCurl")
library("RJSONIO")
h = basicTextGatherer()
req = list(Id="score00001",
Instance=list(FeatureVector=list(
"row.names"= "0",
"Status of checking account"= "0",
"Duration in months"= "0",
"Credit history"= "0",
"Purpose"= "0",
"Credit amount"= "0",
"Savings account/bond"= "0",
"Present employment since"= "0",
"Installment rate in percentage of disposable income"= "0",
"Personal status and sex"= "0",
"Other debtors"= "0",
"Present residence since"= "0",
"Property"= "0",
"Age in years"= "0",
"Other installment plans"= "0",
"Housing"= "0",
247. "Number of existing credits"= "0",
"Job"= "0",
"Number of people providing maintenance for"= "0",
"Telephone"= "0",
"Foreign worker"= "0",
"Credit risk"= "0"
),GlobalParameters=fromJSON('{}')))
body = toJSON(req)
api_key = "abc123"
# You can obtain the API key from the publisher of the web service
h$reset()
curlPerform(
url = "http://xxx.cloudapp.net/workspaces/xxx/services/xxx/score",
httpheader=c('Content-Type' = "application/json",
'Authorization' = "Bearer " + api_key),
postfields=body,
writefunction = h$update,
verbose = TRUE
)
result = h$value()
251. データ
このUCI Bike Rentalデータセットは、ワシントンDCで、
自転車レンタルのネットワークを展開しているCapital
Bikeshare会社の実データに基ずいている。データセット
は、2011年から2012年の、毎日の一時間毎に一つの
行を持ち、総計で17379行ある。一時間に貸し出される
自転車の範囲は、1台から977台までである。
252. モデル
2011年のデータを訓練用データとして使い、2012年の
データをテスト用データとして使用する。
次の四つの特徴のセットを比較する。
A. 予想される日の、天候+ 休日・平日・週末という特徴
B. 直前の12時間に貸し出された自転車の数
C. 同じ時間帯で、直前の12日間で貸し出された自転車の数
D. 同じ時間帯・同じ日の条件で、以前の12週間で貸し出さ
れた自転車の数
253. モデルの選択
特徴Bは、自転車に対する直近の要求を反映し、特徴C
は、特定の時間帯での自転車に対する要求を反映する。
特徴Dは、特定の時間、週の特定の日の自転車に対する
要求を反映する。
ラベル(貸し出し数)は、実数値をとるので、回帰モデルを
使うことができる。同時に、特徴の数が(100以下で)比較
的少なく、疎ではないので、決定境界は、おそらく非線形
になる。これらに基づいて、boosted decision tree
regressionアルゴリズムを利用すると決める。
254. 結果
FEATURES
MEAN ABSOLUTE
ERROR
ROOT MEAN
SQUARE ERROR
A 89.7 124.9
A+B 51.2 86.7
A+B+C 48.5 83.7
A+B+C+D 48.8 83.2
最良の結果は、A+B+CとA+B+C+Dで与えられる。
驚くべきことに、特徴Dは、A+B+Cに対して、ほとんど
重要な改善をもたらさない。
259. モデル
唯一のデータの事前処理は、欠けている値を処理するこ
とだけである。文字列型の特徴の欠損値は”0”で置き換
える。ほとんどすべての数値型の特徴は、非負の値を持
つ。数値型の特徴の値には1を加え、欠損値は0で置き換
える。こうして、元の実際の値0と、欠損値を意味する0と
を区別することができる。最初に、数値型の特徴について
のみ、数学的操作の(+1)を適用する。その後で、すべて
の欠損値を0(文字型の場合には“0”)で置き換える。
数値型と文字列型の両方の特徴があるので、boosted
decision tree classifierを使う。