狠狠撸

狠狠撸Share a Scribd company logo
怖くない人工知能実装
@Java Doでしょう #02
~wekaを使った機械学習入門~
自己紹介
じょんすみす(ひらがな)
@__john_smith__
※フォロー非推奨
どこにでもいる普通のアル中
願望
北海道帰りたい(ついに上陸!)
これ→
彼女欲しい
今日の内容
機械学習とは
Hands on
機械学習の注意点
参考文献
Q&Aコーナ
最初にちょっと
本日は「体験してもらう」ことが目的です
そのため、難しい話を端折ってたりするので
理論的に正確ではない部分があります
より詳しい話や、理論的な話は
参考の書籍を最後に記載したので
そちらを参照していただければと思います
機械学習に限らず1回のセミナーで実用レベルに
達するのは難しいのです
機械学習とは
機械が学習するんだ
データの中にあるパターンを見つけ出す
機械学習とは
機械が学習するんだ
データの中にあるパターンを見つけ出す
機械学習とは
機械が学習するんだ
データの中にあるパターンを見つけ出す
はい、何を言ってるかわからないですね
機械学習とは
機械が学習するんだ
データの中にあるパターンを見つけ出す
例) ゴルフをするかしないかの判断をデータから
天気 気温{高, 中, 低} 湿度{高, 普通} 風{有, 無} やる/やらない
晴れ 高 高 無 やらない
曇り 高 高 無 やる
雨 低 普通 有り やらない
… … … … …
過去のやった/やらなかった実績からプレイできる条件を探る
機械学習とは
これを愚直に実装すると…
boolean play = false;
if (outlook == “overcast”) {
play = true;
} else if (outlook == “sunny”) {
if (humidity == “high”) {
play = false;
} else if (humidity == “normal”) {
play = true;
}
} else if
...
機械学習とは
これを愚直に実装すると…
boolean play = false;
if (outlook == “overcast”) {
play = true;
} else if (outlook == “sunny”) {
if (humidity == “high”) {
play = false;
} else if (humidity == “normal”) {
play = true;
}
} else if
...
いわゆるルールベース
ルールが増えると訳が分からない
矛盾してても分からない
管理者がいなくなると死ぬ
機械学習とは
これを愚直に実装すると…
boolean play = false;
if (outlook == “overcast”) {
play = true;
} else if (outlook == “sunny”) {
if (humidity == “high”) {
play = false;
} else if (humidity == “normal”) {
play = true;
}
} else if
...
いわゆるルールベース
ルールが増えると訳が分からない
矛盾してても分からない
管理者がいなくなると死ぬ
データから自動生成したい!
エンジニアたるもの
自動化してなんぼですよね?
機械学習とは
ルールの自動生成
決定木という手法で実現できる
このような木構造を作ってくれます
これをさらに発展させると
天気が晴れ -10ポイント
天気が曇り +100ポイン
ト
気温が低い 20ポイント
湿度が高い -14ポイント
... ...
合計50ポイント以上ならplayする
これをさらに発展させると
天気が晴れ -10ポイント
天気が曇り +100ポイン
ト
気温が低い 20ポイント
湿度が高い -14ポイント
... ...
合計50ポイント以上ならplayする
ここのポイントをどう決めるか
データにある結果をうまく表現できるように決める
「ルールベースから機械学習への道」というスライドがわかりやすい
http://www.slideshare.net/nishio/ss-53221829
具体的にどうやって決めるかは微積分の知識が必要なので今回は割愛
これをさらに発展させると
天気が晴れ -10ポイント
天気が曇り +100ポイン
ト
気温が低い 20ポイント
湿度が高い -14ポイント
... ...
合計50ポイント以上ならplayする
ここの値はどうすんの?
これをさらに発展させると
天気が晴れ -10ポイント
天気が曇り +100ポイン
ト
気温が低い 20ポイント
湿度が高い -14ポイント
... ...
合計50ポイント以上ならplayする
ここの値はどうすんの?
playする/しないを+1/-1(0/1)で表現して
出力の閾値を決めておいてその値以上であれば+1として扱うなど
システムの出力はその範囲の値を出力するようにする
ライブラリを使うとよろしくやってくれるが調整するといい場合もある
機械学習の基礎
ちょっとだけ数式使うよ
教師あり学習
{x, y}のペアに対してy = f(x)となるような関数を求める
f(x) = w1x1 + w2x2 + ... のように関数の形を決めておいて
f(x)がyを表現できるようなwを求める
実際には
f(x)の結果とyにどれだけ差があったかを見て近くなるようにwを修正
教師あり学習はさらに扱いたい問題に応じて分けられる
回帰(実数値を予測)
分類(所属するクラスを予測)
機械学習の基礎
ちょっとだけ数式使うよ
教師なし学習
{x}だけ与えれる(yはない)
xの持つ特徴ごとに何種類かに分ける
その他
半教師あり学習
強化学習
など
やってみよう
http://john-smith.github.io/weka.html
機械学習の注意点
データにあることしか分からない
魔法の杖ではない
完璧ではない
完璧を要求するなら手間をかけて人手で!
どんなデータを作るかは人間次第
irisでいうところの各項目
やりたことのドメイン知識に依存する
項目が多いと「次元の呪い」というツラミ発生
いい結果を出すには試行錯誤が必要
weka以外のMLライブラリ
scikit-learn(python)
よく使われる
というか機械学習は割とみんなpython使う
Spark MLlib(scala)
分散処理で大規模に対応
R言語
ライブラリが豊富だが、言語仕様にクセがある
プロトタイピングが得意
プロダクションには向かない
参考文献
フリーソフトで始める機械学習入門
データサイエンティスト養成読本
機械学習入門編
入門 機械学習
オンライン機械学習
データマイニングの基礎
参考文献(難しい)
言語処理のための機械学習入門
イラストで学ぶ機械学習
パターン認識と機械学習
統計的学習の基礎
Q&A

More Related Content

Javado2