Google Cloud Platform Japan Blog
最新情報や使い方、チュートリアル、国内外の事例やイベントについてお伝えします。
BigQuery、パブリック データセット、TensorFlow で需要を予測する
2016年6月7日火曜日
* この投稿は米国時間 5 月 23 日、Google Cloud Platform の Big Data & Machine Learning Professional Services である Lak Lakshmanan によって投稿されたもの(
投稿はこちら
)の抄訳です。
需要の予測はあらゆるビジネスで行われています。レストランのオーナーなら、どんな材料を仕入れ、調理場に何人の料理人を配置するかを決めるために、明日の来店客数と注文品を予測する必要があります。シャツを販売している場合は、メーカーからどの色のシャツを何枚ずつ仕入れるかを事前に決めておく必要があるかもしれません。
このような場合、通常、企業のオーナーは直感(例 : きっとオムレツよりもスフレの注文の方が多い)や経験則(例 : クリスマス前後には赤のタートルネックの在庫を増やすこと)によって需要を予測しています。
直感や経験則の問題点は、まず定量的にならないことです。スフレが何皿多く注文されるのでしょうか。赤のタートルネックの在庫を何枚増やせばよいのでしょう。
では、これらに頼らず機械学習を使えば、需要をもっと正確に予測できるのでしょうか。ビジネスの履歴データが十分にあれば、答えはイエスです。この投稿では、その方法を明らかにします。
機械学習
まず第 1 に、機械学習とは何でしょうか。通常、コンピュータに何かをしてもらいたいときは、明示的なルール セットでその仕事を行うようにコンピュータをプログラムしなければなりません。
たとえば、製造ラインのネジのイメージをコンピュータに見せて、そのネジに異常があるかどうかを調べさせたければ、判断のためのルールをコンピュータに与える必要があります。このネジは曲がっていないか、破損していないか、変色していないかといったことです。
機械学習の場合は問題を解くのが逆になります。ねじが不良かもしれないあらゆる論理的なルールをこちらで用意するのではなく、コンピュータにあらゆるデータを見せるのです。
たとえば、良品のねじのイメージを 5,000 枚、人間の作業者が何らかの理由で廃棄したねじのイメージを 5,000 枚見せます。そして、不良品を見分ける方法をコンピュータに考えさせます。コンピュータは “機械” であり、データに基づいて判断方法を “学習” します。
ニューヨーク市のタクシー需要の予測
あなたはニューヨーク市にあるタクシー会社の配車責任者で、次の木曜日に何人の運転手に出社してもらうかを決めなければならないものとします。
あなたは、ニューヨークのタクシーに関する何らかの知識を持っています。たとえば、需要は曜日によって変わる(木曜日の需要は月曜日の需要とは異なる)とか、木曜の天気予報によって変わるといったことです。これらが予測子となります。予測子とは、予測のために使う情報のことです。
何を予測したいのかということも、はっきりさせておかなければなりません。たとえば、特定の日に出勤を依頼するタクシー運転手の数を予測するものとしましょう。いつもと同じような割合でタクシー需要を手に入れられると想定し、それだけの数の運転手に出勤を依頼するものとします。これがあなたの機械学習問題です。
予測子とターゲット
Google BigQuery
パブリック データセットには、ニューヨーク市全体のタクシー利用実績のデータ(nyc-tlc:green テーブル)と NOAA 気象データ(fh-bigquery:weather_gsod テーブル)が揃っています。これを入力データセットとして使うことにします。
タクシー利用実績は実際の需要の代用品に過ぎません。タクシーの数が足りなかったり、タクシーが需要のある地域から市内の他の地域に出て行ったりしていれば、実際に走っているタクシーよりも需要は多いかもしれません。
しかし、ニューヨークのタクシー市場が効率よく機能していると仮定すれば、このデータセットは出発点として役に立つはずです。タクシーの配車とは無関係だとか、天気以外の要素で配車を決めているという場合には、独自の履歴データを BigQuery にロードしてください。
Google Cloud Datalab
からは、天気データベースに対して BigQuery クエリを発行し、Python で使える形式で結果を受け取ることができます(詳しいコメント付きの
Datalab の完全なノートブック
は、GitHub から入手できます)。
同様に、
BigQuery
クエリを使用すれば、daynumber(1 年を通して何日目かを示すもので、たとえば daynumber=1 は元日になります)からその日のタクシー利用数が得られます。
天気と利用実績のデータセットをマージすると、機械学習に使用するデータセットが完成します。
これが私たちの履歴データです。この履歴データを使って、天気からタクシー需要を予測できるようにします。
ベンチマーク
機械学習を実行するときはベンチマークを用意しておくと役に立ちます。ベンチマークは、単純なモデルでも直感で得られた値でもかまいません。機械学習モデルと単純なモデルをテスト データセットに対して実行すれば、機械学習モデルがベンチマークよりも優れているかどうかを評価できます。
テスト データセットを作るには、すべての訓練データを集めたうえで、それを 80 対 20 に分割します。そして 80 % のデータでモデルを訓練し、残りの 20 % を使って機械学習モデルの需要予測がどれぐらい正確かを評価します。
ベンチマークとしては、たとえば全時間を通じてのタクシー需要が使用できます。ただの平均よりも正確な予測ができれば、機械学習モデルは “できるやつ” だと考えることができます。
モデルの性能は二乗平均平方根誤差(RMSE)で計測します。解決しようとしているビジネス問題に適切な尺度が他にあれば、それを使ってかまいません。たとえば、その日に出勤させた運転手の数が少なすぎたり多すぎたりしたために生じた売上げの減少を計算し、それを尺度として使用するのです。
平均を使ったときの RMSE が 12,700 なので、機械学習が目指す目標はこの値になります。つまり、RMSE を 12,700 よりも小さくしようということです。
TensorFlow
TensorFlow は、2015 年に Google が
オープンソース化
したソフトウェア ライブラリです。TensorFlow はニューラル ネットワーク、それも深いニューラル ネットワークを使って機械学習を行う点で優れています。ニューラル ネットワーク アーキテクチャは、
TensorFlow プレイグラウンド
で試すことができます。
下のコードを見ると怖じ気づいてしまうかもしれませんが、ほとんどはボイラープレートです(完全なコードについては
Datalab ノートブック
を参照してください。現在アルファ テスト中の
Google Cloud Machine Learning
は、Datalab で同じことをもっと単純に実行する方法を提供します)。
ここでは、隠れ層を 1 つ入れ(サンプル数が数百万もあるわけでなく、たかだか数百日分なので、階層の数を制限しています)、活性化関数としては
正規化線形関数(ReLU)
を使い、出力ノードは ID ノードに設定します(これは回帰問題であり、分類問題ではないためです)。
モデルを保存し、テスト データセットに対して実行してみると、ベンチマークよりも良い成績を出していることがわかります。
RMSE は 約 8,200 で、単純に平均を使ったときの 12,700 と比べてかなり良くなっています。
訓練したモデルの実行
ひとたびモデルを訓練してしまえば、新しい予測子データを対象にモデルを実行するのはごく簡単なことです。たとえば、今後 3 日間の天気予報データがあるとします。ニューラル ネットワークに予測子変数(曜日、最低・最高気温、降水量)を渡せば、今後 3 日間のタクシーの需要予測が返されます。
水曜日(day=4)には一部の運転手に休暇を取るよう指示し、木曜日(day=5)には全員に出勤するよう指示した方がよさそうです。通常、木曜は “鈍い” 日ですが(ニューヨークのタクシー需要は週末がピークです)、今度の木曜日は天候上の理由から需要が高くなると、機械学習モデルが言っているからです。
Google Cloud Platform(GCP)
によって需要予測の問題は特に簡単に解決できるようになりました。
Cloud Datalab
は、
BigQuery
、Pandas、TensorFlow と密に統合されたインタラクティブな Python ノートブックを提供しています。
GCP 上のパブリック データセット
には、NOAA による気象観測の履歴データが含まれています。
GCP とビッグデータ、機械学習機能についてもっと学びたい方は、
訓練コースへの登録
をお勧めします。
0 件のコメント :
コメントを投稿
12 か月間のトライアル
300 ドル相当が無料になるトライアルで、あらゆる GCP プロダクトをお試しいただけます。
Labels
.NET
.NET Core
.NET Core ランタイム
.NET Foundation
#gc_inside
#gc-inside
#GoogleCloudSummit
#GoogleNext18
#GoogleNext19
#inevitableja
Access Management
Access Transparency
Advanced Solutions Lab
AI
AI Hub
AlphaGo
Ansible
Anthos
Anvato
Apache Beam
Apache Maven
Apache Spark
API
Apigee
APIs Explore
App Engine
App Engine Flex
App Engine flexible
AppArmor
AppEngine
AppScale
AprilFool
AR
Artifactory
ASL
ASP.NET
ASP.NET Core
Attunity
AutoML Vision
AWS
Big Data
Big Data NoSQL
BigQuery
BigQuery Data Transfer Service
BigQuery GIS
Billing Alerts
Bime by Zendesk
Bitbucket
Borg
BOSH Google CPI
Bower
bq_sushi
BreezoMeter
BYOSL
Capacitor
Chromium OS
Client Libraries
Cloud API
Cloud Armor
Cloud Audit Logging
Cloud AutoML
Cloud Bigtable
Cloud Billing Catalog API
Cloud Billing reports
Cloud CDN
Cloud Client Libraries
Cloud Console
Cloud Consoleアプリ
Cloud Container Builder
Cloud Dataflow
Cloud Dataflow SDK
Cloud Datalab
Cloud Dataprep
Cloud Dataproc
Cloud Datastore
Cloud Debugger
Cloud Deployment Manager
Cloud Endpoints
Cloud Firestore
Cloud Foundry
Cloud Foundry Foundation
Cloud Functions
Cloud Healthcare API
Cloud HSM
Cloud IAM
Cloud IAP
Cloud Identity
Cloud IoT Core
Cloud Jobs API
Cloud KMS
Cloud Launcher
Cloud Load Balancing
Cloud Machine Learning
Cloud Memorystore
Cloud Memorystore for Redis
Cloud monitoring
Cloud NAT
Cloud Natural Language API
Cloud Networking
Cloud OnAir
Cloud OnBoard
cloud Pub/Sub
Cloud Resource Manager
Cloud Resource Manager API
Cloud SCC
Cloud SDK
Cloud SDK for Windows
Cloud Security Command Center
Cloud Services Platform
Cloud Source Repositories
Cloud Spanner
Cloud Speech API
Cloud Speech-to-Text
Cloud SQL
Cloud Storage
Cloud Storage FUSE
Cloud Tools for PowerShell
Cloud Tools PowerShell
Cloud TPU
Cloud Translation
Cloud Translation API
Cloud Virtual Network
Cloud Vision
Cloud VPC
CloudBerry Backup
CloudBerry Lab
CloudConnect
CloudEndure
Cloudflare
Cloudian
CloudML
Cluster Federation
Codefresh
Codelabs
Cohesity
Coldline
Colossus
Compute Engine
Compute user Accounts
Container Engine
Container Registry
Container-Optimized OS
Container-VM Image
Couchbase
Coursera
CRE
CSEK
Customer Reliability Engineering
Data Studio
Databases
Dbvisit
DDoS
Debugger
Dedicated Interconnect
deep learning
Deployment Manager
Developer Console
Developers
DevOps
Dialogflow
Disney
DLP API
Docker
Dockerfile
Drain
Dreamel
Eclipse
Eclipse Orion
Education Grants
Elasticsearch
Elastifile
Energy Sciences Network
Error Reporting
ESNet
Evernote
FASTER
Fastly
Firebase
Firebase Analytics
Firebase Authentication
Flexible Environment
Forseti Security
G Suite
Gartner
gcloud
GCP
GCP Census
GCP 移行ガイド
GCP 認定資格チャレンジ
GCPUG
GCP導入事例
gcsfuse
GEO
GitHub
GitLab
GKE
Go
Go 言語
Google App Engine
Google Apps
Google Certified Professional - Data Engineer
Google Cloud
Google Cloud Certification Program
Google Cloud Client Libraries
Google Cloud Console
Google Cloud Dataflow
Google Cloud Datalab
Google Cloud Datastore
Google Cloud Endpoints
Google Cloud Explorer
Google Cloud Identity and Access Management
Google Cloud INSIDE
Google Cloud INSIDE Digital
Google Cloud INSIDE FinTech
Google Cloud Interconnect
Google Cloud Launcher
Google Cloud Logging
Google Cloud Next '18 in Tokyo
Google Cloud Next '19 in Tokyo
Google Cloud Platform
Google Cloud Resource Manager
Google Cloud Security Scanner
Google Cloud Shell
Google Cloud SQL
Google Cloud Storage
Google Cloud Storage Nearline
Google Cloud Summit '18
Google Cloud Summit ’18
Google Cloud Tools for IntelliJ
Google Code
Google Compute Engine
Google Container Engine
Google Data Analytics
Google Data Studio
Google Date Studio
Google Deployment Manager
Google Drive
Google Earth Engine
Google Genomics
Google Kubernetes Engine
Google maps
google maps api
Google Maps APIs
Google Maps Platform
Google SafeSearch
Google Service Control
Google Sheets
Google Slides
Google Translate
Google Trust Services
Google VPC
Google マップ
Google 公認プロフェッショナル
GoogleNext18
GPU
Gradle
Grafeas
GroupBy
gRPC
HA / DR
Haskell
HEPCloud
HIPAA
Horizon
HTCondor
IaaS
IAM
IBM
IBM POWER9
icon
IERS
Improbable
INEVITABLE ja night
inevitableja
InShorts
Intel
IntelliJ
Internal Load Balancing
Internet2
IoT
Issue Tracker
Java
Jenkins
JFrog
JFrog Artifactory SaaS
Jupiter
Jupyter
Kaggle
Kayenta
Khan Academy
Knative
Komprise
kubefed
Kubeflow Pipelines
Kubernetes
KVM
Landsat
load shedding
Local SSD
Logging
Looker
Machine Learning
Magenta
Managed Instance Group
Managed Instance Group Updater
Maps API
Maps-sensei
Mapsコーナー
Maven
Maxon Cinema 4D
MightyTV
Mission Control
MongoDB
MQTT
Multiplay
MySQL
Nearline
Network Time Protocol
Networking
neural networks
Next
Node
NoSQL
NTP
NuGet パッケージ
OCP
OLDISM
Open Compute Project
OpenCAPI
OpenCAPI Consortium
OpenShift Dedicated
Orbitera
Organization
Orion
Osaka
Paas
Panda
Particle
Partner Interconnect
Percona
Pete's Dragon
Pivotal
Pivotal Cloud Foundry
PLCN
Podcast
Pokemon GO
Pokémon GO
Poseidon
Postgre
PowerPoint
PowerShell
Professional Cloud Network Engineer
Protocol Buffers
Puppet
Pythian
Python
Qwiklabs
Rails
Raspberry Pi
Red Hat
Redis
Regional Managed Instance Groups
Ruby
Rust
SAP
SAP Cloud Platform
SC16
ScaleArc
Secure LDAP
Security & Identity
Sentinel-2
Service Broker
Serving Websites
Shared VPC
SideFX Houdini
SIGOPS Hall of Fame Award
Sinatra
Site Reliability Engineering
Skaffold
SLA
Slack
SLI
SLO
Slurm
Snap
Spaceknow
SpatialOS
Spinnaker
Spring
SQL Server
SRE
SSL policies
Stack Overflow
Stackdriver
Stackdriver Agent
Stackdriver APM
Stackdriver Debugger
Stackdriver Diagnostics
Stackdriver Error Reporting
Stackdriver Logging
Stackdriver Monitoring
Stackdriver Trace
Stanford
Startups
StatefulSets
Storage & Databases
StorReduce
Streak
Sureline
Sysbench
Tableau
Talend
Tensor Flow
Tensor Processing Unit
TensorFlow
Terraform
The Carousel
TPU
Trace
Transfer Appliance
Transfer Service
Translate API
Uber
Velostrata
Veritas
Video Intelligence API
Vision API
Visual Studio
Visualization
Vitess
VM
VM Image
VPC Flow Logs
VR
VSS
Waze
Weave Cloud
Web Risk AP
Webyog
Wide and Deep
Windows Server
Windows ワークロード
Wix
Worlds Adrift
Xplenty
Yellowfin
YouTube
Zaius
Zaius P9 Server
Zipkin
ZYNC Render
アーキテクチャ図
イベント
エラーバジェット
エンティティ
オンライン教育
クラウド アーキテクト
クラウド移行
グローバル ネットワーク
ゲーム
コードラボ
コミュニティ
コンテスト
コンピューティング
サーバーレス
サービス アカウント
サポート
ジッター
ショート動画シリーズ
スタートガイド
ストレージ
セキュリティ
セミナー
ソリューション ガイド
ソリューション: メディア
データ エンジニア
データセンター
デベロッパー
パートナーシップ
ビッグデータ
ファジング
プリエンプティブル GPU
プリエンプティブル VM
フルマネージド
ヘルスケア
ホワイトペーパー
マイクロサービス
まっぷす先生
マルチクラウド
リージョン
ロード シェディング
運用管理
可用性
海底ケーブル
機械学習
金融
継続的デリバリ
月刊ニュース
資格、認定
新機能、アップデート
深層学習
深層強化学習
人気記事ランキング
内部負荷分散
認定試験
認定資格
料金
Archive
2019
8月
7月
6月
5月
4月
3月
2月
1月
2018
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2017
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2016
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2015
12月
11月
10月
9月
8月
7月
6月
5月
4月
3月
2月
1月
2014
12月
11月
10月
9月
8月
6月
5月
4月
3月
2月
Feed
月刊ニュースレターに
登録
新着ポストをメールで受け取る
Follow @GoogleCloud_jp
0 件のコメント :
コメントを投稿