39
Nara Institute of Science and Technology Augmented Human Communication Laboratory ビッグデータのための機械学習 2016/10/28 ビッグデータアナリティクス 第3回 1 奈良先端科学技術大学院大学 吉野 幸一郎

ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

Nara Institute of Science and TechnologyAugmented Human Communication Laboratory

ビッグデータのための機械学習

2016/10/28 ビッグデータアナリティクス 第3回 1

奈良先端科学技術大学院大学

吉野幸一郎

Page 2: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 機械学習の基礎

– 教師あり学習、教師なし学習

– 事前確率、事後確率

– 最尤推定、MAP推定、ベイズ推定

– 単純ベイズ、ロジスティック回帰、条件付き確率場、サポートベクターマシン、ニューラルネット、深層学習

• 機械学習における分散処理

• Apache Spark での機械学習

2016/10/28 ビッグデータアナリティクス 第3回 2

本日の内容

Page 3: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

2016/10/28 ビッグデータアナリティクス 第3回 3

参考書

できるだけ参考書なしでも済むよう解説するよう努めます

Page 4: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• ある入力ベクトル 𝒙に対して目標ベクトル 𝒕を得る関数𝒕 = 𝒚(𝒙)をデータから得る枠組み

• 数字画像認識の場合

– 目標ベクトル 𝒕は10次元でどの数字ぽいかに対応

– 入力ベクトル 𝒙はある正規化された画像から抽出された特徴

2016/10/28 ビッグデータアナリティクス 第3回 4

機械学習とは?

𝟎, 𝟎, 𝟎, 𝟏, 𝟎, 𝟎, 𝟎, 𝟎, 𝟎, 𝟎0, 1, 2, 3, 4, 5, 6, 7, 8, 9 の数字画像に相当

画像

目標ベクトル 𝒕

正解ラベル

• 座標(a, b)のピクセル値が0

• 座標(a, b)と(c,d)のピクセル値が共に0

入力ベクトル 𝒙特徴量抽出

この対応をどう学習するか!

Page 5: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 学習

– 訓練データ(教師ありの場合は 𝒙と 𝒕の対応、教師なしの場合は 𝒙のみ)から 𝒕 = 𝒚(𝒙)を得る過程

– 目的関数に応じて最適なモデルを得る

• 例えば二乗和誤差の最小化

• テスト

– 学習で得たモデルを別のデータ(テストデータ)で確認

• 訓練データのみを分類できるモデルが良いわけではない(過学習の問題)

• 汎化性能が高い(様々なデータを分類できる)のが良いモデル

2016/10/28 ビッグデータアナリティクス 第3回 5

学習とテスト

Page 6: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

○が訓練データ、赤線がモデル、緑線が真のモデル

• 一番よいモデルは?

2016/10/28 ビッグデータアナリティクス 第3回 6

過学習

パターン認識と機械学習第1章, 6p

Page 7: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 共通点

– いずれも学習データを与えて 𝒚(𝒙)を得る

• 教師あり学習 (例: classification, regression)

– 学習データの 𝒙と 𝒕が与えられる

– “ある入力ベクトル 𝒙に対して目標ベクトル 𝒕を得る関数𝒕 = 𝒚(𝒙)をデータから得る枠組み” の定義そのまま

• 教師なし学習 (例: clustering)

– 学習データの 𝒙のみが与えられる

– 目標ベクトル 𝒕はデータから推定する

2016/10/28 ビッグデータアナリティクス 第3回 7

教師あり学習と教師なし学習

Page 8: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 教師あり学習

– 利点

• 分類したいクラスが定まっている場合に有効

– 欠点

• 目標ベクトル(正解ラベル)を与える必要がある

• 教師なし学習

– 利点

• 目標ベクトル(正解ラベル)を与える必要がない

– 欠点

• 学習されたモデルの客観的な評価が難しい

2016/10/28 ビッグデータアナリティクス 第3回 8

教師あり学習と教師なし学習の利点・欠点

Page 9: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 教師あり学習

– 明らかな広告ツイートを除外する

○広告は人間が読んでわかる場合が多い

– ツイートした人の属性(年齢・性別など)を分類する

△本当にその属性なのか確認するのが難しく工夫が必要

• 教師なし学習

– ツイッターユーザを発言から何種類かに分類

○用いた手法に応じたユーザ群を出力できる

– 広告ツイートを除外する

△何が広告なのかが明らかでない

2016/10/28 ビッグデータアナリティクス 第3回 9

教師あり学習と教師なし学習の例

Page 10: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 予測モデルを確率モデルで表すと

𝑷(𝒕|𝒙)

– 与えられた 𝒙からクラス 𝒕を識別するので識別モデル

• 予測モデルをベイズの定理で変形して

𝑷 𝒕 𝒙 =𝑷 𝒙|𝒕 𝑷(𝒕)

𝑷(𝒙)∝ 𝑷 𝒙|𝒕 𝑷(𝒕)

– 𝑷 𝒙|𝒕 , 𝑷(𝒕)に対して分布を仮定

– 仮定した分布から 𝑷(𝒕)が決定され 𝑷 𝒙|𝒕 が生成されるので生成モデル

2016/10/28 ビッグデータアナリティクス 第3回 10

生成モデルと識別モデル

Page 11: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 生成モデル

𝑷 𝒕 𝒙 ∝ 𝑷 𝒙|𝒕 𝑷(𝒕)

• 𝑷 𝒙|𝒕 をベクトル 𝒙の各次元 𝒙𝒊 に対する生成確率 𝑷 𝒙𝒊|𝒕の相乗 𝒊𝑷(𝒙𝒊|𝒕)だと思う

• 𝑷(𝒙𝒊|𝒕)は学習データ中の頻度から

𝑷 𝒙𝒊 𝒕 =𝑪(𝒙𝒊, 𝒕)

𝒊𝑪(𝒙𝒊, 𝒕)

2016/10/28 ビッグデータアナリティクス 第3回 11

単純ベイズ (Naïve Bayes)

Page 12: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

𝑷 𝒙𝒊 𝒕 =𝑪(𝒙𝒊, 𝒕)

𝒊𝑪(𝒙𝒊, 𝒕)

– 𝒙𝒊: メール中の単語

– 𝒕𝟏: 普通のメール

– 𝒕𝟐: スパムメール

• それぞれのメールが40単語含んでいるとすると…?

– P(click|𝒕𝟐) = 2/40 = 0.05

– P(meeting|𝒕𝟏) = 2/40 = 0.05

2016/10/28 ビッグデータアナリティクス 第3回 12

単純ベイズによるスパムフィルタ

Hi Koichiro,

Can we change

the meeting on

tomorrow?

Other meeting

Click here to find

If you wish to

stop future

mailing, please

click here.

スパム普通のメール

Page 13: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

2016/10/28 ビッグデータアナリティクス 第3回 13

ところで…

𝑷(𝒕)は?

Page 14: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

𝑷 𝒕 𝒙 ∝ 𝑷 𝒙|𝒕 𝑷(𝒕)

• 事後確率はデータから求まる

• 事前確率はそもそもクラスが生成される確率

• どうやって 𝑷(𝒕)を求めるの?

– 一様分布に従うことにする 最尤推定

– 何らかの事前分布を置く MAP推定、ベイズ推定

これ以降はスパムフィルタを例に考える

2016/10/28 ビッグデータアナリティクス 第3回 14

事前確率と事後確率

事前確率事後確率

Page 15: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 最尤推定

– 一様分布を仮定すると 𝑷(𝒕)は定数項

• 単純ベイズによるスパムフィルタの場合

– 各単語がそれぞれベクトルの1つの次元だと仮定している

• 𝒙 =(0, 1, 0, …)

• (それぞれの次元が (I, we, you, …)のように各単語を表す)

• これは多項分布を仮定している

– ベクトル 𝒙 = (𝒙𝟏, … , 𝒙𝑲)で表す

• 𝑷(𝑿|𝝁) = 𝒌=𝟏𝑲 𝝁𝒌

𝒙𝒌 ただし 𝒌=𝟏𝑲 𝝁𝒌 = 𝟏 (𝝁𝒌 はパラメータ)

2016/10/28 ビッグデータアナリティクス 第3回 15

最尤推定

Page 16: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 二項分布の多値変数に対する拡張– 二値変数の次元数を2→𝐾次元へと拡張

– 言語処理などで一般に用いられる分布(単語 𝒘𝟏 の頻度が𝒎𝟏,..., 単語 𝒘𝑲 の頻度が𝒎𝑲)

• 二項分布– 𝒙 = 𝟏となる観測値𝑚の分布( 𝒙 = 𝟏が𝑚回)

• 𝑩𝒊𝒏 𝒙 𝑵, 𝝁 = 𝑵𝒎𝝁𝒎 𝟏 − 𝝁 𝑵−𝒎

2016/10/28 ビッグデータアナリティクス 第3回 16

多項分布とは

I We You He She

0 0 0 0 0

I

1

We

1

I

2

...

Page 17: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 観測値の系列 𝑫 = {𝒙𝟏, … , 𝒙𝑵}があるとき

– 𝑷 𝑫 𝝁 = 𝒏=𝟏𝑵 𝒌=𝟏

𝑲 𝝁𝒌𝒙𝒏𝒌 = 𝒌=𝟏

𝑲 𝝁𝒌𝒎𝒌 ただし𝒎𝒌 = 𝒏𝒙𝒏𝒌

• 対数尤度を取ると

– 𝒍𝒐𝒈𝑷 𝑫 𝝁 = 𝒌=𝟏𝑲 𝒎𝒌𝐥𝐨𝐠𝝁𝒌 + 𝝀 𝒌=𝟏

𝑲 𝝁𝒌 − 𝟏

• 最尤推定すると

– 𝝁𝒌𝑴𝑳 =

𝒎𝒌

𝒌=𝟏𝑲 𝒎𝒌

• 各単語の頻度を全体の頻度で割る=最尤推定

2016/10/28 ビッグデータアナリティクス 第3回 17

最尤推定(続き)

Page 18: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 学習データに登場しない単語の確率が0になる(ゼロ頻度問題)

– 分類精度に対する問題

• 学習データと実際に分類するデータの差が大きい場合分類精度が著しく落ちる

– 計算上の問題

• 確率が0 = 対数確率を取れない

事前分布を仮定することでこれらの問題は解決する

2016/10/28 ビッグデータアナリティクス 第3回 18

最尤推定の問題

Page 19: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• Dirichlet分布は多項分布の共役事前分布

• 𝑷(𝝁|𝜶) ∝ 𝒌=𝟏𝑲 𝝁𝒌

𝜶𝒌−𝟏 ( 𝑵𝒎𝟏…𝒎𝑲

𝒌=𝟏𝑲 𝝁𝒌

𝒎𝒌と共役)

– 𝒌𝝁𝒌 = 𝟏

– 𝐾 − 1次元の単体上

• 𝐃𝐢𝐫 𝝁 𝜶 =𝚪( 𝒌=𝟏𝑲 𝜶𝒌)

𝒌=𝟏𝑲 𝚪 𝜶𝒌

𝒌=𝟏𝑲 𝝁𝒌

𝜶𝒌−𝟏

• 𝑷 𝝁 𝒎𝟏, … ,𝒎𝑲, 𝜶 ∝ 𝑷 𝒎𝟏, … ,𝒎𝑲 𝝁 𝑷 𝝁 𝜶

=𝚪( 𝒌=𝟏𝑲 𝒎𝒌+𝟏)

𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏

𝒌=𝟏𝑲 𝝁𝒌

𝒎𝒌 𝚪( 𝒌=𝟏𝑲 𝜶𝒌)

𝒌=𝟏𝑲 𝚪 𝜶𝒌

𝒌=𝟏𝑲 𝝁𝒌

𝜶𝒌−𝟏

=𝚪( 𝒌=𝟏𝑲 𝒎𝒌+𝟏)

𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏

𝚪( 𝒌=𝟏𝑲 𝜶𝒌)

𝒌=𝟏𝑲 𝚪 𝜶𝒌

𝒌=𝟏𝑲 𝝁𝒌

𝒎𝒌+𝜶𝒌−𝟏

2016/10/28 ビッグデータアナリティクス 第3回 19

Dirichlet分布

パターン認識と機械学習第2章, p75

Page 20: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 対数尤度を取ってラグランジュの未定乗数法で解くと

– 𝝁𝒌𝑴𝑨𝑷 =

𝒎𝒌+𝜶𝒌−𝟏

𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌−𝟏)

• 𝝁𝒌𝑴𝑳 =

𝒎𝒌

𝑵(最尤推定の場合)

• つまり、各単語の頻度に何らかの値を足せばよい

– ディリクレスムージング

未知の単語も 𝜶𝒌 − 𝟏回は登場したことにする

2016/10/28 ビッグデータアナリティクス 第3回 20

MAP推定

Page 21: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• Bayes推定の場合、𝝁を積分消去

– 𝐏 𝒎𝟏, … ,𝒎𝑲 𝜶 = 𝝁𝑷(𝒎𝟏, … ,𝒎𝑲|𝝁)𝑷 𝝁 𝜶 𝒅𝝁

= 𝝁𝚪( 𝒌=𝟏𝑲 𝒎𝒌+𝟏)

𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏

𝒌=𝟏𝑲 𝝁𝒌

𝒎𝒌 𝚪( 𝒌=𝟏𝑲 𝜶𝒌)

𝒌=𝟏𝑲 𝚪 𝜶𝒌

𝒌=𝟏𝑲 𝝁𝒌

𝜶𝒌−𝟏 𝒅𝝁

=𝚪( 𝒌=𝟏𝑲 𝒎+𝟏)

𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏

𝚪( 𝒌=𝟏𝑲 𝜶𝒌)

𝒌=𝟏𝑲 𝚪 𝜶𝒌

𝝁 𝒌=𝟏𝑲 𝝁𝒌

𝒎𝒌+𝜶𝒌−𝟏 𝒅𝝁

∝ 𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝜶𝒌

𝚪( 𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌))

– 𝐏 𝑫 𝜶 =𝚪( 𝒌=𝟏𝑲 𝜶𝒌)

𝒌=𝟏𝑲 𝚪 𝜶𝒌

𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝜶𝒌

𝜞( 𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌))

– 𝐏 𝒙𝒊 𝑫,𝜶 =𝑷(𝒙𝒊,𝑫|𝜶)

𝑷(𝑫|𝜶)

= 𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏+𝜶𝒌

𝜞( 𝒌=𝟏𝑲 𝒎𝒌+𝜶𝒌 +𝟏)

𝜞( 𝒌=𝟏𝑲 𝒎𝒌+𝜶𝒌 )

𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝜶𝒌

=𝒎𝒌+𝜶𝒌

𝒌=𝟏𝑲 𝒎𝒌+𝜶𝒌

(MAP推定は𝒎𝒌+𝜶𝒌−𝟏

𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌−𝟏)

2016/10/28 ビッグデータアナリティクス 第3回 21

オマケ: Bayes推定

Page 22: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• クラスが与えられた場合の各単語の生成確率を

𝑷 𝒙𝒊 𝒕 =𝑪 𝒙𝒊, 𝒕 + 𝜶

𝒊 𝑪 𝒙𝒊, 𝒕 + 𝜶

で求めて足して正規化( 𝜶はスムージング係数)

実際に単純ベイズで分類してみよう!

2016/10/28 ビッグデータアナリティクス 第3回 22

単純ベイズのまとめ

Page 23: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

1. python と pip をインストール– Anaconda [https://www.continuum.io/downloads] が簡単

1. bda1node**にログイン

2. Anaconda2-4.2.0-Linux-x86_64.sh を置く

• wget https://repo.continuum.io/archive/Anaconda2-4.2.0-Linux-x86_64.sh

• 以降の演習はPython3系でも動作します

3. Anacondaをインストール (bash Anaconda2-4.2.0-Linux-x86_64.sh)

4. Anaconda2 will now be installed into this location: と聞かれるので Enter

5. Do you wish the installer to prepend the Anaconda install location: と聞かれるので (no)

2016/10/28 ビッグデータアナリティクス 第3回 23

Python, numpy, sklearn 等のインストール

Page 24: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

> Cd anaconda2/bin/

> ./python

• クラス1がメール、クラス2がスパム

• メールにはwe, meetingの2単語、スパムにはwe, clickの2単語が入っているとする

– [we, meeting, click] のベクトルを作るとそれぞれ [1, 1, 0] と [1, 0, 1] というベクトルになる

2016/10/28 ビッグデータアナリティクス 第3回 24

Pythonで単純ベイズ

import numpy as np

from sklearn.naive_bayes import MultinomialNB

X = np.array([[1, 1, 0],[1, 0, 1]])

y = np.array([1, 2])

clf = MultinomialNB()clf.fit(X, y) 学習

Page 25: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• click here と書いてある新しいメールはスパムか

– 既知語はclick だけなのでベクトル[0, 0, 1]を作る

2016/10/28 ビッグデータアナリティクス 第3回 25

Pythonで単純ベイズ(続き)

z = np.array([0, 0, 1])clf.predict(z) 識別(array([2])が出力されれば成功)clf.predict_proba(z) それぞれのクラス確率を出力

(array([[ 0.33333333, 0.66666667]]) )clf.set_params(alpha=10.0) パラメータαを10.0に変更

clf.fit(X, y)clf.predict_proba(z) さっきと値が変わっているはず

( array([[ 0.47619048, 0.52380952]]) )

Page 26: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 教師あり学習・識別モデル

• sklearn の linear_model.LogisticRegression

𝑷 𝒕 𝒙 =𝐞𝐱𝐩(𝒘 ∙ 𝜱(𝒙, 𝒕))

𝒕 𝐞𝐱𝐩(𝒘 ∙ 𝜱(𝒙, 𝒕))– 𝒘は素性に対する重み

• 学習時は生成モデルと異なり 𝑷 𝒕 𝒙 の対数尤度を最大化

𝑳 𝒘 =

(𝒙𝒊,𝒕𝒊)

𝒍𝒐𝒈𝑷 𝒕𝒊 𝒙𝒊 −𝑪

𝟐𝒘 𝟐

• ロジスティック回帰は対数線形モデル、最大エントロピーモデルとも呼ばれる

• CRFはLRの系列データに対する拡張 CRFSuiteが便利「系列データモデリング」の授業

2016/10/28 ビッグデータアナリティクス 第3回 26

ロジスティック回帰(LR)条件付き確率場 (CRF)

Page 27: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 教師あり学習

• Sklearn の neural_network

• 次の式のような線形識別を考える

𝒙 = 𝒘𝟏𝒙𝟏 +𝒘𝟐𝒙𝟐 +⋯+𝒘𝒏𝒙𝒏 + 𝒃𝒕 = 𝒚(𝒙)

– 𝒘𝒊 は 𝒙𝒊 に対する重み

– 𝒚は一般にロジスティックシグモイド関数を用いる

– 各素性ベクトルの重みつき線形和から 0 または 1 を出力

2016/10/28 ビッグデータアナリティクス 第3回 27

パーセプトロン

0

0.2

0.4

0.6

0.8

1

-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7

Page 28: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• パーセプトロンは非線形な識別が不可能

• 異なる複数のパーセプトロンの和を取る

2016/10/28 ビッグデータアナリティクス 第3回 28

ニューラルネット(多層パーセプトロン)

𝒙𝟏

𝒙𝟐

𝒙𝟑

𝒙𝟒

入力

出力

𝒙𝟏

𝒙𝟐

𝒙𝟑

𝒙𝟒

入力

出力

Page 29: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• ニューラルネットの発展

• ニューラルネットを多層に積む

• 画像認識・音声認識などを席巻

• Restricted Boltzmann machineの利用

2016/10/28 ビッグデータアナリティクス 第3回 29

深層学習

𝒙𝟏

𝒙𝟐

𝒙𝟑

𝒙𝟒

入力 出力

Page 30: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

2016/10/28 ビッグデータアナリティクス 第3回 30

深層学習の教科書

Page 31: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 教師あり学習

• skleran の svm

• マージン最大化による分離平面の決定

• 識別面は各クラスの凸包を結ぶ最短の線分の中点を通り直交

• カーネル法

– 全てのベクトルをより高次元の空間(e.g. 各項の二乗など)へ射影

2016/10/28 ビッグデータアナリティクス 第3回 31

サポートベクターマシン (SVM)

Page 32: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 教師なし学習

• ベクトル空間上の点をK種類に分類する

1. K個のクラスタ中心を選択(初期値: ランダム)

2. クラスタ中心からの距離でクラスラベルを決定(ラベルが変わらなければ終了)

3. 決定されたクラスラベルの平均を求めてクラスタ中心とする(2. へ)

2016/10/28 ビッグデータアナリティクス 第3回 32

K-means クラスタリング

Page 33: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• スパムフィルタをK-meansで行う

• メールにはwe, meetingの2単語、スパムにはwe, clickの2単語、テストにはclick, hereの2単語が入っている

2016/10/28 ビッグデータアナリティクス 第3回 33

Python で K-means

import numpy as np

from sklearn.cluster import KMeans

X = np.array([[1, 1, 0, 0],[1, 0, 1, 0]])

y = np.array([0, 0, 1, 1])

model = KMeans(n_clusters=2)

model.fit(X)model.predict(X) -> array([0, 1], dtype=int32) (スパムクラスは1)

model.predict(y) -> array([1], dtype=int32) (テストはスパム)

Z = np.array([[1,1,0,0],[1,0,1,0],[0,0,1,1]])model.fit_predict(Z) -> array([0, 1, 1], dtype=int32) (正しく分類)

Page 34: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 機械学習による大規模データ処理は大量の計算リソースが必要

– 値段が倍になっても性能は倍にはならない(前回の授業)

– 多数の性能/価格比がよいサーバを使いたい

• 分散処理の特徴・問題

– 複数のサーバでメモリを共有できない

• DPなどの処理を分散させることが難しい

– 計算結果を共有するときのオーバヘッドが大きい

• 仮に分散させたとしてもReduceのオーバヘッドが大きく分散処理による速度向上の恩恵を受けにくい(場合によっては悪化する)

2016/10/28 ビッグデータアナリティクス 第3回 34

分散処理と機械学習

Page 35: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• アルゴリズムごとに考慮すべきもの

– どの計算部分を分散(map)すればよいか

– どの部分で計算結果を統合(reduce)する必要があるか

– 分散処理する上で効率的な計算方法はないか

• 単純ベイズの学習の例

– 単純ベイズでは各単語の 𝑷 𝒙𝒊 𝒕 =𝑪 𝒙𝒊,𝒕 +𝜶

𝒊 𝑪 𝒙𝒊,𝒕 +𝜶を求める

– 頻度カウントは後で足し算できるので処理を分割してよい

– 各ブロックで各単語の頻度と和を求めたら統合する

– 確率の計算は単語ごとに行ってよい

アルゴリズムごとに分散処理を考える必要

2016/10/28 ビッグデータアナリティクス 第3回 35

アルゴリズム中の分散処理

Page 36: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• Apache Spark上の機械学習ライブラリ(Mllib)では分散処理に最適化された機械学習アルゴリズムが使える

毎回機械学習のアルゴリズムと分散処理を考えなくてよい

• ただし使うサーバの台数などはきちんと考える必要

回すアルゴリズム・台数と効率をよく考える

一番コストパフォーマンスがよい台数を考える

2016/10/28 ビッグデータアナリティクス 第3回 36

Apache Spark での機械学習 (MLlib)

Page 37: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• pyspark

– 先ほど入れたanaconda内のpythonを/usr/bin以下のpython

より上位のパスに通すと正しく動作しなくなるので注意!

– メールにはwe, meetingの2単語、スパムにはwe, clickの2単語、テストにはclick, hereの2単語が入っている

2016/10/28 ビッグデータアナリティクス 第3回 37

Pyspark と MLlib で単純ベイズ

pyspark

from pyspark.mllib.regression import LabeledPoint

from pyspark.mllib.classification import NaiveBayes

data = sc.parallelize([LabeledPoint(1, [1.0, 1.0, 0.0]),LabeledPoint(2, [0.0,

1.0, 1.0])])

model = NaiveBayes.train(data,1.0) model.predict([0.0,0.0,1.0]) 2.0 (正しく分類された)

Page 38: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 以下のいずれかを実施して下さい1. 第2回の鈴木先生担当分のpysparkを用いて任意の単語の

ワードカウントを実施上記の実行結果をペーストし考察を記述

2. 第3回の吉野担当分のMultinominalNBを用いて2クラスの分類器を作成上記の実行結果をペーストし考察を記述

• 締め切り: 11/11 23:59 JST

• 提出先: TAへe-mailで送信

• 件名を「BDA2016-3課題-[名前]-[学生番号]」とする– 守っていないものは提出したと扱わない

2016/10/28 ビッグデータアナリティクス 第3回 38

課題

Page 39: ビッグデータのための機械学習 - ahclab.naist.jp–単純ベイズ、ロジスティック回帰、条件付き確率場、 ... = 2/40 = 0.05 2016/10/28 ビッグデータアナリティクス

NAISTAHC Lab.

• 今回配布したデータの中から以下の2つのうちいずれかを取り組んでください。

1. 「2015年の台風」「2016年の台風」それぞれのデータを用いて違いについて分析して下さい。

2. 「ノーベル」「カープ」「電通」それぞれのデータから「時系列的な変化」などの特定の観点で分析を行って下さい。

– 11/18の授業で各班代表が発表します。

– 「Apache Spark」または「機械学習」のいずれかを用いて分析を行うこと(両方使うと加点)。

– レポートは班全員で担当し、それぞれの担当箇所を明示すること(同じ班だから同じ点数になるとは限りません)。

2016/10/28 ビッグデータアナリティクス 第3回 39

自由課題