Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで

1,068 views

Published on

学生向けバージョン

Published in: Data & Analytics
  • Be the first to comment

データサイエンティストに聞く!今更聞けない機械学習の基礎から応用まで

  1. 1. データサイエンティストに聞く! 今更聞けない機械学習の基礎から応用まで 株式会社九DW 中村俊輔
  2. 2. 今日の流れ  何故今機械学習なのか  機械学習を取り巻く環境とビジネス機会の関係  機械学習のしくみ  図で分かる機械学習、中では実際に何をしているのか  データサイエンティスト体験  数式、プログラミングいらず。ビジネス課題を実際に解決  機械学習のこれから  機械学習とどう付き合っていくか 機械学習の今後の動きとあるべき姿  おまけ  ポケモンで分かるデータサイエンティストの育て方
  3. 3. 勉強会が終わったときにあなたは  今日の勉強会で…  機械学習でビジネス課題を解決する考え方が分かる  データサイエンスの楽しさがわかる…かもしれない
  4. 4. 自己紹介  学生時代  大学でアメフト部で相手チームのデータ分析  大学、大学院で機械学習を専攻  研究テーマ :機械学習によるアメリカンフットボールの戦略推定  社会人  楽天でキャリアスタート  Hadoopを使ったビッグデータ処理、Webアプリケーション開発  機械学習を使う機会には恵まれず  cherry-pick入社  自社サービスの機械学習部分の開発  九DW CTO就任  受託開発の機械学習部分 注意  サッカー選手ではありません データ!アメフト! データ!データ! 中村俊輔 @shun_naka
  5. 5. お知らせ  手元で動かしながら体験したい人は準備をお願いします  後半にRを利用したハンズオンを予定しております。(ハンズオンはv 3.3.1で動作確認済)  “R インストール”で検索してインストールお願いします http://www.okadajp.org/RWiki/?R%20%E3%81%AE%E3%82%A4%E3%8 3%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
  6. 6. 何故今、機械学習なのか? 機械学習を取り巻く環境とビジネス機会の関係
  7. 7. まずは頭の整理  よく聞く単語ってどこにいるの? 人工知能 汎用人工知能 機械学習 クラス分類器 Deep Learning 特化型人工知能 人間の脳を 計算機で作 るぞ! 人間の知的な行動の一部 を計算機で実現したい
  8. 8. はじめに  機械学習?  人間が自然に行っている学習能力と同様の機能を コンピュータで実現しようとする技術・手法 (Wikipedia)  1959年から存在  特別新しい技術ではない
  9. 9. はじめに  何故今注目されている?  コンピュータのほうが安く よりよく課題を解く場面が増えた  何故そんな場面がふえたのか  人間 vs コンピュータ  人間の得意なこと  曖昧さを許容  多様な知識を自ら学習  コンピュータの得意なこと  大規模計算が正確、高速  不眠不休  コンピュータの性能上昇、データ量増加  コンピュータのほうが安く よりよく課題を解く場面が増えた  今ある仕事のいくつかはコンピュータになる… かも  実用例  スパムメール検知  カメラの顔検出 …等
  10. 10. 機械学習がもたらす影響  現在進行形で産業革命が2つ起こっている  ICT革命  人工知能革命  機械学習でビジネス課題を解決できると競争力があがる  機械学習を使った方が低コストでよりよく解決できる課題が多くなる  その課題を機械学習を使って解決することで競争力があがる
  11. 11. 機械学習のしくみ 図で分かる機械学習、中では実際に何をしているのか
  12. 12. どうやって動いてるの?  解きたい問題をコンピュータに解ける状態にして解く  人間の問題解決を数値計算で表現する(数値計算に意思をもたせる)  賢く解かせる  現実の問題は厳密に最適解を求めることは難しい  例) 巡回セールスマン問題  厳密な最適解のためには総当たり計算が必要  最適じゃなくていいからそれっぽいものを出そう  機械学習!  人間がやっているようなことをまねる http://sssslide.com/www.slideshare.net/DataScientist_JP/09-53539349
  13. 13. 機械学習って…  色々な手法が登場して全容が掴みづらい Deep Learning サポートベクターマシン ロジスティック回帰 線形判別分析 線形回帰分析 K-meansクラスタリング 主成分分析 自己組織化マップ K近傍判別 ランダムフォレスト 決定木分析 ニューラルネットワーク サポートベクター回帰
  14. 14. 機械学習って…  まとめると  クラス分類  回帰  クラスタリング  その他 Deep Learning サポートベクターマシン ロジスティック回帰 線形判別分析 線形回帰分析 K-meansクラスタリング 主成分分析 自己組織化マップ K近傍判別 ランダムフォレスト 決定木分析 ニューラルネットワーク サポートベクター回帰
  15. 15. 機械学習って…  大きく分けると3つの問題を解く道具  クラス分類  回帰  クラスタリング  その他  3つの問題と、代表的な解き方を学ぶことで全容が分かる
  16. 16. 代表的な手法を通じて問題と解き方を理解する  クラス分類  線形判別分析  回帰  線形回帰分析  クラスタリング  K-means クラスタリング
  17. 17. 教師あり学習、教師なし学習  さらに大きく分けると2つに分かれる  教師あり学習  クラス分類  回帰  教師なし学習  クラスタリング
  18. 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. 19. クラス分類と回帰の違い  教師データの種類が違う  クラス分類  教師データが離散値、大小、順序関係を持たない  例  スパムメール検知  回帰  教師データが連続値、大小、順序関係を持つ  例  売り上げ推定 [1] "Ozone" "Solar.R" "Wind" "Temp" "Month" "Day" 例) オゾンのデータ
  20. 20. 教師なし学習  教師なし学習のためには  なんらかの特徴を持ったデータ  例  顧客のセグメンテーション  データ : 年齢、性別、購買頻度、購買金額 [1] "Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" 例) 植物のデータ
  21. 21. 解いてみよう! 代表的な解き方を使って解いてみましょう! 実際にお手元で解いていただきます
  22. 22. クラス分類  線形判別分析  群間の分散と郡内の分散の比が最大になる 判別用の超平面のパラメータを求める z = ax + by + c うまく分類できるa, b, cを求める a,b,c を求めておけばzの正負で分類できる z : 目的変数 x, y : 説明変数 a, b, c : 教師データを使って求めるパラメータ  性能はテストデータの正答率で評価
  23. 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
  24. 24. 回帰  線形回帰分析  目的変数を説明変数の式で表現し 誤差が最小になる係数を求める y = ax + b y をうまく表現する(誤差が最小になる) a, bを求める xが与えられればyが求まる y : 目的変数 x : 説明変数 a, b : 教師データを使って求めるパラメータ  性能はテストデータへの誤差で評価
  25. 25. Rで線形回帰 https://github.com/shunnakamu/machine_learning_training/blob/master/R/ 02_LinearRegression.R # load airquality data data(airquality) # check data summary nrow(airquality) names(airquality) # linear regression airquality.lm <- lm(Ozone ~ Solar.R + Wind + Temp, data=airquality) summary(airquality.lm) # see Multiple R-Squared airquality.lm$residuals # see average of error mean(abs(airquality.lm$residuals)) # see function coefficients airquality.lm$coefficients
  26. 26. クラスタリング  K-means クラスタリング  クラスタ数を決める  初期値を与える 1. 各クラスターの中心(平均値)を求める 2. 各データをもっとも近いクラスター中心に割り当てなおす 3. 1, 2を実行して割り当てが変化しなければ終了
  27. 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)])
  28. 28. 機械学習はビジネス課題を解くときの一部でしかない  実際のビジネス課題を解く手順例  問題選定  データ選定  前処理  機械学習で分析  結果確認、再処理
  29. 29. データサイエンティスト体験 数式、プログラミングいらず。ビジネス課題を実際に解決
  30. 30. ビジネス課題を機械学習を使って解決  今までのまとめ  使うだけなら簡単  資料もWebにたくさんある  重要なところ  どう使うの?  どんなデータをどう処理するの?  出した答えをどう理解するの?  経験、ノウハウが必要でビジネスで差が出るところだが資料は少ない
  31. 31. 実際の課題を解くときの流れ  実際の課題を機械学習で解ける状態にする  どの問題として  どのデータを使って解くか
  32. 32. 問題設定  問題設定  宿泊施設やサービスの情報から ある日(期間)のある地域の宿泊人数を推定する  過去の宿泊状況のデータを持っている  この問題はどの問題として解けるか?  クラス分類  回帰  クラスタリング お客様性別 お客様都道府県 決済手段 宿泊年 宿泊月 宿泊日 販売年 販売月 販売日 施設所在都道府県 地区コード 施設コード 施設名 施設形態 客室タイプ プラン名 食事 お客様年齢 金額 泊数 室数 大人男 大人女 小人 人数計 持っているデータ
  33. 33. 変数設定、データセット作成  データセットは自分たちが作らないといけない  サンプルのように整備されたものはない  目的変数  目的変数に設定すべきものは?  説明変数  説明変数に設定すべきものは? お客様性別 お客様都道府県 決済手段 宿泊年 宿泊月 宿泊日 販売年 販売月 販売日 施設所在都道府県 地区コード 施設コード 施設名 施設形態 客室タイプ プラン名 食事 お客様年齢 金額 泊数 室数 大人男 大人女 小人 人数計 持っているデータ
  34. 34. 変数設定 設定例  目的変数  人数計  説明変数  宿泊日_年  宿泊日_月  宿泊日_日  施設形態  客室タイプ  食事条件 ?金額 ?泊数 お客様性別 お客様都道府県 決済手段 宿泊年 宿泊月 宿泊日 販売年 販売月 販売日 施設所在都道府県 地区コード 施設コード 施設名 施設形態 客室タイプ プラン名 食事 お客様年齢 金額 泊数 室数 大人男 大人女 小人 人数計 持っているデータ
  35. 35. 前処理  前処理が必要なデータ  宿泊日  曜日を算出しておく  施設形態、客室タイプ、食事条件  種類ごとにベクトル化、数が少ないものはその他に お客様性別 お客様都道府県 決済手段 宿泊年 宿泊月 宿泊日 販売年 販売月 販売日 施設所在都道府県 地区コード 施設コード 施設名 施設形態 客室タイプ プラン名 食事 お客様年齢 金額 泊数 室数 大人男 大人女 小人 人数計 持っているデータ
  36. 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. 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) # データを目検。
  38. 38. 結果を確認する  回帰がうまくできなかったデータはどのような特徴があるのか?  対応すべきか否か?  外れ値かどうか?  これを繰り返して賢く問題を解く機械学習のモデルを作っていく  これがデータサイエンティストの仕事のメイン  データの前処理も結構メインだったりする  解きたい問題の本質は何かを考える  目的変数を表現できる情報を与えてあげれば機械は正しい答えを出してくれる  目的変数を表現できる情報とは?
  39. 39. まとめ  実際のビジネス課題を機械学習で解いた  問題選定  データ選定  前処理  機械学習で分析  結果確認、再処理  実際にビジネス課題を解くとすると…  機械学習で分析の部分は簡単、Webで探せばいくらでも資料がある  大切なこと  問題の本質をとらえる  機械が解ける状態にする  結果を正しく理解する
  40. 40. 機械学習のこれから 機械学習とどう付き合っていくか 機械学習の今後の動きとあるべき姿
  41. 41. 機械学習のこれから  現在進行形で産業革命が2つ起こっている  ICT革命  人工知能革命  機械学習でビジネス課題を解決できると競争力があがる  機械学習を使った方が低コストでよりよく解決できる課題が多くなる
  42. 42. 機械学習を取り巻く環境  使うだけなら誰でもできる  機械学習ライブラリの充実  R  Python  機械学習プラットフォームの充実  Amazon Machine Learning  Microsoft Azure Machine Learning  結果を読み取ったり、より良くするできることが大切  機械学習のPDCAをうまく回せる人がビジネス課題を解決できる  これができる人、組織は現在少ない
  43. 43. 機械学習とどう付き合うか?  経営者や管理者  どの課題を機械学習で解決すべきなのかを理解できるようにする  機械学習で解決すべきでない課題を機械学習で解いてもうれしくない  Deep Learningもビジネス課題を解決する目的なら力を発揮しない場面が多い  機械学習で課題を解決できる環境を作る  人材確保  取引先確保  データサイエンティスト  基礎としての数学を身につける  PDCAを回すときに数学ができないと結果を正しく理解できない  大学数学の線形代数、微分積分は必須  基本的な機械学習の手法は数式から理解するべき  ビジネス課題を解決する教科書はない、経験値が大切  基本的には仕事はICTエンジニアと変わらないが、ノウハウがない
  44. 44. さいごに データサイエンスは楽しい! 今まで人間が解けなかった問題が解ける 働き方をどう変えるか?は我々次第
  45. 45. おまけ ポケモンで分かるデータサイエンティストの育て方
  46. 46. データサイエンティストに必要な要素3つ ※ミッション、スキルセット、定義、スキル. レベル byデータサイエンティスト協会 http://www.datascientist.or.jp/news/2014/pdf/1210.pdf  黎明期の現在はすべてを持ち合わせる必要がある  さらに素早く成果物を出すには一人ですべてカバーしている必要がある
  47. 47. よくある光景 (ビジネス力が足りていない)
  48. 48. よくある光景 (データサイエンス力が足りていない)
  49. 49. よくある光景 (データエンジニア力が足りてない)
  50. 50. どうすれば3つの要素を持ち合わせられるのか?
  51. 51. その前にポケモンの話をしよう ※ポケモンGOではなくて本家ポケモン
  52. 52. 強いポケモンの育て方  ポケモンの個体ごとの強いものを選ぶ  強くしたいステータスを育てる  倒したポケモンに応じて成長する 倒すとこうげきが上がる 倒すとぼうぎょが上がる
  53. 53. 効率よく育てるために  狙っているポケモンが出現する草むらでポケモンを倒す ん…? データサイエンティストになりたければ 3つの能力が上がる場所で活動する… ポケモンと同じだ! たまげたなぁ イワヤマトンネル おつきみやま
  54. 54. つまり… ポケモン データサイエンス 倒すポケモン 仕事 草むら 職場
  55. 55. データサイエンティストに必要な要素3つが身に着く現場  大学、大学院  数学、機械学習を身に着ける  論文を読んだら実装できる  大企業、中企業  開発、運用の基礎を身に着ける  高速な開発と容易な運用、いわゆるきれいなコードを 書けるようになる  ベンチャー企業  自ら問題解決をする  自社、クライアントの問題をデータサイエンスでどう 解決するかを提案できる  九DW  多種多様なクライアントとすべてのことができる!  データサイエンティストのパイオニアになる ビジネス力 データサイエ ンス力 データエンジ ニアリング力 ビジネス力 データサイエ ンス力 データエンジ ニアリング力 ビジネス力 データサイエ ンス力 データエンジ ニアリング力 ビジネス力 データサイエ ンス力 データエンジ ニアリング力 ※個人の感想です
  56. 56. さいごに データサイエンスは楽しい! 今まで人間が解けなかった問題が解ける 働き方をどう変えるか?は我々次第
  57. 57. さいごに 2 名刺を忘れたので… なにかあればこちらまで s.nakamura@9dw.jp

×