More Related Content Similar to データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで Similar to データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで (20) More from Shunsuke Nakamura More from Shunsuke Nakamura (7) データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで4. 自己紹介
学生時代
大学でアメフト部で相手チームのデータ分析
大学、大学院で機械学習を専攻
研究テーマ :機械学習によるアメリカンフットボールの戦略推定
社会人
楽天でキャリアスタート
Hadoopを使ったビッグデータ処理、Webアプリケーション開発
機械学習を使う機会には恵まれず
cherry-pick入社
自社サービスの機械学習部分の開発
九DW CTO就任
受託開発の機械学習部分
注意
サッカー選手ではありません
データ!アメフト!
データ!データ!
中村俊輔
@shun_naka
9. はじめに
何故今注目されている?
コンピュータのほうが安く
よりよく課題を解く場面が増えた
何故そんな場面がふえたのか
人間 vs コンピュータ
人間の得意なこと
曖昧さを許容
多様な知識を自ら学習
コンピュータの得意なこと
大規模計算が正確、高速
不眠不休
コンピュータの性能上昇、データ量増加
コンピュータのほうが安く
よりよく課題を解く場面が増えた
今ある仕事のいくつかはコンピュータになる…
かも
実用例
スパムメール検知
カメラの顔検出 …等
14. 機械学習って…
まとめると
クラス分類
回帰
クラスタリング
その他
Deep Learning
サポートベクターマシン
ロジスティック回帰 線形判別分析
線形回帰分析
K-meansクラスタリング
主成分分析
自己組織化マップ
K近傍判別
ランダムフォレスト
決定木分析
ニューラルネットワーク
サポートベクター回帰
18. 教師あり学習
教師データ
コンピュータに推定させたいものの正解のデータ
教師あり学習をするためには以下が必要
教師データ (目的変数, 基本的に1変数)
教師データを推定できる情報 (説明変数, 複数可)
例
スパムメール検知
教師データ : メールごとのスパムメール or 通常メール
推定できる情報 : メールタイトル、本文に登場する単語等
アイスクリーム売り上げ推定
教師データ : 日ごとの売り上げ金額
推定できる情報 : その日の気温、湿度
[1] "make" "address" "all" "num3d"
[5] "our" "over" "remove" "internet"
[9] "order" "mail" "receive" "will"
[13] "people" "report" "addresses" "free"
[17] "business" "email" "you" "credit"
[21] "your" "font" "num000" "money"
[25] "hp" "hpl" "george" "num650"
[29] "lab" "labs" "telnet" "num857"
[33] "data" "num415" "num85" "technology"
[37] "num1999" "parts" "pm" "direct"
[41] "cs" "meeting" "original" "project"
[45] "re" "edu" "table" "conference"
[49] "charSemicolon" "charRoundbracket" "charSquarebracket"
"charExclamation"
[53] "charDollar" "charHash" "capitalAve" "capitalLong"
[57] "capitalTotal" "type"
例) メールのデータ
19. クラス分類と回帰の違い
教師データの種類が違う
クラス分類
教師データが離散値、大小、順序関係を持たない
例
スパムメール検知
回帰
教師データが連続値、大小、順序関係を持つ
例
売り上げ推定
[1] "Ozone" "Solar.R" "Wind" "Temp" "Month" "Day"
例) オゾンのデータ
23. Rで線形判別分析
https://github.com/shunnakamu/machine_learning_training/blob/master/R/
01_LinearDiscriminantAnalysis.R
# load iris data
data(iris)
# check data summary
nrow(iris)
names(iris)
# set odd & even number
odd.n <- 2*(1:50) -1
even.n <- 2*(1:50)
# check
odd.n
even.n
# divide data into train and test
iris.train <- iris[odd.n,]
iris.test <- iris[even.n,]
predict(iris.lda, x)$class
# load library
library(MASS)
# lda (linear discriminant analysis)
iris.lda <- lda(Species~., data=iris.train)
# ignore warning
# In lda.default(x, grouping, ...) : group virginica is empty
iris.lda
# plot summary
plot(iris.lda, dimen=1)
# predict
iris.pre <- predict(iris.lda, iris.test[,-5])
table(iris.test[,5], iris.pre$class)
x <- data.frame("Sepal.Length" = 1, "Sepal.Width" = 2,
"Petal.Length" = 3, "Petal.Width" = 4)
predict(iris.lda, x)$class
27. RでK-means
https://github.com/shunnakamu/machine_learning_training/blob/master/R/
03_KMeans.R
iris.km <- kmeans(iris[,-5], 3)
iris.km$cluster
iris.pc <- prcomp(iris[1:4])
# plot result
par(mfrow=c(2,2))
# left: actual, right; cluster
plot(iris.pc$x[,1], iris.pc$x[,2], pch = 21, bg = c("red", "green3",
"blue")[unclass(iris$Species)])
plot(iris.pc$x[,1], iris.pc$x[,2], pch = 21, bg = c("red", "green3", "blue", " black ", "
white ")[unclass(iris.km$cluster)])
# if cluster number is 5
iris.km <- kmeans(iris[,-5], 5)
iris.km$cluster
iris.pc <- prcomp(iris[1:4])
par(mfrow=c(2,2))
plot(iris.pc$x[,1], iris.pc$x[,2], pch = 21, bg = c("red", "green3",
"blue")[unclass(iris$Species)])
plot(iris.pc$x[,1], iris.pc$x[,2], pch = 21, bg = c("red", "green3", "blue", " black ", "
white ")[unclass(iris.km$cluster)])
34. 変数設定 設定例
目的変数
人数計
説明変数
宿泊日_年
宿泊日_月
宿泊日_日
施設形態
客室タイプ
食事条件
?金額
?泊数
お客様性別
お客様都道府県
決済手段
宿泊年
宿泊月
宿泊日
販売年
販売月
販売日
施設所在都道府県
地区コード
施設コード
施設名
施設形態
客室タイプ
プラン名
食事
お客様年齢
金額
泊数
室数
大人男
大人女
小人
人数計
持っているデータ
35. 前処理
前処理が必要なデータ
宿泊日
曜日を算出しておく
施設形態、客室タイプ、食事条件
種類ごとにベクトル化、数が少ないものはその他に
お客様性別
お客様都道府県
決済手段
宿泊年
宿泊月
宿泊日
販売年
販売月
販売日
施設所在都道府県
地区コード
施設コード
施設名
施設形態
客室タイプ
プラン名
食事
お客様年齢
金額
泊数
室数
大人男
大人女
小人
人数計
持っているデータ
36. データサンプル
月 火 水 木 金 土 日
ホテ
ル
カプ
セル
ホテ
ル
旅館
施設
形態_
その
他
ツイ
ン
シン
グル
和室
和洋
室
洋室
客室
タイ
プ_そ
の他
2食付
き
朝食
付き
食事
無
(ル
ーム
チャ
ー
ジ)
食事
条件_
その
他
金額
宿泊
人数
0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0
1610
0
1
1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0
2430
0
1
0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 8100 1
1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 8100 1
1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 7420 1
0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 7420 2
0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0
1607
0
5
0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 7636 1
1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 7300 1
0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 7300 1
0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 7200 1
0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 8500 1
0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 7924 1
0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 6736 1
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0
1080
0
2
※金額はこの後0-1の範囲にする
37. 分析
travel <-
read.table(“travel_data.tsv”,
header=TRUE, sep=“¥t”, na.strings=“NA”, dec=“.”, strip.white=TRUE)
travel.lm <- lm(宿泊人数 ~. , data=travel)
summary(travel.lm)
summary(travel$宿泊人数)
# 誤差の平均を確認する
travel.lm.pre <- predict(travel.lm, travel[,-23])
travel.lm.result <- abs(travel.lm.pre - travel[,23])
summary(travel.lm.result)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1.000 1.000 2.000 2.634 3.000 30.000
# モデルのパラメータ
travel.lm$coefficients
# 誤差が一番大きかったデータを確認する
which.max(travel.lm.result)
# データを目検。
39. まとめ
実際のビジネス課題を機械学習で解いた
問題選定
データ選定
前処理
機械学習で分析
結果確認、再処理
実際にビジネス課題を解くとすると…
機械学習で分析の部分は簡単、Webで探せばいくらでも資料がある
大切なこと
問題の本質をとらえる
機械が解ける状態にする
結果を正しく理解する
42. 機械学習を取り巻く環境
使うだけなら誰でもできる
機械学習ライブラリの充実
R
Python
機械学習プラットフォームの充実
Amazon Machine Learning
Microsoft Azure Machine Learning
結果を読み取ったり、より良くするできることが大切
機械学習のPDCAをうまく回せる人がビジネス課題を解決できる
これができる人、組織は現在少ない
43. 機械学習とどう付き合うか?
経営者や管理者
どの課題を機械学習で解決すべきなのかを理解できるようにする
機械学習で解決すべきでない課題を機械学習で解いてもうれしくない
Deep Learningもビジネス課題を解決する目的なら力を発揮しない場面が多い
機械学習で課題を解決できる環境を作る
人材確保
取引先確保
データサイエンティスト
基礎としての数学を身につける
PDCAを回すときに数学ができないと結果を正しく理解できない
大学数学の線形代数、微分積分は必須
基本的な機械学習の手法は数式から理解するべき
ビジネス課題を解決する教科書はない、経験値が大切
基本的には仕事はICTエンジニアと変わらないが、ノウハウがない
55. データサイエンティストに必要な要素3つが身に着く現場
大学、大学院
数学、機械学習を身に着ける
論文を読んだら実装できる
大企業、中企業
開発、運用の基礎を身に着ける
高速な開発と容易な運用、いわゆるきれいなコードを
書けるようになる
ベンチャー企業
自ら問題解決をする
自社、クライアントの問題をデータサイエンスでどう
解決するかを提案できる
九DW
多種多様なクライアントとすべてのことができる!
データサイエンティストのパイオニアになる
ビジネス力
データサイエ
ンス力
データエンジ
ニアリング力
ビジネス力
データサイエ
ンス力
データエンジ
ニアリング力
ビジネス力
データサイエ
ンス力
データエンジ
ニアリング力
ビジネス力
データサイエ
ンス力
データエンジ
ニアリング力
※個人の感想です