うんかいったーハッカソン 2016 02-20

151
熊本高等専門学校 建築社会デザイン工学科 助教 森下功啓 2016-02-20 1 うんかいったー ハッカソン

Upload: katsuhiro-morishita

Post on 12-Apr-2017

3.921 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: うんかいったーハッカソン 2016 02-20

熊本高等専門学校 建築社会デザイン工学科 助教 森下功啓

2016-02-20

1

うんかいったー ハッカソン

Page 2: うんかいったーハッカソン 2016 02-20

INDEX

• うんかいったーの紹介•機械学習入門• うんかいったーの場合の特徴量と結果•プログラムの説明•環境構築方法の説明(さらっと)•ハッカソン解説•ハッカソン!!!!!!•表彰

2

Page 3: うんかいったーハッカソン 2016 02-20

3

http://since0705.net/blog/mt-fuji-climb-day2/

Page 4: うんかいったーハッカソン 2016 02-20

4

http://kumamoto.photo/archives/picture.php?/2581/search/551

Page 5: うんかいったーハッカソン 2016 02-20

5

しかし、毎日雲海がみられる訳ではない

Page 6: うんかいったーハッカソン 2016 02-20

6

https://twitter.com/kabechoro818/status/661309204745945088

Page 7: うんかいったーハッカソン 2016 02-20

阿蘇の雲海発生状況

• 2004年〜2013年のアマチュアカメラマンの観測結果

7

*観測者の行動パターンに起因した観測漏れは十分に考えられます。

02468

101214

12/30/01 12/31/03 12/30/05 12/30/07 12/30/09 12/30/11 12/30/13 12/30/15

頻度

Page 8: うんかいったーハッカソン 2016 02-20

阿蘇の雲海発生状況

• 2004年〜2013年のアマチュアカメラマンの観測結果

8

*観測者の行動パターンに起因した観測漏れは十分に考えられます。

Rで頻度を描いてみた

Page 9: うんかいったーハッカソン 2016 02-20

9

Page 10: うんかいったーハッカソン 2016 02-20

10

せっかく来たのに・・・ うっひょー!

Page 11: うんかいったーハッカソン 2016 02-20

予報システム UNKAITTER

11

https://twitter.com/unkaitter

http://otennki.com/%E3%82%A2%E3%83%A1%E3%83%80%E3%82%B9%E3%81%A8%E3%81%AF%EF%BC%9F%E9%9B%A8%E5%87%BA%E3%81%99%E3%81%8B%E3%82%89%E3%82%A2%E3%83%A1%E3%83%80%E3%82%B9%E3%81%98%E3%82%83%E3%81%AA%E3%81%8B

アメダス Twitter

サーバー

観測情報予報のツイート

Googleスプレッドシート

ツイート内容・フォロワー数

Page 12: うんかいったーハッカソン 2016 02-20

検証システム UNKAITTERBOT

12

Twitter

サーバー

気象情報 ツイート

twilog

[ローカルPC]Webカメラ画像

Webカメラ画像

写真判定

[Googleスプレッドシート]気象情報気象予報情報写真判定結果

検証データ

ツイート履歴

写真判定結果など

Page 13: うんかいったーハッカソン 2016 02-20

雲海発生を予想する手法

13

Page 14: うんかいったーハッカソン 2016 02-20

2通りの手法がある

•数値解析•機械学習

14

Page 15: うんかいったーハッカソン 2016 02-20

数値解析

•スーパーコンピュータが必要だ!!

15

http://image.itmedia.co.jp/ait/articles/1308/30/to_tsubame_4.jpg

http://119.245.212.160/app- def/S-102/WordPress/wp-content/uploads/2009/06/column_200904_1_clip_image002_0000.j pg

Page 16: うんかいったーハッカソン 2016 02-20

16

微分方程式

差分化状態変化

浮力

気象数値情報

境界条件

粒子法

熱力学

格子法

ナビエ・ストークス

粘性項

地形

分散計算

並列化

行列計算

温位 重力ポテンシャル地球規模での計算

超ローカル気象 WRF

ライブラリ

高高度気象データ

湿数物性値

格子の切り方数値予報

Page 17: うんかいったーハッカソン 2016 02-20

17

Page 18: うんかいったーハッカソン 2016 02-20

18

あとは機械学習

え、勉強するの?心配しなくても大丈夫。

勉強するのはソフトウェアです。

Page 19: うんかいったーハッカソン 2016 02-20

機械学習

•条件と結果 を ソフトウェア に学習させる

•機能を限定されたAIと考えても良い

19

Page 20: うんかいったーハッカソン 2016 02-20

予測手法の基礎アイデア

•過去にアマチュアカメラマンが撮り集めた雲海情報10年分とアメダスの気象データを基に、(風景写真に適した)雲海が発生するかどうかを機械学習する

•学習器にはランダムフォレストを用いている

20

Page 21: うんかいったーハッカソン 2016 02-20

21

はあ?

Page 22: うんかいったーハッカソン 2016 02-20

安心して下さい機械学習を説明しますよ

22

Page 23: うんかいったーハッカソン 2016 02-20

23

ここは4F

陶器製のコップ

落としたらどうなる?

Page 24: うんかいったーハッカソン 2016 02-20

24

きっとコップは割れる。

なぜ、想像できるんだろう?

Page 25: うんかいったーハッカソン 2016 02-20

25

コップや皿を落として割った経験が少なからずあるからではないだろうか!?

Page 26: うんかいったーハッカソン 2016 02-20

26

つまり、

陶器製コップ落とす => 割れる

という現象を学習している。

Page 27: うんかいったーハッカソン 2016 02-20

27

人は一般的に、

条件 => 結論

と学習結果をもとに結果を推論している。

Page 28: うんかいったーハッカソン 2016 02-20

28

条件・特徴 答え・結論

左右を結び付ける行為を学習という

Page 29: うんかいったーハッカソン 2016 02-20

29

条件・特徴 答え・結論

学習をソフトウェアで実現する技術を機械学習という

Page 30: うんかいったーハッカソン 2016 02-20

30

機械学習の用例を挙げる。

例えば、体重と身長で男女を識別する場合だ。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 31: うんかいったーハッカソン 2016 02-20

31

この場合、体重と身長が特徴となる。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 32: うんかいったーハッカソン 2016 02-20

32

ここで注目して欲しいのだけど、

特徴は数値だ。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 33: うんかいったーハッカソン 2016 02-20

33

機械学習において、識別や予測に使う特徴を数値で表したものを「特徴量」という。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 34: うんかいったーハッカソン 2016 02-20

34

そして、特徴量を順番に並べたものを特徴ベクトルという。例えば、(身長, 体重)だ。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 35: うんかいったーハッカソン 2016 02-20

35

ちなみに、この線のことを決定境界とか識別面と呼ぶ

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 36: うんかいったーハッカソン 2016 02-20

36

ここで、「数値」の種類について整理しておきたい。

Page 37: うんかいったーハッカソン 2016 02-20

37

特徴は必ずしも順序があるとは限らない。

例えば、「女」と「男」に順序はない。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 38: うんかいったーハッカソン 2016 02-20

38

え、よく分からない?

つまり、「女」と「男」に大小関係はないってことさ。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 39: うんかいったーハッカソン 2016 02-20

39

一方で、身長には大小関係がある。

例えば、身長150cmと170cmでは170cmの方が大きい。

http://homepage3.nifty.com/orangejuice/weightBunpu.gif

Page 40: うんかいったーハッカソン 2016 02-20

40

順序のない数値を「名義尺度」と言い、順序のある数値を「順序尺度」という。

Page 41: うんかいったーハッカソン 2016 02-20

41

機械学習ではあまり意識しないかも知れないが、他にも次の分け方がある。

和差は可能だが比例に意味が無い「間隔尺度」和差積商の計算ができる「比例尺度」

「良い」「悪い」を5段階で答えるアンケートは間隔尺度で、体重は比例尺度だ。

Page 42: うんかいったーハッカソン 2016 02-20

42

ともかく、機械学習では入力も出力も数値であることを頭に入れておこう。

Page 43: うんかいったーハッカソン 2016 02-20

43

ん?

「女」とか「男」を入出力する時どうすんだって?

名義尺度も仮に数字にしてしまうのさ。

女=>0.0,男=>1.0のように。

Page 44: うんかいったーハッカソン 2016 02-20

44

本題に戻ろう。

Page 45: うんかいったーハッカソン 2016 02-20

機械学習の学習

45

特徴ベクトル 答え

機械学習では特徴ベクトルを使う。

Page 46: うんかいったーハッカソン 2016 02-20

学習対象の例

46

気圧配置・大気内の可降水量・

地形明日の天候

Page 47: うんかいったーハッカソン 2016 02-20

機械学習の学習を具体的に

47

y = 𝑓(𝑋)

特徴ベクトル 答え

これを実現する関数fを学習する。

Page 48: うんかいったーハッカソン 2016 02-20

明日の天候を識別する例(例えば、Y>0.5で雨)

48

y = 𝑓(𝑋)y = 𝑎(𝑥( + 𝑎+𝑥+ + 𝑎,𝑥, + 𝑎-ここで、𝑥(:気圧配置, 𝑥+:可降水量, 𝑥,:地形

*この例では、式を線形で表しているが、非線形でも良い。**このモデルはあくまで形を表現しただけで、実際に天候を予測できる訳ではない。

係数aを学習する

Page 49: うんかいったーハッカソン 2016 02-20

SIN関数を学習する例

49

http://riverocean.blog85.fc2.com/blog-category-1.html

学習データ(青+)

学習結果(赤線)

正解(緑線)

Page 50: うんかいったーハッカソン 2016 02-20

どうやって学習するの?学習のイメージ

50

関数fを乱数でテキトーに作成

教師データに対し、yを計算

yと、答えを比較して誤差を計算

誤差が減少するように、関数fをちょっと修正

ループ

誤差収束でループ脱出

Page 51: うんかいったーハッカソン 2016 02-20

学習過程の視覚的イメージ

•誤差関数の表面を重力に従って下に落ちるイメージ

51

http://nineties.github.io/prml-seminar/fig/gradient-method.png

Page 52: うんかいったーハッカソン 2016 02-20

どうやって学習するの?アルゴリズム的に。

52

学習の方法は無数にある。

ニューラルネットワークサポートベクターマシンランダムフォレスト

その他

このスライドでは解説しきれないので、割愛します。

Page 53: うんかいったーハッカソン 2016 02-20

言葉の整理

•特徴量•識別・回帰などに使えるパラメータ•数値である

•特徴ベクトル•特徴量を順番に格納したベクトル

•学習データ•学習に使うデータ

•教師データ•学習データに正解ラベルをつけたもの

53

Page 54: うんかいったーハッカソン 2016 02-20

54

Page 55: うんかいったーハッカソン 2016 02-20

うんかいったーの場合

55

Page 56: うんかいったーハッカソン 2016 02-20

うんかいったーの学習対象

56

気象Etc. 雲海出現の有無

条件 結果

Page 57: うんかいったーハッカソン 2016 02-20

57

何が特徴になるのか、考えてみる。

Page 58: うんかいったーハッカソン 2016 02-20

雲海の模式図

58

標高

山山

*そもそも雲ってナンダッケ・・・

Page 59: うんかいったーハッカソン 2016 02-20

水蒸気と空気の性質

59

http://www.ons.ne.jp/~taka1997/education/2003/geology/07/

Page 60: うんかいったーハッカソン 2016 02-20

水蒸気と空気を工学的に表した空気線図

60

http://bacspot.dip.jp/virtual_link/www/other_lecture/%E7%A9%BA%E8%AA%BF%E8%A8%AD%E8%A8%88%E3%81%AE%E5%9F%BA%E7%A4%8E(%E7%A9%BA%E8%AA%BF%E7%A9%BA%E6%B0%97%E3%81%A8%E7%A9%BA%E6%B0%97%E7%B7%9A%E5%9B%B3%E8%A8%88%E7%AE%97%E8%A1%A8)/

Page 61: うんかいったーハッカソン 2016 02-20

大気の性質

61

http://fnorio.com/0152adiabatic_lapse_rate/adiabatic_lapse_rate.html

湿潤断熱変化の方程式を解析的に解くと温度分布を得る。

Page 62: うんかいったーハッカソン 2016 02-20

大気の安定性を表す温位

62

http://www.asahi-net.or.jp/~rk7j-kndu/kisho/kisho11.html

温位は大気安定性の指標です。安定していると、対流が生じません。

Page 63: うんかいったーハッカソン 2016 02-20

63

色々はしょって

Page 64: うんかいったーハッカソン 2016 02-20

雲海が発生しやすい状況

•逆転層が形成(≒ある意味上空よりも冷えている)•風が弱い•日中の飽和水蒸気量が大きい•夜間に地表付近が冷える•適度な標高まで露点温度を下回っている

64

*曇でも、雲海は発生する。*曇りの日は写真に適さないだけだ。

Page 65: うんかいったーハッカソン 2016 02-20

特徴量は?

65

正直、よく分からない。

AMeDAS(アメダス)の気象データをぶっこむか。

Page 66: うんかいったーハッカソン 2016 02-20

特徴量は?

66

鉛直方向の大気観測ができれば早いのだけど、、

阿蘇山山頂の気象観測所は噴火で停止したし。

阿蘇乙姫と熊本のアメダスを使って何とかする!!

Page 67: うんかいったーハッカソン 2016 02-20

うんかいったーの機械学習

67

気温平均気温日射時間湿度気圧

露点温度湿数視程Etc.

0: 雲海出なかった1: 雲海出た

Page 68: うんかいったーハッカソン 2016 02-20

YYYY-MM-DDの予想の場合

68

(YYYY-MM-DDの前日に手に入る気象データ)

気温平均気温日射時間湿度気圧露点温度湿数視程Etc.

(YYYY-MM-DDの結果)0: 雲海出なかった

1: 雲海出た

Page 69: うんかいったーハッカソン 2016 02-20

特徴ベクトルの作成

69

Page 70: うんかいったーハッカソン 2016 02-20

70

Oops!

Page 71: うんかいったーハッカソン 2016 02-20

答えの用意

• 北山レストランのWebカメラ映像を利用させてもらっている

71

http://ryuudesu.blog.shinobi.jp/%E7%86%8A%E6%9C%AC%E7%9C%8C/%E9%98%BF%E8%98%87%E3%83%BB%E5%A4%96%E8%BC%AA%E5%B1%B1%E3%82%92%E7%B8%A6%E8%B5%B0%E3%81%A0%E3%82%88%E3%80%81

Page 72: うんかいったーハッカソン 2016 02-20

1: 雲海が出た

72

2015-12-13

AM 6

AM 7

AM 8

AM 9

AM 10

Page 73: うんかいったーハッカソン 2016 02-20

0: 雲海が出ていない

73

雲が低く立ち込めたまたは、霧が厚く発達した

霧の密度が薄いまたは、PM2.5

Page 74: うんかいったーハッカソン 2016 02-20

0 OR 1: 雲海が微妙

74

雲海は出ているが、写真に適しているかどうかは微妙だ。

現状では、全く空が見えない場合は0としている。

Page 75: うんかいったーハッカソン 2016 02-20

判定は難しい

75

少し時刻が異なったり、視点が異なると見事な雲海に見えたりする。

南北で偏りが有ったり・・・

Page 76: うんかいったーハッカソン 2016 02-20

雲の密度が小さくても綺麗な写真が取れない訳じゃないけど、無視

76

Page 77: うんかいったーハッカソン 2016 02-20

作成した正解ラベル

• 日付¥t結果¥t検証フラグ の順

• ¥tはタブを表すコード• xは不明 を表し、

• vは検証に利用してOK を表す。

77

Page 78: うんかいったーハッカソン 2016 02-20

78

Page 79: うんかいったーハッカソン 2016 02-20

プログラムの説明

79

Page 80: うんかいったーハッカソン 2016 02-20

GITHUBページ

• http://katsuhiromorishita.github.io/Aso_Sea_Clouds_Pridiction/

80

Page 81: うんかいったーハッカソン 2016 02-20

GITHUBリポジトリ

81

https://github.com/KatsuhiroMorishita/Aso_Sea_Clouds_Pridiction

Page 82: うんかいったーハッカソン 2016 02-20

重要なスクリプト

• feature.py: 気象データと日付を渡すと特徴ベクトルを生成します。

• core.py: うんかいったーにツイートするサーバーが実行するスクリプトです。実行時点で最新の予想値を計算します。

• learning_repeat.py: 数千回の機械学習を行い、その都度学習済みの機械学習機を保存します。同時に生成されるverify_reportには個々の学習機の学習結果が保存され、性能の高い機械学習機が分かります。

• check4learned_machine.py: learning_repeat.pyの作成した学習機を読みだして、閾値による判定を実施します。利用する学習機の選択に利用します。

82

Page 83: うんかいったーハッカソン 2016 02-20

ライブラリ

• timeKM.py: 時刻関係の処理を行う。• learning.py: 学習を行う。• predict.py: 予想を行う。• create_learning_data.py: 教師データと検証用のデータを作成・保存する。

83

Page 84: うんかいったーハッカソン 2016 02-20

補助ツール

• twilog_photo: twilogにアップしているWebカメラの写真をダウンロードする。

• weather: 気象庁発表の天気予報をダウンロードする。• weather_satellite: 気象庁から気象衛星の写真をダウンロードする。

• web_cam_capt: 配信されているWebカメラ画像をダウンロードする。

84

Page 85: うんかいったーハッカソン 2016 02-20

その他のファイル

• amedas_asoOtohime.csv: 阿蘇乙姫のアメダス観測データ。気象庁のサイトから収集した。

• amedas_kumamoto.csv: 熊本市のアメダス観測データ。気象庁のサイトから収集した。

• entry_16.pickle: 16時台の予想に使う学習済み機械学習機のシリアライズ化データ。

• entry_23.pickle: 23時台の予想に使う学習済み機械学習機のシリアライズ化データ。

• unkai_date.csv: 雲海発生実績と学習の検証に使うかどうかのフラグを収めたファイル。

• production.sqlite3: ネットから収集した雲海の撮影日が格納されているデータベース。

85

Page 86: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

86

Page 87: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

87

23時台予報用の特徴ベクトル作成関数

Page 88: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

88

引数は、予報日と気象データ

Page 89: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

89

特徴ベクトルを格納するリスト

Page 90: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

90

気象データを抽出する関数

Page 91: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

91

判定対象日

Page 92: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

92

参照する時刻

Page 93: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

93

気象データ

Page 94: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

94

気象データのインデックス

Page 95: うんかいったーハッカソン 2016 02-20

特徴ベクトル生成プログラム

• feature.py

95

引き出す気象パラメータ

Page 96: うんかいったーハッカソン 2016 02-20

記述言語

96

Pythonで記述しています。

Page 97: うんかいったーハッカソン 2016 02-20

さっきのはもう少し洗練できる・・・

• 最近作った、需要電力予測プログラムの例• https://www.dropbox.com/s/9146nu8spmpz9r8/create_

feature.py?dl=0

97

Page 98: うんかいったーハッカソン 2016 02-20

他言語に慣れた方へ

• Pythonでは、インデントでスコープを表します。• インデントはタブか半角スペースです。• タブと半角スペースが混ざると良くないです。

98

Page 99: うんかいったーハッカソン 2016 02-20

99

Page 100: うんかいったーハッカソン 2016 02-20

環境構築

100

Page 101: うんかいったーハッカソン 2016 02-20

101

実行に必要なインタプリタとライブラリ

Page 102: うんかいったーハッカソン 2016 02-20

必要な環境

•プログラムの実行環境•エディタ•プログラムのソースコード• (GitHubのアカウント)• Excelの様な表計算ソフト

102

Page 103: うんかいったーハッカソン 2016 02-20

プログラムの実行環境

•Python 3.5•numpy• scipy•matplotlib• scikit-learn

103

Page 104: うんかいったーハッカソン 2016 02-20

プログラムの実行環境構築方法環境を作るのが面倒なら、ANACONDAをインストールしよう。

104

https://www.continuum.io/downloads

Page 105: うんかいったーハッカソン 2016 02-20

プログラムの実行環境構築方法WINDOWS向けANACONDAインストール解説動画もあります。

105

https://www.youtube.com/watch?v=7u6FYmhFtNQ

Page 106: うんかいったーハッカソン 2016 02-20

プログラムの実行環境構築方法FOR MAC

• homebrew -> pyenv -> Anaconda•この順でインストールがお勧め

106

Page 107: うんかいったーハッカソン 2016 02-20

107

プログラムの編集に必要なエディタ

Page 108: うんかいったーハッカソン 2016 02-20

エディタはPYCHARMかSUBLIME TEXTがお勧め

• PyCharm• https://www.jetbrains.com/pycharm/

• Sublime Text• https://www.sublimetext.com/3

108

Page 109: うんかいったーハッカソン 2016 02-20

109

プログラムソースコードの入手

Page 110: うんかいったーハッカソン 2016 02-20

GITHUBアカウントを持っているなら、フォーク

110

https://github.com/KatsuhiroMorishita/Aso_Sea_Clouds_Pridiction

クリック

Page 111: うんかいったーハッカソン 2016 02-20

フォークした後に、リポジトリのクローン

111

https://github.com/KatsuhiroMorishita/Aso_Sea_Clouds_Pridiction

クリック

*GitHub Desctopをお持ちの方

Page 112: うんかいったーハッカソン 2016 02-20

フォークした後に、リポジトリのクローン

112

https://github.com/KatsuhiroMorishita/Aso_Sea_Clouds_Pridiction

コピー

*Gitクライアントソフトをお持ちの方

Page 113: うんかいったーハッカソン 2016 02-20

113

持ってないよ(汗)という方は、

Page 114: うんかいったーハッカソン 2016 02-20

114

アカウントを作って欲しいが・・・

Page 115: うんかいったーハッカソン 2016 02-20

リポジトリのダウンロード

115

https://github.com/KatsuhiroMorishita/Aso_Sea_Clouds_Pridiction

クリック

*GitHubにアカウントを持っていない方

Page 116: うんかいったーハッカソン 2016 02-20

116

Page 117: うんかいったーハッカソン 2016 02-20

ハッカソン!!

117

Page 118: うんかいったーハッカソン 2016 02-20

提供データ• 2015-11〜2016-01の天気予報

• https://goo.gl/flq918

• 2015-08以降のWebカメラの映像• https://goo.gl/0UfVf5

• SNSで収集した雲海情報• https://goo.gl/DsUZQ7

• 2015-11以降の衛星赤外画像• https://goo.gl/9c4R8q

• Webカメラ画像の判定結果 & ソースコード

• https://github.com/KatsuhiroMorishita/Aso_Sea_Clouds_Pridiction

118

Page 119: うんかいったーハッカソン 2016 02-20

テーマ

雲海の発生予測精度を高める

119

Page 120: うんかいったーハッカソン 2016 02-20

優勝の決め方

最も高い予想精度を

叩きだした人を優勝とする

120

Page 121: うんかいったーハッカソン 2016 02-20

点数の定義

121

𝑝 =正解数−出たのに出なかったと予想した数−出なかったのに出たと予想した数×5

Page 122: うんかいったーハッカソン 2016 02-20

学習結果の検証方法

•学習に2015-11-30までのデータを用いる

•検証に2015-12-01〜2016-02-14のデータを用いる

122

Page 123: うんかいったーハッカソン 2016 02-20

テーマの実現方法

•より良い特徴ベクトルを開発•より良い機械学習器を使う•より良い学習アルゴリズムを用いる•独自の学習器を構築

123

Page 124: うんかいったーハッカソン 2016 02-20

テーマの実現方法と編集対象

•より良い特徴ベクトルを開発• feature.py

•より良い機械学習器を使う• 「 RandomForestRegressor 」の記述のあるスクリプトファイル全て(core.pyは今回は不要)•学習パラメータを変更してもよい

•より良い学習アルゴリズムを用いる•学習データの用意の仕方なら、

create_learning_data.py

124

Page 125: うんかいったーハッカソン 2016 02-20

125

• 独自の学習器を構築

Free Your Mind.

えーと、どう実現してもOKです!

Page 126: うんかいったーハッカソン 2016 02-20

作業の流れ

1. プログラム改造2. 学習3. 検証4. 成績を付ける5. 成績をスプレッドシートに自己申告

1. https://goo.gl/CfqUJK

126

Page 127: うんかいったーハッカソン 2016 02-20

127

feature.pyを変更した試行する流れ

Page 128: うんかいったーハッカソン 2016 02-20

FEATURE.PYを改造する

128

時刻、気象パラメータを変更

Page 129: うんかいったーハッカソン 2016 02-20

学習の試行回数をセット

• learning_repeat.py

129

時間がかかるので100回とする

*ここでの「試行回数」はニューラルネットワークなどでの「学習回数」とは区別してください。

Page 130: うんかいったーハッカソン 2016 02-20

学習に使う期間をセット

• learning_repeat.py

130

2015-11-30まで

Page 131: うんかいったーハッカソン 2016 02-20

閾値をセット

• learning_repeat.py

131

閾値を0.5のみとするために、ここに0.6と記入

Page 132: うんかいったーハッカソン 2016 02-20

LEARNING_REPEAT.PYを実行

•ターミナル、もしくはコマンドプロンプトを起動•コマンド• python learning_repeat.py(return key)

132

Page 133: うんかいったーハッカソン 2016 02-20

LEARNING_REPEAT.PYを実行した結果

•試しに、10回学習

133

Page 134: うんかいったーハッカソン 2016 02-20

検証期間を変更

• check4learned_machine.py

134

2015-12-01〜2016-02-15

Page 135: うんかいったーハッカソン 2016 02-20

CHECK4LEARNED_MACHINE.PYを実行

•ターミナル、もしくはコマンドプロンプトを起動•コマンド

• python check4learned_machine.py 16 _f16(return key)• 第1引数:対象時刻• 第2引数:対象フォルダ名

135

Page 136: うんかいったーハッカソン 2016 02-20

CHECK4LEARNED_MACHINE.PYを実行した結果

•ターミナル、もしくはコマンドプロンプトを起動

136

生成されたファイル

Page 137: うんかいったーハッカソン 2016 02-20

成績を確認する

• learned_machine_repeat.csvを開くと、学習器・日毎の予測結果が出力されている

137

Page 138: うんかいったーハッカソン 2016 02-20

成績を申告する

• https://goo.gl/CfqUJK

138

Page 139: うんかいったーハッカソン 2016 02-20

139

その他

Page 140: うんかいったーハッカソン 2016 02-20

ヒント

• あまり予想に貢献していない特徴量は利用しない• ランダムフォレストを利用している場合、

learning.pyを実行すると各特徴量の重要性判定値を出力してくれるので、それを見ると良い。

•次元圧縮(主成分分析:PCA)をやっても良い

140

↓大きい方が影響が大きいことを示している

Page 141: うんかいったーハッカソン 2016 02-20

学習と予測の実行時にエラーメッセージが出るけど無視して下さい

•特徴量を-1.0〜1.0の間に納めなさいとエラーが出る。•正規化という処理が必要です。•将来のバージョンでは特徴量がこの範囲内でないと実行されなくなります。

141

Page 142: うんかいったーハッカソン 2016 02-20

142

Page 143: うんかいったーハッカソン 2016 02-20

このスライドで省略したこと

• このスライドでは、以下の項目を省略している•やってみて上手く行かなかったら勉強しよう•省略項目• 正規化• 手法間の差異• 過学習• 局所解• 次元の呪い• 最新の学習手法• 次元圧縮

143

• 教師あり学習• 教師なし学習• 半教師あり学習• 強化学習

Page 144: うんかいったーハッカソン 2016 02-20

参考文献

•Neural Network TensorFlow入門講座• https://drive.google.com/file/d/0B04

ol8GVySUubjVsUDdXc0hla00/view•機械学習の最前線を俯瞰できます•ニューラルネットワークに関する解説もあり

144

Page 145: うんかいったーハッカソン 2016 02-20

参考文献(動画)

• CR10 Pythonとscikit-learnではじめる機械学習 (ja)• https://www.youtube.com/watch?v=yp6LIjc

ZgoQ• 0319 WBS 機械学習が変える世界• https://www.youtube.com/watch?v=CthNh

T5lQlo•人工知能:機械学習の視覚的理解• https://www.youtube.com/watch?v=RnJCv

GAGqtk

145

Page 146: うんかいったーハッカソン 2016 02-20

146

Page 147: うんかいったーハッカソン 2016 02-20

没スライド

147

Page 148: うんかいったーハッカソン 2016 02-20

これは回帰問題か?識別問題か?

• 「雲海が出る」 か 「雲海が出ない」 は識別問題

• だけど、予報値として「明日は○○%」としたい• そこで、あえて回帰問題として解く

148

*回帰か識別のどちらを使うかで機械学習器の種類が決まる。

Page 149: うんかいったーハッカソン 2016 02-20

実はうちの「○○%」は確率じゃない

• 機械学習器の出力は尤度(ゆうど)といって、もっともらしさでしか無い

149

Page 150: うんかいったーハッカソン 2016 02-20

うんかいったーの予報タイミング

150

16:20頃 23:20頃

Page 151: うんかいったーハッカソン 2016 02-20

機械学習器の選択

•以下の要素により、使う学習器を選択する•学習データの量•特徴ベクトルの次元数•逐次学習の必要性•回帰か識別か•時系列による状態変化の有無•教師データの有無

151