機械学習キャンバス ver. 0.1
2016-11-08
サイボウズラボ 西尾泰和
目的
「機械学習や人工知能で解決できないか」という相談を
しばしば受ける。特にエンジニアではない人に経営学の言葉で
説明する時に、手持ちの道具では不足を感じる。
「ビジネスモデル」という漠然としたものの設計をわかりやすく
するために「リーンキャンバス」というフレームワークが生まれ
たみたいに「機械学習・人工知能」に対してもキャンバスがあれ
ばいいのではないか?そこでver. 0.1を作ってみた。
リーンキャンバスの肝は「方法に固執するな」だと思うので、
こちらも方法は最後に考える仕組みにした。
2
機械学習キャンバス ver. 0.1
3
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
(2) Solution by hand:人手でそれを実現する方法
(3) Input:使え
る入力データ
(5) Output:得
たい出力データ
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
(6) 出力データ
をどう顧客価値
に結びつけるか
スパムフィルタ
スパムフィルタを世界で初めて設計する人の立場に立って
このキャンバスを埋めていきながら考えてみよう。
4
スパムフィルタ
5
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
(3) Input:使え
る入力データ
(5) Output:得
たい出力データ
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
(6) 出力データ
をどう顧客価値
に結びつけるか
スパムフィルタ
6
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
秘書がメールの内容を見て、スパムとそうでないものに分ける(3) Input:使え
る入力データ
(5) Output:得
たい出力データ
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
(6) 出力データ
をどう顧客価値
に結びつけるか
スパムフィルタ
7
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
秘書がメールの内容を見て、スパムとそうでないものに分ける(3) Input:使え
る入力データ
メールの文面
(5) Output:得
たい出力データ
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
(6) 出力データ
をどう顧客価値
に結びつけるか
スパムフィルタ
8
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
秘書がメールの内容を見て、スパムとそうでないものに分ける
(3) Input:使え
る入力データ
メールの文面
(5) Output:得
たい出力データ
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
顧客のメール文
面を見る権限が
必要、メール
サーバかメーラ
かに手を加える
(6) 出力データ
をどう顧客価値
に結びつけるか
スパムフィルタ
9
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
秘書がメールの内容を見て、スパムとそうでないものに分ける
(3) Input:使え
る入力データ
メールの文面
(5) Output:得
たい出力データ
「スパムである
/ない」の情報(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
顧客のメール文
面を見る権限が
必要、メール
サーバかメーラ
かに手を加える
(6) 出力データ
をどう顧客価値
に結びつけるか
スパムフィルタ
10
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
秘書がメールの内容を見て、スパムとそうでないものに分ける
(3) Input:使え
る入力データ
メールの文面 (5) Output:得
たい出力データ
「スパムである
/ない」の情報
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
顧客のメール文
面を見る権限が
必要、メール
サーバかメーラ
かに手を加える
(6) 出力データ
をどう顧客価値
に結びつけるか
「スパムであ
る」と判定され
たメールを自動
でInboxから別
のフォルダに移
動する
スパムフィルタ
11
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムメールがInboxからなくなってほしい
(2) Solution by hand:人手でそれを実現する方法
秘書がメールの内容を見て、スパムとそうでないものに分ける
(3) Input:使え
る入力データ
メールの文面 (5) Output:得
たい出力データ
「スパムである
/ない」の情報
(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
怪しいキーワードが含まれているメールをスパムと判定。キー
ワードは人間が追加する。
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
顧客のメール文
面を見る権限が
必要、メール
サーバかメーラ
かに手を加える
(6) 出力データ
をどう顧客価値
に結びつけるか
「スパムであ
る」と判定され
たメールを自動
でInboxから別
のフォルダに移
動する
素朴アルゴリズム
怪しいキーワードが含まれているメールをスパムと判定。キー
ワードは人間が追加する。
実現可能性:簡単に実装できそう
計算コスト:各メールをキーワードの個数だけ全文検索
必要なデータ:「怪しいキーワードのリスト」
これどうやって準備する?→サブタスク発生!
12
サブタスク
顧客が「スパムフィルタの利用者」ではなく
「スパムフィルタの設計者」である自分に変わる。
それによって得られるデータも変わる。
達成したい目標もかわる
13
スパムフィルタのサブタスク
14
(1) Customer Happiness:顧客は何がどうなるとうれしいのか
スパムっぽい怪しいキーワードのリストが欲しい
(2) Solution by hand:人手でそれを実現する方法
メールの内容を見て、スパムによく出て来て普通のメールに出
てこない単語をリストアップする
(3) Input:使え
る入力データ
メールの文面と
それがスパムで
あるかどうか
(5) Output:得
たい出力データ
スパムっぽい怪
しい単語(7) Solution by computer:コンピュータで実現する方法(素朴な
アルゴリズム、ルールベースなど)
(10) Solution by ML/AI:機械学習や人工知能で実現する方法
(8) Training data:正解データ
の獲得方法・量
(9) Target Function:評価関数
(出力がどうだと好ましいのか)
(4) 入力データ
をどう得るか
自分のメールを
使う
(6) 出力データ
をどう顧客価値
に結びつけるか
単にリストを作
るだけ
機械的に作る方法
スパムメールと普通のメールをそれぞれ単語分割して
各単語の「スパムメール中の出現頻度」と
「普通のメール中の出現頻度」をカウント。
スパムメール中での出現頻度が普通の出現頻度より
大きいほど「スパムっぽい度」が高いと考えて
適当な閾値以上のものを選択。
実現可能性:できそう。
15
作者の誤算
ナイーブベイズでのスパムフィルタを作る話になる予定だったが
ナイーブベイズを使わないまま解決してしまった。
実際にこのスパムフィルタを作って実験してみると
• 「キーワードが含まれていたら問答無用でスパム」という処理
のために誤判定が多い
• キーワードリストの更新やパーソナライズが行われないので、
新しいパターンのスパムや、特定の人だけが受け取るスパムに
対処ができない。
という問題が起きるはず。
16
ルールの確率化
>「キーワードが含まれていたら問答無用でスパム」という処理
のために誤判定が多い
こういう「TrueかFalseかで判断しているルールの誤判定が起きて
しまう問題」を緩和するために、真偽値の代わりに確率値を使う
ことはよく行われている。
ナイーブベイズでのスパムフィルタも「スパムである/ない」の真
偽値の代わりに「スパムである確率が高い/低い」の確率値を使う
17
see: 「ルールベースから機械学習への道 公開用」
http://www.slideshare.net/nishio/ss-53221829

機械学習キャンバス0.1