Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Nara Institute of Science and TechnologyAugmented Human Communication Laboratory
ビッグデータのための機械学習
2016/10/28 ビッグデータアナリティクス 第3回 1
奈良先端科学技術大学院大学
吉野幸一郎
NAISTAHC Lab.
• 機械学習の基礎
– 教師あり学習、教師なし学習
– 事前確率、事後確率
– 最尤推定、MAP推定、ベイズ推定
– 単純ベイズ、ロジスティック回帰、条件付き確率場、サポートベクターマシン、ニューラルネット、深層学習
• 機械学習における分散処理
• Apache Spark での機械学習
2016/10/28 ビッグデータアナリティクス 第3回 2
本日の内容
NAISTAHC Lab.
2016/10/28 ビッグデータアナリティクス 第3回 3
参考書
できるだけ参考書なしでも済むよう解説するよう努めます
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
…
入力ベクトル 𝒙特徴量抽出
この対応をどう学習するか!
NAISTAHC Lab.
• 学習
– 訓練データ(教師ありの場合は 𝒙と 𝒕の対応、教師なしの場合は 𝒙のみ)から 𝒕 = 𝒚(𝒙)を得る過程
– 目的関数に応じて最適なモデルを得る
• 例えば二乗和誤差の最小化
• テスト
– 学習で得たモデルを別のデータ(テストデータ)で確認
• 訓練データのみを分類できるモデルが良いわけではない(過学習の問題)
• 汎化性能が高い(様々なデータを分類できる)のが良いモデル
2016/10/28 ビッグデータアナリティクス 第3回 5
学習とテスト
NAISTAHC Lab.
○が訓練データ、赤線がモデル、緑線が真のモデル
• 一番よいモデルは?
2016/10/28 ビッグデータアナリティクス 第3回 6
過学習
パターン認識と機械学習第1章, 6p
NAISTAHC Lab.
• 共通点
– いずれも学習データを与えて 𝒚(𝒙)を得る
• 教師あり学習 (例: classification, regression)
– 学習データの 𝒙と 𝒕が与えられる
– “ある入力ベクトル 𝒙に対して目標ベクトル 𝒕を得る関数𝒕 = 𝒚(𝒙)をデータから得る枠組み” の定義そのまま
• 教師なし学習 (例: clustering)
– 学習データの 𝒙のみが与えられる
– 目標ベクトル 𝒕はデータから推定する
2016/10/28 ビッグデータアナリティクス 第3回 7
教師あり学習と教師なし学習
NAISTAHC Lab.
• 教師あり学習
– 利点
• 分類したいクラスが定まっている場合に有効
– 欠点
• 目標ベクトル(正解ラベル)を与える必要がある
• 教師なし学習
– 利点
• 目標ベクトル(正解ラベル)を与える必要がない
– 欠点
• 学習されたモデルの客観的な評価が難しい
2016/10/28 ビッグデータアナリティクス 第3回 8
教師あり学習と教師なし学習の利点・欠点
NAISTAHC Lab.
• 教師あり学習
– 明らかな広告ツイートを除外する
○広告は人間が読んでわかる場合が多い
– ツイートした人の属性(年齢・性別など)を分類する
△本当にその属性なのか確認するのが難しく工夫が必要
• 教師なし学習
– ツイッターユーザを発言から何種類かに分類
○用いた手法に応じたユーザ群を出力できる
– 広告ツイートを除外する
△何が広告なのかが明らかでない
2016/10/28 ビッグデータアナリティクス 第3回 9
教師あり学習と教師なし学習の例
NAISTAHC Lab.
• 予測モデルを確率モデルで表すと
𝑷(𝒕|𝒙)
– 与えられた 𝒙からクラス 𝒕を識別するので識別モデル
• 予測モデルをベイズの定理で変形して
𝑷 𝒕 𝒙 =𝑷 𝒙|𝒕 𝑷(𝒕)
𝑷(𝒙)∝ 𝑷 𝒙|𝒕 𝑷(𝒕)
– 𝑷 𝒙|𝒕 , 𝑷(𝒕)に対して分布を仮定
– 仮定した分布から 𝑷(𝒕)が決定され 𝑷 𝒙|𝒕 が生成されるので生成モデル
2016/10/28 ビッグデータアナリティクス 第3回 10
生成モデルと識別モデル
NAISTAHC Lab.
• 生成モデル
𝑷 𝒕 𝒙 ∝ 𝑷 𝒙|𝒕 𝑷(𝒕)
• 𝑷 𝒙|𝒕 をベクトル 𝒙の各次元 𝒙𝒊 に対する生成確率 𝑷 𝒙𝒊|𝒕の相乗 𝒊𝑷(𝒙𝒊|𝒕)だと思う
• 𝑷(𝒙𝒊|𝒕)は学習データ中の頻度から
𝑷 𝒙𝒊 𝒕 =𝑪(𝒙𝒊, 𝒕)
𝒊𝑪(𝒙𝒊, 𝒕)
2016/10/28 ビッグデータアナリティクス 第3回 11
単純ベイズ (Naïve Bayes)
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.
スパム普通のメール
NAISTAHC Lab.
2016/10/28 ビッグデータアナリティクス 第3回 13
ところで…
𝑷(𝒕)は?
NAISTAHC Lab.
𝑷 𝒕 𝒙 ∝ 𝑷 𝒙|𝒕 𝑷(𝒕)
• 事後確率はデータから求まる
• 事前確率はそもそもクラスが生成される確率
• どうやって 𝑷(𝒕)を求めるの?
– 一様分布に従うことにする 最尤推定
– 何らかの事前分布を置く MAP推定、ベイズ推定
これ以降はスパムフィルタを例に考える
2016/10/28 ビッグデータアナリティクス 第3回 14
事前確率と事後確率
事前確率事後確率
NAISTAHC Lab.
• 最尤推定
– 一様分布を仮定すると 𝑷(𝒕)は定数項
• 単純ベイズによるスパムフィルタの場合
– 各単語がそれぞれベクトルの1つの次元だと仮定している
• 𝒙 =(0, 1, 0, …)
• (それぞれの次元が (I, we, you, …)のように各単語を表す)
• これは多項分布を仮定している
– ベクトル 𝒙 = (𝒙𝟏, … , 𝒙𝑲)で表す
• 𝑷(𝑿|𝝁) = 𝒌=𝟏𝑲 𝝁𝒌
𝒙𝒌 ただし 𝒌=𝟏𝑲 𝝁𝒌 = 𝟏 (𝝁𝒌 はパラメータ)
2016/10/28 ビッグデータアナリティクス 第3回 15
最尤推定
NAISTAHC Lab.
• 二項分布の多値変数に対する拡張– 二値変数の次元数を2→𝐾次元へと拡張
– 言語処理などで一般に用いられる分布(単語 𝒘𝟏 の頻度が𝒎𝟏,..., 単語 𝒘𝑲 の頻度が𝒎𝑲)
• 二項分布– 𝒙 = 𝟏となる観測値𝑚の分布( 𝒙 = 𝟏が𝑚回)
• 𝑩𝒊𝒏 𝒙 𝑵, 𝝁 = 𝑵𝒎𝝁𝒎 𝟏 − 𝝁 𝑵−𝒎
2016/10/28 ビッグデータアナリティクス 第3回 16
多項分布とは
I We You He She
0 0 0 0 0
I
1
We
1
I
2
...
NAISTAHC Lab.
• 観測値の系列 𝑫 = {𝒙𝟏, … , 𝒙𝑵}があるとき
– 𝑷 𝑫 𝝁 = 𝒏=𝟏𝑵 𝒌=𝟏
𝑲 𝝁𝒌𝒙𝒏𝒌 = 𝒌=𝟏
𝑲 𝝁𝒌𝒎𝒌 ただし𝒎𝒌 = 𝒏𝒙𝒏𝒌
• 対数尤度を取ると
– 𝒍𝒐𝒈𝑷 𝑫 𝝁 = 𝒌=𝟏𝑲 𝒎𝒌𝐥𝐨𝐠𝝁𝒌 + 𝝀 𝒌=𝟏
𝑲 𝝁𝒌 − 𝟏
• 最尤推定すると
– 𝝁𝒌𝑴𝑳 =
𝒎𝒌
𝒌=𝟏𝑲 𝒎𝒌
• 各単語の頻度を全体の頻度で割る=最尤推定
2016/10/28 ビッグデータアナリティクス 第3回 17
最尤推定(続き)
NAISTAHC Lab.
• 学習データに登場しない単語の確率が0になる(ゼロ頻度問題)
– 分類精度に対する問題
• 学習データと実際に分類するデータの差が大きい場合分類精度が著しく落ちる
– 計算上の問題
• 確率が0 = 対数確率を取れない
事前分布を仮定することでこれらの問題は解決する
2016/10/28 ビッグデータアナリティクス 第3回 18
最尤推定の問題
NAISTAHC Lab.
• Dirichlet分布は多項分布の共役事前分布
• 𝑷(𝝁|𝜶) ∝ 𝒌=𝟏𝑲 𝝁𝒌
𝜶𝒌−𝟏 ( 𝑵𝒎𝟏…𝒎𝑲
𝒌=𝟏𝑲 𝝁𝒌
𝒎𝒌と共役)
– 𝒌𝝁𝒌 = 𝟏
– 𝐾 − 1次元の単体上
• 𝐃𝐢𝐫 𝝁 𝜶 =𝚪( 𝒌=𝟏𝑲 𝜶𝒌)
𝒌=𝟏𝑲 𝚪 𝜶𝒌
𝒌=𝟏𝑲 𝝁𝒌
𝜶𝒌−𝟏
• 𝑷 𝝁 𝒎𝟏, … ,𝒎𝑲, 𝜶 ∝ 𝑷 𝒎𝟏, … ,𝒎𝑲 𝝁 𝑷 𝝁 𝜶
=𝚪( 𝒌=𝟏𝑲 𝒎𝒌+𝟏)
𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏
𝒌=𝟏𝑲 𝝁𝒌
𝒎𝒌 𝚪( 𝒌=𝟏𝑲 𝜶𝒌)
𝒌=𝟏𝑲 𝚪 𝜶𝒌
𝒌=𝟏𝑲 𝝁𝒌
𝜶𝒌−𝟏
=𝚪( 𝒌=𝟏𝑲 𝒎𝒌+𝟏)
𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏
𝚪( 𝒌=𝟏𝑲 𝜶𝒌)
𝒌=𝟏𝑲 𝚪 𝜶𝒌
𝒌=𝟏𝑲 𝝁𝒌
𝒎𝒌+𝜶𝒌−𝟏
2016/10/28 ビッグデータアナリティクス 第3回 19
Dirichlet分布
パターン認識と機械学習第2章, p75
NAISTAHC Lab.
• 対数尤度を取ってラグランジュの未定乗数法で解くと
– 𝝁𝒌𝑴𝑨𝑷 =
𝒎𝒌+𝜶𝒌−𝟏
𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌−𝟏)
• 𝝁𝒌𝑴𝑳 =
𝒎𝒌
𝑵(最尤推定の場合)
• つまり、各単語の頻度に何らかの値を足せばよい
– ディリクレスムージング
未知の単語も 𝜶𝒌 − 𝟏回は登場したことにする
2016/10/28 ビッグデータアナリティクス 第3回 20
MAP推定
NAISTAHC Lab.
• Bayes推定の場合、𝝁を積分消去
– 𝐏 𝒎𝟏, … ,𝒎𝑲 𝜶 = 𝝁𝑷(𝒎𝟏, … ,𝒎𝑲|𝝁)𝑷 𝝁 𝜶 𝒅𝝁
= 𝝁𝚪( 𝒌=𝟏𝑲 𝒎𝒌+𝟏)
𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏
𝒌=𝟏𝑲 𝝁𝒌
𝒎𝒌 𝚪( 𝒌=𝟏𝑲 𝜶𝒌)
𝒌=𝟏𝑲 𝚪 𝜶𝒌
𝒌=𝟏𝑲 𝝁𝒌
𝜶𝒌−𝟏 𝒅𝝁
=𝚪( 𝒌=𝟏𝑲 𝒎+𝟏)
𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏
𝚪( 𝒌=𝟏𝑲 𝜶𝒌)
𝒌=𝟏𝑲 𝚪 𝜶𝒌
𝝁 𝒌=𝟏𝑲 𝝁𝒌
𝒎𝒌+𝜶𝒌−𝟏 𝒅𝝁
∝ 𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝜶𝒌
𝚪( 𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌))
– 𝐏 𝑫 𝜶 =𝚪( 𝒌=𝟏𝑲 𝜶𝒌)
𝒌=𝟏𝑲 𝚪 𝜶𝒌
𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝜶𝒌
𝜞( 𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌))
– 𝐏 𝒙𝒊 𝑫,𝜶 =𝑷(𝒙𝒊,𝑫|𝜶)
𝑷(𝑫|𝜶)
= 𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝟏+𝜶𝒌
𝜞( 𝒌=𝟏𝑲 𝒎𝒌+𝜶𝒌 +𝟏)
𝜞( 𝒌=𝟏𝑲 𝒎𝒌+𝜶𝒌 )
𝒌=𝟏𝑲 𝚪 𝒎𝒌+𝜶𝒌
=𝒎𝒌+𝜶𝒌
𝒌=𝟏𝑲 𝒎𝒌+𝜶𝒌
(MAP推定は𝒎𝒌+𝜶𝒌−𝟏
𝒌=𝟏𝑲 (𝒎𝒌+𝜶𝒌−𝟏)
)
2016/10/28 ビッグデータアナリティクス 第3回 21
オマケ: Bayes推定
NAISTAHC Lab.
• クラスが与えられた場合の各単語の生成確率を
𝑷 𝒙𝒊 𝒕 =𝑪 𝒙𝒊, 𝒕 + 𝜶
𝒊 𝑪 𝒙𝒊, 𝒕 + 𝜶
で求めて足して正規化( 𝜶はスムージング係数)
実際に単純ベイズで分類してみよう!
2016/10/28 ビッグデータアナリティクス 第3回 22
単純ベイズのまとめ
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 等のインストール
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) 学習
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]]) )
NAISTAHC Lab.
• 教師あり学習・識別モデル
• sklearn の linear_model.LogisticRegression
𝑷 𝒕 𝒙 =𝐞𝐱𝐩(𝒘 ∙ 𝜱(𝒙, 𝒕))
𝒕 𝐞𝐱𝐩(𝒘 ∙ 𝜱(𝒙, 𝒕))– 𝒘は素性に対する重み
• 学習時は生成モデルと異なり 𝑷 𝒕 𝒙 の対数尤度を最大化
𝑳 𝒘 =
(𝒙𝒊,𝒕𝒊)
𝒍𝒐𝒈𝑷 𝒕𝒊 𝒙𝒊 −𝑪
𝟐𝒘 𝟐
• ロジスティック回帰は対数線形モデル、最大エントロピーモデルとも呼ばれる
• CRFはLRの系列データに対する拡張 CRFSuiteが便利「系列データモデリング」の授業
2016/10/28 ビッグデータアナリティクス 第3回 26
ロジスティック回帰(LR)条件付き確率場 (CRF)
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
NAISTAHC Lab.
• パーセプトロンは非線形な識別が不可能
• 異なる複数のパーセプトロンの和を取る
2016/10/28 ビッグデータアナリティクス 第3回 28
ニューラルネット(多層パーセプトロン)
𝒙𝟏
𝒙𝟐
𝒙𝟑
𝒙𝟒
入力
出力
𝒙𝟏
𝒙𝟐
𝒙𝟑
𝒙𝟒
入力
出力
NAISTAHC Lab.
• ニューラルネットの発展
• ニューラルネットを多層に積む
• 画像認識・音声認識などを席巻
• Restricted Boltzmann machineの利用
2016/10/28 ビッグデータアナリティクス 第3回 29
深層学習
𝒙𝟏
𝒙𝟐
𝒙𝟑
𝒙𝟒
入力 出力
NAISTAHC Lab.
2016/10/28 ビッグデータアナリティクス 第3回 30
深層学習の教科書
NAISTAHC Lab.
• 教師あり学習
• skleran の svm
• マージン最大化による分離平面の決定
• 識別面は各クラスの凸包を結ぶ最短の線分の中点を通り直交
• カーネル法
– 全てのベクトルをより高次元の空間(e.g. 各項の二乗など)へ射影
2016/10/28 ビッグデータアナリティクス 第3回 31
サポートベクターマシン (SVM)
NAISTAHC Lab.
• 教師なし学習
• ベクトル空間上の点をK種類に分類する
1. K個のクラスタ中心を選択(初期値: ランダム)
2. クラスタ中心からの距離でクラスラベルを決定(ラベルが変わらなければ終了)
3. 決定されたクラスラベルの平均を求めてクラスタ中心とする(2. へ)
2016/10/28 ビッグデータアナリティクス 第3回 32
K-means クラスタリング
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) (正しく分類)
NAISTAHC Lab.
• 機械学習による大規模データ処理は大量の計算リソースが必要
– 値段が倍になっても性能は倍にはならない(前回の授業)
– 多数の性能/価格比がよいサーバを使いたい
• 分散処理の特徴・問題
– 複数のサーバでメモリを共有できない
• DPなどの処理を分散させることが難しい
– 計算結果を共有するときのオーバヘッドが大きい
• 仮に分散させたとしてもReduceのオーバヘッドが大きく分散処理による速度向上の恩恵を受けにくい(場合によっては悪化する)
2016/10/28 ビッグデータアナリティクス 第3回 34
分散処理と機械学習
NAISTAHC Lab.
• アルゴリズムごとに考慮すべきもの
– どの計算部分を分散(map)すればよいか
– どの部分で計算結果を統合(reduce)する必要があるか
– 分散処理する上で効率的な計算方法はないか
• 単純ベイズの学習の例
– 単純ベイズでは各単語の 𝑷 𝒙𝒊 𝒕 =𝑪 𝒙𝒊,𝒕 +𝜶
𝒊 𝑪 𝒙𝒊,𝒕 +𝜶を求める
– 頻度カウントは後で足し算できるので処理を分割してよい
– 各ブロックで各単語の頻度と和を求めたら統合する
– 確率の計算は単語ごとに行ってよい
アルゴリズムごとに分散処理を考える必要
2016/10/28 ビッグデータアナリティクス 第3回 35
アルゴリズム中の分散処理
NAISTAHC Lab.
• Apache Spark上の機械学習ライブラリ(Mllib)では分散処理に最適化された機械学習アルゴリズムが使える
毎回機械学習のアルゴリズムと分散処理を考えなくてよい
• ただし使うサーバの台数などはきちんと考える必要
回すアルゴリズム・台数と効率をよく考える
一番コストパフォーマンスがよい台数を考える
2016/10/28 ビッグデータアナリティクス 第3回 36
Apache Spark での機械学習 (MLlib)
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 (正しく分類された)
NAISTAHC Lab.
• 以下のいずれかを実施して下さい1. 第2回の鈴木先生担当分のpysparkを用いて任意の単語の
ワードカウントを実施上記の実行結果をペーストし考察を記述
2. 第3回の吉野担当分のMultinominalNBを用いて2クラスの分類器を作成上記の実行結果をペーストし考察を記述
• 締め切り: 11/11 23:59 JST
• 提出先: TAへe-mailで送信
• 件名を「BDA2016-3課題-[名前]-[学生番号]」とする– 守っていないものは提出したと扱わない
2016/10/28 ビッグデータアナリティクス 第3回 38
課題
NAISTAHC Lab.
• 今回配布したデータの中から以下の2つのうちいずれかを取り組んでください。
1. 「2015年の台風」「2016年の台風」それぞれのデータを用いて違いについて分析して下さい。
2. 「ノーベル」「カープ」「電通」それぞれのデータから「時系列的な変化」などの特定の観点で分析を行って下さい。
– 11/18の授業で各班代表が発表します。
– 「Apache Spark」または「機械学習」のいずれかを用いて分析を行うこと(両方使うと加点)。
– レポートは班全員で担当し、それぞれの担当箇所を明示すること(同じ班だから同じ点数になるとは限りません)。
2016/10/28 ビッグデータアナリティクス 第3回 39
自由課題