Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
雰囲気な機械学習
FANCOMI
May 22, 2020
Technology
0
150
雰囲気な機械学習
FANCOMI
May 22, 2020
Tweet
Share
More Decks by FANCOMI
See All by FANCOMI
機械学習による確率推定とカリブレーション
fancomi_tech
5
2.4k
確率推定の良さ(カリブレーション)の評価方法、較正方法
fancomi_tech
0
440
機械学習
fancomi_tech
0
70
Other Decks in Technology
See All in Technology
“Do you have a virtual router?” Discuss how to use virtual routers
line_developers
PRO
0
440
DNS権威サーバのクラウドサービス向けに行われた攻撃および対策 / DNS Pseudo-Random Subdomain Attack and mitigations
kazeburo
1
130
Startup Studio Sereal / Culture Deck
sereal
0
590
- Rでオブジェクト指向プログラミング- クラス設計入門の入門
kotatyamtema
1
530
大企業がアジャイルになる途中で 起きること/What happens on the way big company becomes agile
chinmo
0
2.7k
2年で10→70人へ! スタートアップの 情報セキュリティ課題と施策
miekobayashi
1
180
プログラミング支援AI GitHub Copilot すごいの話
moyashi
0
260
Observability & APM 入門 〜2023年のIT運用/監視の流行語はこれだ!
tkhresk
0
260
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
dzeyelid
0
150
Akiba-dot-SaaS-ExtraHop
sakaitakeshi
1
100
チケットNFTの仕組み
sbtechnight
0
320
ML PM, DS PMってどんな仕事をしているの?
line_developers
PRO
1
180
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
116
7.6k
The Invisible Side of Design
smashingmag
292
48k
Robots, Beer and Maslow
schacon
154
7.3k
Atom: Resistance is Futile
akmur
256
24k
How GitHub Uses GitHub to Build GitHub
holman
465
280k
Art, The Web, and Tiny UX
lynnandtonic
284
18k
A Philosophy of Restraint
colly
193
15k
Intergalactic Javascript Robots from Outer Space
tanoku
261
26k
It's Worth the Effort
3n
177
26k
The Art of Programming - Codeland 2020
erikaheidi
35
11k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
29
7.7k
Support Driven Design
roundedbygravity
88
8.9k
Transcript
雰囲気な機械学習 初心者が知っておくとうれしいこと Service Dev. dept. / Shinichi Takenaka 2020-05-22 FANCOMI
エンジニア勉強会 1
初心者の、初心者による、機械学習 つまり、なんとなく分かった気になるためのあれ 初心者の私曰く。 機会学習や分析方面は難しい話が多いように思いますが、なんとなくわかるところまでなら、 あんまり難しくない(ほんとかよ 本日の目標 あんまり難しくなさそう、やってみようかな ※ 今日の範囲は「教師あり機械学習」のみです。 ※
書籍「オライリー Pythonではじめる機械学習」の前半にだいたい出てます。 2020-05-22 FANCOMI エンジニア勉強会 2
誰? サービス開発部 戦略企画チーム 竹中真一 採用、組織面の課題解決 2018年12月までは、開発やマネジメント 学生時代に多少この方面をかじったが、残念ながらほぼ忘れている 2020-05-22 FANCOMI エンジニア勉強会
3
機械学習って何をやっているの? 雰囲気を知ろう 1. それが何であるか分かっているデータ 2. データが与えられた場合に、それが何であるか・どのくらいの量であるか、ある程度判断できるプログラム より高精度に データを判別できる プログラムとチューニングされたパラメタのセット を準備する
2020-05-22 FANCOMI エンジニア勉強会 4
だいたいこんな感じ 1. 分析対象のデータを用意する 勉強中の身なので、既にいい感じに用意されているテスト用のデータを使います。 from sklearn.datasets import load_iris 2. データを、訓練セット・テストセットの二つに分ける
train, test 分けてます。train_test_split とかそのままですね。 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split( iris_dataset['data'], iris_dataset['target'], random_state=0 ) 2020-05-22 FANCOMI エンジニア勉強会 5
だいたいこんな感じ 3. データを分類、判別するアルゴリズムを用意 通常は過去の偉い人が作ってくれているアルゴリズムを使うことになります。 # 例えば、クラス分類のアルゴリズム k-最近傍法のアルゴリズムを使った分類器をロード from sklearn.neighbors import
KNeighborsClassifier knn = KNeighborsClassifier(n_neighbors=1) 4. 訓練セットを使って、モデルの訓練 Classifierのfitを呼び出す。 knn.fit(X_train, y_train) 2020-05-22 FANCOMI エンジニア勉強会 6
だいたいこんな感じ 5. 訓練したモデルをつかってみる 訓練したデータ使ったら意味はないので、まだ使っていないテストセットで試す。 # そのデータが何を示しているかというラベル、y_predictを予測。 y_predict = knn.predict(X_test) #
予測してみたんだから、どのくらいの精度で予測できているのかは知りたい print("Test set score(Accuracy) : {:.2f}".format(knn.score(X_test, y_test))) >> Test set score(Accuracy) : 0.97 97%のテストセットは正確に予測できているということ。なるほど。 2020-05-22 FANCOMI エンジニア勉強会 7
ここまでのまとめ だいたいの場合こんな感じ。 今のところ、難しいことは一つもない。 scikit-learnをベースで話を進めていますが、 他のものだったとしてもそんなに大きく変わりませんので、もうプログラムは読めます。 (多分ね。Pythonならね。) 2020-05-22 FANCOMI エンジニア勉強会 8
いろんなアルゴリズム 1. それが何であるか分かっているデータ 2. データが与えられた場合に、それが何であるか・どのくらいの量であるか、ある程度判断できるプログラム 先程、機械学習でやってることについて上のように伝えていますが、大きく二つの種類があります。 1. クラス分類: いくつかある選択肢の中からそれが何であるかを判別する 2.
回帰: それがどのくらいの量になるかを予測する ここからは、こういった問題に対応できるアルゴリズムをゆるく紹介します。 2020-05-22 FANCOMI エンジニア勉強会 9
k-最近傍法(k-NN) / クラス分類 # 特徴量を二つ持つデータポイント X: array([[ 9.96346605, 4.59676542], [11.0329545
, -0.16816717], ...)] # 各々のデータポイントは、0,1でラベリングされ、2クラスに分かれている。 y: array([1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0]) 一番近い点と同じクラスに分類してるだけ 2020-05-22 FANCOMI エンジニア勉強会 10
線形回帰(通常最小二乗法) 特徴量が一つの場合を例にすると、このモデルは簡単な数式で表せる。 x: データポイントの特徴量 w, b: 学習されたモデルのパラメタ w(eight), b(ias) このように、単一の特徴量ならば予測は一次元の直線になる。特徴量が二つなら平面となる。
赤線の長さの平均、 が最小になるように、w, b を求めているだけ 2020-05-22 FANCOMI エンジニア勉強会 = y ^ w[0] × x[0] + b (y − n 1 ∑i=1 n i ) yi ^ 2 11
線形回帰、その他 線形回帰には、さきほどの通常最小二乗法の拡張版といったモデルがあります。 本日は初心者たるために、全力で詳細は避けますが、超ざっくり言うと、 いかにしてもっといいかんじにするか をがんばった手法と言えそうです。 ここから文字ばかりになっちゃいます。この辺からはざっくり雰囲気で伝えるのは難しそうな。。。 リッジ回帰 ラッソ回帰 名前が出てきても、線形回帰の強いやつらだなと思っておけばとりあえずは話はわかります。 いろんなところに説明は出ていますので参照してみてください。
機械学習では常に意識しなければならない、過剰適合を防ぐための手法、正則化を実装しているのが リッジ回帰やラッソ回帰です。 2020-05-22 FANCOMI エンジニア勉強会 12
線形モデルはクラス分類にも使える この前のページ数枚で紹介しているのは線形回帰で、ある連続値の予測を行っている。 ですが、そこで使用しているモデル自体は回帰だけではなくクラス分類にも使えます。 これまた超ざっくり言うと、 直線の上と下、右と左でもいいんですが、分けられるよね という話です。 ここでも、名前だけ紹介しておきます。 ロジスティック回帰 (回帰アルゴリズムじゃない、クラス分類アルゴリズム) 線形サポートベクタマシン
(SVM) よく聞かれるアルゴリズム名ですが、これらが出てきたら、データポイントを線形に分けて分類してるんだなと いうことはわかりますね。 2020-05-22 FANCOMI エンジニア勉強会 13
あとは、、 決定木とアンサンブル法 カーネル法とSVM ニューラルネットワークとディープラーニング この辺をふんわり説明できたら、とりあえずなんとなく雰囲気をお伝えした感じになりそうですが、そろそろ 軽く説明しづらくなってきてしまったので終わりにします。 次また発表するようなら、続きをやってみようかとは思いますが、軽い雰囲気をどれだけ保てるかは不安です(汗 2020-05-22 FANCOMI エンジニア勉強会
14
最後に 雰囲気つたわりましたでしょうか。 ざっくりと理解して誰かの話を聞いたりする分には、 実はそんなに難しくなさそう! と感じてもらえれば、うれしいです。 数式や概念部分で難しい所は多々ありますが、本筋は直感的でわかりやすい所が多いのではないかと。 初心者の私は思っておりました。 この方面あまり知らない方も、趣味として機械学習をはじめてみると、面白いかもしれませんよ。 2020-05-22 FANCOMI
エンジニア勉強会 15