SlideShare a Scribd company logo
1 of 79
Download to read offline
株式会社オービタルネット
小林 裕治
2019.10.14
FOSS4G2019 KOBE・KANSAI ハンズオン
ほぼノン・プログラミングで
AI×G空間分析
1
INDEX
1. 過去の賃貸物件情報をもとに名古屋市全域の賃料予測をやってみる(準備)
2 .WebブラウザでH2OのWebサービスに接続してウェイトモデルを作成する
3 .Rを使用して賃料予測
4 .QGISを使って地図上で可視化しよう
5. Rを使用して学習から予測までを一気通貫で行う
6 .ハイパーパラメータを変更して色々試してみよう
7 .Kaggle Competitionのチュートリアルにチャレンジしよう
・・・9P
・・18P
・・44P
・・52P
・・63P
・・69P
・・72P
2
自己紹介
小林 裕治(こばやしゆうじ)
株式会社オービタルネット 代表取締役
https://www.orbitalnet.jp/
3
ディープラーニングにできること
回帰 分類 クラスタリング
関数のパラメータを推定する クラスを分類する基準、
ルールを見つける
複数の集合(クラスタ)に
分割するルールを見つける
今回は、定番とも言える画像の識別・分類ではなく、
入力と出力の相関関係を求める回帰分析を行います!
4
回帰 Regression
回帰 Regression
予測値が数値である問題
学習データから「パターン」を学習し、未知の結果を予測。
【活用例】
-過去の週次売上から来週の売上を予測
x(説明変数):目的変数を説明する変数のこと。
y(目的変数):予測したい変数のこと。
ロジスティック回帰は結果を0~1の間に
収める。正否を求める場合などに使用する
5
ディープ・ニューラルネットワークとは
入力層
x1
x2
x3
w0
w1
w2
隠れ層(中間層)が2層以上
bias項
w3
h:活性化関数
x0=1
・・・
・・・
・・・
出力層
人間の脳の神経細胞の情報伝達の仕組みを模倣したアルゴリズムで
ニューラルネットワークの中間層を多層化したもの
y
・ ・ ・
z = h(∑𝑖𝑖=0
𝐷𝐷
𝑤𝑤𝑖𝑖 𝑥𝑥𝑖𝑖)
・ ・
6
ディープ・ニューラルネットワークのイメージ
入力層 隠れ層
C1:経度
C2:緯度
C3:部屋面積
C4:築年数
C5:物件種別
y:賃料
出力層
 5つの変数(C1~C5)をDNNに入力
 賃料(y)を出力(回帰は出力が1ユニットになる)
ディープ・ニューラル・ネットワークのイメージ
7
今日やること
①作業用ディレクトリの作成 C:¥R_work
② RにH2Oをインストール、H2Oサービスの起動
(http://localhost:54321)
③WebブラウザからH2Oウェブサービスに接続し学習・ウェイトモデル作成。
④Rスクリプト(rent_predict.R)を読み込む。
⑤予測(grid_point.txtと物件パラメータ)
⑥QGISに取り込み地図上で可視化
⑦Rスクリプト(rent_predict.R)でWeightモデル作成。
8
実行環境
Operation System:Windows 7, 8, 10
※LinuxやMacでも動作しますがファイルパスなどの変更は自己責任でお願いします
統計分析ツール:R (R 3以降)
Deep Learningフレームワーク:H2O
重要:H2Oを動かすためにJava 7 JDK以降の64bit版が必要です。
GISツール:QGIS3.x以降
9
1. 過去の賃貸物件情報をもとに名古屋市
全域の賃料予測をやってみる(準備)
10
本日の内容について
本日実施する内容は、2017年の
地理情報システム学会 第26回
学術研究発表大会で口頭発表、
ポスター発表(ポスター発表賞受
賞)した内容に基づいています。
技術的には少し古いですが、データ
分析等に応用できる内容になって
います。
11
地点と賃料の関係を学習する
都市圏までの通勤時間
最寄駅からの距離
公園から距離
小中学校からの距離
正面道路の幅員
スーパーやコンビニからの距離
立地条件
緯度,経度
賃料は建物条件と立地条件との関係でなりたつ
立地を緯度・経度としてブラックボックス化して説明変数とする
部屋面積
築年数
アパートorマンション
建物条件
賃料
ブラックボックス化
Bias
12
場所による価格差を導く
都市圏までの通勤時間
最寄駅からの距離
公園から距離
小中学校からの距離
正面道路の幅員
スーパーやコンビニからの距離
立地条件
緯度,経度
部屋面積
築年数
アパートorマンション
建物条件
賃料
Bias
すべての賃貸物件同士の建物条件を相殺して、
場所による価格差を導きだす
GISによる可視化
が有効
13
ディープラーニングのフロー
マッピング
予測
予測用データ
予測結果
予測フェーズ
学習
賃料モデル
訓練データ
学習フェーズ
可視化フェーズ
データ収集
アドレスマッチング
賃貸物件情報収集
14
賃貸物件データの収集
学習用データとして使用する賃貸物件データはSUUMOのサイトから
スクレイピングで必要な部分をCSVでまとめてダウンロードしてます。
15
使用する学習用データ
 「SUUMO東海版」を対象に名古
屋市内約11,000件の賃貸情報
を収集.
 住所表記を東京大学空間情報
科 学 研 究 セ ン タ ー が 提 供 す る
「CSVアドレスマッチングサービス」を
利用し緯度・経度に変換
カラム ヘッダ名称 説明 変数種別
0 lon 経度 実数
1 lat 緯度 実数
2 area 面積 実数
3 year 築年数 整数
4 type 建物種別 整数
5 value 賃料 整数
経度 緯度 部屋面積 築年数 種別 賃貸料
136.93079 35.13878 20 8 アパート 21,000
136.96043 35.15283 12.42 11 アパート 26,000
136.90855 35.14965 19.28 15 マンション 42,000
136.92181 35.14797 24 15 アパート 40,000
136.92181 35.14797 24 15 アパート 40,000
136.92328 35.17732 20.18 9 マンション 40,000
136.92387 35.14506 18.88 10 マンション 43,000
136.94275 35.16594 18.68 13 アパート 40,000
136.91441 35.12801 16.59 9 アパート 40,000
136.95706 35.11822 29.05 15 マンション 42,000
136.95706 35.11822 28.93 15 アパート 42,000
136.92464 35.12334 25.47 12 アパート 45,000
136.9191 35.13755 24.64 15 マンション 41,000
136.9191 35.13755 24.64 15 マンション 41,000
136.93353 35.16344 24.3 12 マンション 45,000
136.89128 35.12632 24.02 15 マンション 41,000
136.90959 35.12192 22.77 12 マンション 45,000
136.94852 35.15774 22.35 14 アパート 45,000
136.9332 35.16027 19.52 7 マンション 42,000
136.89009 35.13178 23.45 15 マンション 42,000
136.96039 35.1846 24.3 11 アパート 46,000
136.91931 35.13356 24 15 マンション 43,000
136.91931 35.13356 24.06 15 マンション 43,000
136.9473 35.11444 22.11 10 アパート 44,000
・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・
・ ・ ・ ・ ・ ・
訓練データ定義
賃貸物件データ(訓練データ)
16
位置情報の精度について
「CSVアドレスマッチングサービス」は、住所を街区レベルの緯度経度に
変換するサービスです。そのため街区より詳細な位置情報は街区の代
表点にまとめられてしまいます。
「CSVアドレスマッチングサービス」の変換工程を経た本学習用データは、
街区レベルの誤差を含んでいることを留意して使用する必要があります。
17
事前準備
・Cドライブの下に「R_work」というフォルダを作成し、2_Dataの中身
を入れましょう。
・新規フォルダ「data」と「model」を作成します。
18
2. WebブラウザでH2OのWebサービスに
接続してウェイトモデルを作成する
H2O.aiとは
19
公式サイト:https://www.h2o.ai/
公式サイト日本語応援サイト:http://www.h2o.jp/
H2Oは、世界をリードするオープンソースのディープ・ラーニングプラット
フォームです。 H2Oは世界中の8万人以上のデータ科学者と9,000
以上の組織によって使用されています。
20
Rの起動
まず、作業ディレクトリとH2OのインストールをするためにRを起動します。
デスクトップ上のRのリンクアイコンをクリックしてください。
Rを終了する場合は、コマンドで “q()”または“quit()”と入力してください
このような画面が開けばOKです。
21
RからH2Oサービスを利用できるようにする
#ワークディレクトリの設定
#カレントディレクトリを確認する場合は、getwd()
setwd("C:¥¥R_work")
#パッケージH2Oのインストール(初回のみ)
install.packages("h2o")
Rのコンソール画面からコマンド入力します
ミラーサイトの選択画面
ボタンを押してインストール開始
22
H2Oのインストール
23
H2Oの起動
#現在起動しているRセッションにパッケージH2Oを読み込む
library("h2o")
# h2oの起動、max_mem_sizeで使用可能な最大メモリ数を指定
localH2O = h2o.init(nthreads = -1, max_mem_size="3g")
24
インターネットに接続できない場合
インターネットに接続できなくてH2Oがインストールできない場合は、
緊急対処として「04_h20_lib」フォルダ内にある以下4つのフォルダを
Rのインストール先のライブラリフォルダにコピーしてください。
例えば、
C:¥Users¥ユーザー名¥Documents¥R¥win-library¥バ―ション¥
環境によりことなりますので確認してください。
25
H2Oの起動
このような画面が表示されればOKです!
H2OはJavaServletで動作するサーバーアプリケーションです。
実際にH2O.aiはクラウドサービスですが、今回はローカルでH2Oを
動かし、ブラウザやRからコマンドを投げて結果を受け取ります。
H2Oを終了するコマンドは以下のとおりです
h2o.shutdown()
26
WebブラウザからH2Oを操作する
それでは、まずH2Oをブラウザから操作してみましょう
ブラウザを立ち上げ、以下のURLにアクセスしましょう
http://localhost:54321
先ほどRで起動したH2Oサービスが
54321ポートで利用できるようになっています
27
H2Oサービスの画面
先ほどRで起動したH2Oサービスが
54321ポートで利用できるようになっています
28
学習用データのインポート
29
学習用データのインポート
ファイルを選択
ワークディレクトリを入力 検索ボタン
ファイルが選択される
インポートボタンを押す!
30
学習用データのインポート
インポート完了
31
入力データの検証
データの概要が表示される
32
入力データの検証
パース完了
33
入力データの検証
34
ウェイトモデル構築
モデルを構築(ディープラーニング)
いよいよディープラーニングを使った工程に
入っていきます。
35
ウェイトモデル構築
リストから“DeepLearning”を選択
36
ウェイトモデル構築
ここからディープラーニングのパラメータを設定していきます
6列目(賃料=目的変数)を選択してください
37
ウェイトモデル構築
すべて設定し終えたら、”Build Model” をボタンを押します
活性化関数の設定
ネットワークの設定(配列で指定)
エポック数(バッチサイズ×イテレート数)
ハイパーパラメータと呼ばれるディープラーニングで最も重要な設定です
とりあえず、デフォルトのままモデルを作成します
38
活性化関数の役割
Rectfier(ReLU)
マイナスの数値は0にする
プラスの数値はそのまま残す。
最終的に賃料を出力するニューラルネットワークに
おいて、マイナスの数値をノイズとみなして切り捨て
るのは理に適っている
Tanh
入力値を-1.0~1.0の範囲の数値に整える
-10より小さいデータや10より大きいデータは
-1.0~1.0に置き換えられるため、大きい数値になる
ほど特徴が失われ学習が進まない可能性がある。
①計算結果の単位をそろえて比較しやすくする
②特徴を際立たせる
39
ウェイトモデル構築
40
ウェイトモデル構築の検証
41
RMSLE (Root Mean Squared Logarithmic Error)
 ある値は10、ある値は10億といった、値のレンジが大きな
データの学習に利用します。
 RMSE(すべての誤差の平方根の平均)と比較して
• 対数(log)を計算してから、予測と実績を引き算。
• 予測と実績の誤差を幅ではなく比率として表現
• 対数を取る前に、予測、実績共に+1
回帰問題の評価指標としてRMSEやRMSLEがあります
42
ウェイトモデルの保存
フルパスで保存先を指定(ファイル名まで)
43
ウェイトモデルの保存
モデルが出力された
44
3. Rを使用して賃料予測
Webサービスで学習・出力したモデルから
Rスクリプトで学習・出力したモデルから
45
RからH2Oディープラーニングを使用する
#まずはRスクリプトを読み込みます
source("C:¥¥R_work¥¥rent_predict.R")
スクリプトには ”learning”, ”predict”2つの関数がセットされています
これからは、この関数を使用して予測と評価を行っていきます
46
Rスクリプト 1/4
# 学習
# 第1引数:活性化関数 (型:文字列)
# 第2引数:隠れ層 (型:配列)
# 第3引数:epochs (型:整数)
learning = function(activ, hide, epoc) {
# 教師データの読み込み
teachData<-h2o.importFile(path='nagoya_all_rental_15year_type_coded.txt')
# DeepLearning
rent.dl<-h2o.deeplearning(x=1:5,y=6,teachData, activation=activ, hidden= hide, epochs = epoc)
# 学習モデルの保存
h2o.saveModel(rent.dl , path = 'model', force = TRUE)
}
rent_predict.R (その1)
以下4ページ分が、賃料予測に使用するRスクリプトファイルの内容です。
処理確認用の標準出力のコードは省略してあります。
47
Rスクリプト 2/4
# 予測
# 第1引数:部屋面積 (型:整数)
# 第2引数:築年数 (型:整数)
# 第3引数:建物種別 (型:列挙型(0 or 1)
predict = function(c1, c2, c3, c4){
save_dir <- "data¥¥"
if(c3==1){
type <- "マンション"
} else {
type <- "アパート"
}
leaning_model <- c4
menseki <- paste("部屋面積 = ", c1, "㎡", sep = "")
year <- paste("築年数 = ", c2, "年", sep = "")
type <- paste("物件種別 = ", type, sep = "")
rent_predict.R (その2)
48
Rスクリプト 3/4
targetData <- read.table(file('grid_point.txt',encoding='cp932‘))
rows <- nrow(targetData)
testData <- cbind(targetData,rep(c1, rows))
testData <- cbind(testData,rep(c2, rows))
testData <- cbind(testData,rep(c3, rows))
inFile_name <- paste(c1, c2, c3, sep = "_")
inFile <- paste(inFile_name, ".txt", sep = "")
# h2oのデータフレームへの変換方法がわからないので
# 一旦ファイルへ出力してから ”h2o.importFile” で読み込む
write.table(testData,file=inFile, quote=F,row.names=F, col.names=F,sep='¥t‘)
tmpData <- h2o.importFile(path=inFile)
#学習モデルの読み込み
model <- h2o.loadModel(leaning_model)
rent_predict.R (その3)
49
Rスクリプト 4/4
# 予測
rent.dl.pred <- h2o.predict(model,tmpData)
rent.dl.pred.df <- as.data.frame(rent.dl.pred)
# 予測結果を結合する
predData <- cbind(testData, rent.dl.pred.df)
# ヘッダーの追加
header <- c("x", "y", "menseki", "year", "type", "rent")
predData <- rbind(header, predData)
prefix <- unclass(Sys.time())
outFile <- paste(save_dir, "predict_", inFile_name, "_", prefix, ".csv", sep = "")
# 予測結果を出力
write.table(predData,file=outFile, quote=F,row.names=F, col.names=F,sep=',')
}
rent_predict.R (その4)
50
とりあえず賃料予測
predict(40, 10, 1, "c:¥¥R_work¥¥model¥¥test_model001")
#第1引数:部屋面積 (型:整数)
#第2引数:築年数 (型:整数)
#第3引数:建物種別 (型:列挙型(0:アパート or 1:マンション)
早速、先ほどWebサービスで学習したウェイトモデル
を使って賃料予測してみましょう
51
予測結果
予測結果データは ”C:¥R_work¥data¥” に
出力されていることを確認してください
注)FOSS4G TOKAIのハンズオンで、H2OのlocalWebサービスで生成したモデルが
RのH2O関数を使った予測でエラー終了するケースがありました。
同じようにエラーが出てしまった場合は、3項の “Rを使用して学習から予測までを
一気通貫で行う” で再び学習フェースでウェイトモデルの作成を行いますので
しばらくお待ちください!
52
4. QGISを使って地図上で可視化しよう
53
QGISに背景地図をセットする
C:¥R_work¥03_QGIS¥nagoya_city.qgs
背景地図データセットをQGISに読み込みます
54
予測結果データをQGISに取り込む
Data Source Managerから予測結果(CSV)を
指定して取り込みます
55
予測結果データをQGISに取り込む
ジオメトリ定義などが自動的に行われます
56
QGISへの展開
読み込まれた結果は以下のように表示されます。
次にスタイルを設定します。
57
シンポロジからスタイルを設定
58
賃料用表示スタイルの読み込み
59
スタイルの設定
60
QGISで可視化
61
スタイル調整
濃淡差が大きくない場合は、デフォルトの分類数が多すぎる
可能性がありますので、45→30まで下げてみましょう!
62
再表示
63
5. Rを使用して学習から予測までを
一気通貫で行う
64
RからH2Oを使って学習させよう
#第1引数:活性化関数 (型:文字列)
#第2引数:隠れ層 (型:配列)
#第3引数:epochs 学習回数 (型:整数)
#(例:活性化関数: Rectifier ,200ユニット×2層, エポック数 10 の場合)
learning("Rectifier", c(200, 200), 10)
先にWebブラウザを使って実施したH2Oでのディープ・ラーニング
学習過程をRから実行させます
先に読み込んだ ”rent_predict.R” スクリプトの ”learning”
関数を実行します
実際に学習を行うのは以下の部分になります
h2o.deeplearning(x=1:5,y=6,teachData, activation=activ, hidden= hide, epochs = epoc)
65
H2Oの学習用関数
h2o.deeplearning(x=1:5, y=6, teachData, activation=activ, hidden= hide, epochs = epoc)
説明変数(1列~5列)
目的変数(6列目)
活性化関数
隠れ層のネットワーク
エポック数
学習用データ
隠れ層のネットワークはRのベクトルで渡します
200ユニット×2層のネットワークの場合
C(200,200)の他、rep(200,2)とすることもできます
実際に学習を行うのは以下の部分になります
teachData<-
h2o.importFile(path='nagoya_all_rental_15year_type_coded.txt')
66
学習結果
“C:¥R_work¥model¥” 以下に新たにモデルファイルが
できていることを確認しよう
実はWebのインターフェースを使うより簡単です!
67
賃料予測以降の流れ
predict(40, 10, 1,
"c:¥¥R_work¥¥model¥¥DeepLearning_model_R_157059401
7945_1")
#第1引数:部屋面積 (型:整数)
#第2引数:築年数 (型:整数)
#第3引数:建物種別 (型:列挙型(0:アパート or 1:マンション)
“3.Rを使用して賃料予測” で実施した内容で、
ウェイトモデルを今回作成したものに差し替えるだけです
68
H2Oの予測用関数
h2o.predict(model, tmpData)
H2Oで予測を行部分です
学習で生成したモデル
予測用データ(学習用データ構造の目的変数のカラムを除いたもの)
tmpData <- h2o.importFile(path=inFile)
69
6. ハイパーパラメータを変更して色々試
してみよう
70
試行タイム
● 予測関数のパラメータを変更して様々なパターンの賃料
推定をしてみよう
○ 面積や築年数を変更して予測をして、結果を可視化し比較する
● 学習モデルを変更して違いをみてみよう
○ 隠れ層や学習回数を変更して自分なりのモデルを作成する。
部屋面積 = 30㎡
築年数 = 1年
建物種別 = アパート
部屋面積 = 40㎡
築年数 = 5年
建物種別 = マンション
71
時間に余裕があれば
1. 2019年のデータを使って、賃料推定してみよう
 2015年と2019年のデータではどのような違いが出るか比較する
2. Kaggleのチュートリアルにチャレンジしよう
 タイタニック乗客の生存予測をやってみる
時間に余裕があれば以下のうち、どちらかの課題にチャレンジしよう
データを用意していますのですぐに結果がでます
精度を上げたい方はデータの前処理から行いましょう
72
7. Kaggle Competitionの
チュートリアルにチャレンジしよう
73
Titanic: Machine Learning from Disaster
世界中のデータ・サイエンティストが集うKaggle Competitionsのチュートリアルです
https://www.kaggle.com/c/titanic
74
オリジナルデータ
train.csv PassengerId 1~891 test.csv PassengerId 892~1309
PassengerI Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 0 3 Braund, Mr male 22 1 0 A/5 21171 7.25 S
2 1 1 Cumings, Mfemale 38 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, female 26 0 0 STON/O2. 7.925 S
4 1 1 Futrelle, Mrfemale 35 1 0 113803 53.1 C123 S
5 0 3 Allen, Mr. Wmale 35 0 0 373450 8.05 S
6 0 3 Moran, Mr. male 0 0 330877 8.4583 Q
7 0 1 McCarthy, male 54 0 0 17463 51.8625 E46 S
8 0 3 Palsson, Mamale 2 3 1 349909 21.075 S
9 1 3 Johnson, Mfemale 27 0 2 347742 11.1333 S
10 1 2 Nasser, Mrsfemale 14 1 0 237736 30.0708 C
11 1 3 Sandstrom,female 4 1 1 PP 9549 16.7 G6 S
12 1 1 Bonnell, Mifemale 58 0 0 113783 26.55 C103 S
13 0 3 Saundercocmale 20 0 0 A/5. 2151 8.05 S
14 0 3 Andersson,male 39 1 5 347082 31.275 S
15 0 3 Vestrom, Mfemale 14 0 0 350406 7.8542 S
16 1 2 Hewlett, Mrfemale 55 0 0 248706 16 S
17 0 3 Rice, Mastemale 2 4 1 382652 29.125 Q
18 1 2 Williams, Mrmale 0 0 244373 13 S
19 0 3 Vander Planfemale 31 1 0 345763 18 S
20 1 3 Masselman female 0 0 2649 7.225 C
21 0 2 Fynney, Mrmale 35 0 0 239865 26 S
22 1 2 Beesley, Mmale 34 0 0 248698 13 D56 S
23 1 3 McGowan, female 15 0 0 330923 8.0292 Q
24 1 1 Sloper, Mr. male 28 0 0 113788 35.5 A6 S
25 0 3 Palsson, Mifemale 8 3 1 349909 21.075 S
26 1 3 Asplund, Mrfemale 38 1 5 347077 31.3875 S
27 0 3 Emir, Mr. Famale 0 0 2631 7.225 C
28 0 1 Fortune, M male 19 3 2 19950 263 C23 C25 CS
29 1 3 O'Dwyer, Mfemale 0 0 330959 7.8792 Q
30 0 3 Todoroff, Mmale 0 0 349216 7.8958 S
31 0 1 Uruchurtu, male 40 0 0 PC 17601 27.7208 C
32 1 1 Spencer, Mfemale 1 0 PC 17569 146.5208 B78 C
33 1 3 Glynn, Missfemale 0 0 335677 7.75 Q
34 0 2 Wheadon, Mmale 66 0 0 C.A. 24579 10.5 S
35 0 1 Meyer, Mr. male 28 1 0 PC 17604 82.1708 C
36 0 1 Holverson, male 42 1 0 113789 52 S
37 1 3 Mamee, Mr male 0 0 2677 7.2292 C
38 0 3 Cann, Mr. Emale 21 0 0 A./5. 2152 8.05 S
PassengerI Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
892 3 Kelly, Mr. Jmale 34.5 0 0 330911 7.8292 Q
893 3 Wilkes, Mrsfemale 47 1 0 363272 7 S
894 2 Myles, Mr. Tmale 62 0 0 240276 9.6875 Q
895 3 Wirz, Mr. Almale 27 0 0 315154 8.6625 S
896 3 Hirvonen, Mfemale 22 1 1 3101298 12.2875 S
897 3 Svensson, male 14 0 0 7538 9.225 S
898 3 Connolly, Mfemale 30 0 0 330972 7.6292 Q
899 2 Caldwell, Mmale 26 1 1 248738 29 S
900 3 Abrahim, Mrfemale 18 0 0 2657 7.2292 C
901 3 Davies, Mr. male 21 2 0 A/4 48871 24.15 S
902 3 Ilieff, Mr. Ylmale 0 0 349220 7.8958 S
903 1 Jones, Mr. male 46 0 0 694 26 S
904 1 Snyder, Mrsfemale 23 1 0 21228 82.2667 B45 S
905 2 Howard, Mrmale 63 1 0 24065 26 S
906 1 Chaffee, Mfemale 47 1 0 W.E.P. 5734 61.175 E31 S
907 2 del Carlo, Mfemale 24 1 0 SC/PARIS 27.7208 C
908 2 Keane, Mr. male 35 0 0 233734 12.35 Q
909 3 Assaf, Mr. Gmale 21 0 0 2692 7.225 C
910 3 Ilmakangas,female 27 1 0 STON/O2. 7.925 S
911 3 Assaf Khalifemale 45 0 0 2696 7.225 C
912 1 Rothschild, male 55 1 0 PC 17603 59.4 C
913 3 Olsen, Masmale 9 0 1 C 17368 3.1708 S
914 1 Flegenheimfemale 0 0 PC 17598 31.6833 S
915 1 Williams, Mrmale 21 0 1 PC 17597 61.3792 C
916 1 Ryerson, Mfemale 48 1 3 PC 17608 262.375 B57 B59 BC
917 3 Robins, Mr. male 50 1 0 A/5. 3337 14.5 S
918 1 Ostby, Missfemale 22 0 1 113509 61.9792 B36 C
919 3 Daher, Mr. male 22.5 0 0 2698 7.225 C
920 1 Brady, Mr. Jmale 41 0 0 113054 30.5 A21 S
921 3 Samaan, Mrmale 2 0 2662 21.6792 C
922 2 Louch, Mr. male 50 1 0 SC/AH 308 26 S
923 2 Jefferys, Mmale 24 2 0 C.A. 31029 31.5 S
924 3 Dean, Mrs. female 33 1 2 C.A. 2315 20.575 S
925 3 Johnston, Mfemale 1 2 W./C. 6607 23.45 S
926 1 Mock, Mr. Pmale 30 1 0 13236 57.75 C78 C
927 3 Katavelas, Mmale 18.5 0 0 2682 7.2292 C
928 3 Roth, Miss. female 0 0 342712 8.05 S
929 3 Cacic, Missfemale 21 0 0 315087 8.6625 S
Target(目的変数)
訓練用データ :train.csv (titanic_train.csv)
テスト用データ :test.csv (titanic_test.csv)
正解データ :gender_submission.csv (titanic_survive.csv)
使用するデータのファイル名は
便宜的に変更しています
75
タイタニック号の乗客者リスト(学習用)
PassengerI Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
1 0 3 Braund, Mr male 22 1 0 A/5 21171 7.25 S
2 1 1 Cumings, Mfemale 38 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, female 26 0 0 STON/O2. 7.925 S
4 1 1 Futrelle, Mrfemale 35 1 0 113803 53.1 C123 S
5 0 3 Allen, Mr. Wmale 35 0 0 373450 8.05 S
6 0 3 Moran, Mr. male 0 0 330877 8.4583 Q
7 0 1 McCarthy, male 54 0 0 17463 51.8625 E46 S
8 0 3 Palsson, Mamale 2 3 1 349909 21.075 S
9 1 3 Johnson, Mfemale 27 0 2 347742 11.1333 S
10 1 2 Nasser, Mrsfemale 14 1 0 237736 30.0708 C
11 1 3 Sandstrom,female 4 1 1 PP 9549 16.7 G6 S
12 1 1 Bonnell, Mifemale 58 0 0 113783 26.55 C103 S
13 0 3 Saundercocmale 20 0 0 A/5. 2151 8.05 S
14 0 3 Andersson,male 39 1 5 347082 31.275 S
15 0 3 Vestrom, Mfemale 14 0 0 350406 7.8542 S
16 1 2 Hewlett, Mrfemale 55 0 0 248706 16 S
17 0 3 Rice, Mastemale 2 4 1 382652 29.125 Q
18 1 2 Williams, Mrmale 0 0 244373 13 S
19 0 3 Vander Planfemale 31 1 0 345763 18 S
20 1 3 Masselman female 0 0 2649 7.225 C
21 0 2 Fynney, Mrmale 35 0 0 239865 26 S
22 1 2 Beesley, Mmale 34 0 0 248698 13 D56 S
23 1 3 McGowan, female 15 0 0 330923 8.0292 Q
24 1 1 Sloper, Mr. male 28 0 0 113788 35.5 A6 S
25 0 3 Palsson, Mifemale 8 3 1 349909 21.075 S
26 1 3 Asplund, Mrfemale 38 1 5 347077 31.3875 S
27 0 3 Emir, Mr. Famale 0 0 2631 7.225 C
学習用のデータセット
このデータをディープラーニングで使用するための前処理を行います
欠損
列挙型
Target(目的変数)
76
加工した学習用データ
3 22 0 1 0 7.25 7 0
1 38 1 1 0 71.2833 2 1
3 26 1 0 0 7.925 7 1
1 35 1 1 0 53.1 2 1
3 35 0 0 0 8.05 7 0
3 32 0 0 0 8.4583 7 0
1 54 0 0 0 51.8625 4 0
3 2 0 3 1 21.075 7 0
3 27 1 0 2 11.1333 7 1
2 14 1 1 0 30.0708 7 1
3 4 1 1 1 16.7 7 1
1 58 1 0 0 26.55 2 1
3 20 0 0 0 8.05 7 0
3 39 0 1 5 31.275 7 0
3 14 1 0 0 7.8542 7 0
2 55 1 0 0 16 7 1
3 2 0 4 1 29.125 7 0
2 32 0 0 0 13 7 1
3 31 1 1 0 18 7 0
3 37 1 0 0 7.225 7 1
2 35 0 0 0 26 7 0
2 34 0 0 0 13 3 1
3 15 1 0 0 8.0292 7 1
1 28 0 0 0 35.5 0 1
3 8 1 3 1 21.075 7 0
3 38 1 1 5 31.3875 7 1
3 32 0 0 0 7.225 7 0
1 19 0 3 2 263 2 0
3 22 1 0 0 7.8792 7 1
3 32 0 0 0 7.8958 7 0
1 40 0 0 0 27.7208 7 0
1 37 1 1 0 146.5208 1 1
3 22 1 0 0 7.75 7 1
2 66 0 0 0 10.5 7 0
欠損を埋めたり、列挙型を整数やbool(0,1)に変更します
目的変数
survived
77
タイタニック予測用Rスクリプト
#学習用データの読み込み
teachData <- h2o.importFile(path='titanic_train.csv')
#DeepLearning
#ハイパーパラメータを変更しながら試行錯誤してください
titanic.dl <- h2o.deeplearning(x=1:7,y=8,teachData, activation="Tanh",hidden=c(200,200,200), epochs = 20)
#学習モデルの保存
saved_model <- h2o.saveModel(titanic.dl , path = 'titanic_model', force = TRUE)
#テストデータの読み込み
testData<-h2o.importFile(path='titanic_test.csv')
model <- h2o.loadModel(saved_model)
prediction <- h2o.predict(model,testData)
prediction.df <- as.data.frame(prediction)
#生存データの読み込み
survive <- h2o.importFile(path='titanic_survive.csv')
# 予測結果を結合する
predData <- cbind(as.data.frame(survive), prediction.df)
write.table(as.data.frame(predData), file="titanic_data¥¥titanic_prediction.csv", row.names=F, col.names=F,sep=',')
‘titanic_train.csv’
‘titanic_test.csv’
‘titanic_survive.csv’
プリセットしています
“titanic_data¥titanic_prediction.csv”に結果が保存されます
このスクリプトを実行すると学習から予測まで一気に処理します!
78
予測結果
PassengerId survived predict
892 0 0.091084
893 1 0.384977
894 0 -0.04692
895 0 0.155006
896 1 0.419167
897 0 0.270391
898 1 0.604003
899 0 -0.03481
900 1 0.774943
901 0 -0.00742
902 0 0.111741
903 0 0.027322
904 1 1.046642
905 0 -0.00789
906 1 0.961012
907 1 0.92628
908 0 0.028732
909 0 0.196395
910 1 0.464714
911 1 0.324167
912 0 0.103
913 0 0.720229
914 1 0.901949
915 0 0.160242
916 1 0.822221
917 0 -0.0448
918 1 1.07005
919 0 0.184429
920 0 0.364773
921 0 -0.05209
922 0 -0.04701
923 0 -0.0412
924 1 0.286397
925 1 0.265927
926 0 0.521075
927 0 0.218412
928 1 0.711104
929 1 0.723459
930 0 0.172438
931 0 0.368398
932 0 0.009988
933 0 0.487505
934 0 0.049933
935 1 0.974204
936 1 0.948209
937 0 0.167457
予測結果
予測結果(predict)を単純に四捨五入した値を
正解(survived)と比較した正解率は約90%
実はDeepLearningのパラメータ設定を変更することよりも
データの前処理の段階で生死にかかわる要因を取捨選択・
加工することが非常に重要

More Related Content

Similar to ほぼノン・プログラミングでAI × G空間分析(FOSS4G 2019 KOBE.KANSAI ハンズオン)

グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & AppsGoogle Cloud Platform - Japan
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由gree_tech
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Seiya Tokui
 
20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践
20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践
20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践Atsushi ENTA
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127Natsutani Minoru
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_planMasao Fujii
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネスMie Mori
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスKentaro Yoshida
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編順也 山口
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックKentaro Ebisawa
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu GotoInsight Technology, Inc.
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Kenta Oono
 
[読会]Causal transfer random forest combining logged data and randomized expe...
[読会]Causal transfer random forest   combining logged data and randomized expe...[読会]Causal transfer random forest   combining logged data and randomized expe...
[読会]Causal transfer random forest combining logged data and randomized expe...shima o
 
Challengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみてChallengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみてYukio Saito
 
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介Tamakoshi Hironori
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Ryo Sasaki
 
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1Hiroshi Masuda
 
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤Google Cloud Platform - Japan
 
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~Developers Summit
 

Similar to ほぼノン・プログラミングでAI × G空間分析(FOSS4G 2019 KOBE.KANSAI ハンズオン) (20)

グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
Deep learning実装の基礎と実践
Deep learning実装の基礎と実践Deep learning実装の基礎と実践
Deep learning実装の基礎と実践
 
20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践
20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践
20100910 Arduino・Pachube・Sketchupを連携したローコストモニタリングの実践
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127
 
使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan使ってみませんか?pg hint_plan
使ってみませんか?pg hint_plan
 
Big data解析ビジネス
Big data解析ビジネスBig data解析ビジネス
Big data解析ビジネス
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービス
 
グラフデータ分析 入門編
グラフデータ分析 入門編グラフデータ分析 入門編
グラフデータ分析 入門編
 
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタックONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
ONIC2017 プログラマブル・データプレーン時代に向けた ネットワーク・オペレーションスタック
 
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
[D33] そのデータベース 5年後大丈夫ですか by Hiromu Goto
 
Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)Introduction to Chainer (LL Ring Recursive)
Introduction to Chainer (LL Ring Recursive)
 
[読会]Causal transfer random forest combining logged data and randomized expe...
[読会]Causal transfer random forest   combining logged data and randomized expe...[読会]Causal transfer random forest   combining logged data and randomized expe...
[読会]Causal transfer random forest combining logged data and randomized expe...
 
Challengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみてChallengers 2013 winter ハッカソンに参加してみて
Challengers 2013 winter ハッカソンに参加してみて
 
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
多言語を一つの処理系でハイパフォーマンスに実行するGraalPythonの紹介
 
Aws summit tokyo 2016
Aws summit tokyo 2016Aws summit tokyo 2016
Aws summit tokyo 2016
 
Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上Datadog Agent on CloudRunによるGCPトレービリティ向上
Datadog Agent on CloudRunによるGCPトレービリティ向上
 
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
Tableau Developers Club 外部サービス連携#1 Tabpy触ってみよう#1
 
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
CEDEC 2015: Google スケールで実現する!ゲーム&分析基盤
 
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
【C-2・醍醐様】AIとAPIがITインフラにもたらす変化 ~プログラマブルなクラウド型Wi-Fi~
 

ほぼノン・プログラミングでAI × G空間分析(FOSS4G 2019 KOBE.KANSAI ハンズオン)