Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
SCWを実装してみよう
自己紹介
・ 石田岳志 (18)
・ 機械学習と Python が大好き
・ ミクさんはもっと好き
・ ウサギィでバイトしてる
SCWつくるよ!!!
SCWってなに?
線形分類器です
なにがすごいの?
・ 速い!
・ 精度がいい!
・ ノイズに強い!
・ 逐次学習できる!
神!!!
どうやってつくるの?
論文をコードに落とし込みます
↑今日やること
このハッカソンでやりたいこと
・ 論文をコードにする
・ アルゴリズムを使いこなす
このハッカソンでやりたいこと
・ 論文をコードにする ←今日はこっち
・ アルゴリズムを使いこなす
アルゴリズムの解説
線形分類器にもいろいろある
たとえば・・・
・ Perceptron
・ Passive-Aggressive (PA) learning
・ Confidence-Weighted Linear Classification (CW)
・ Adaptive Regulari...
たとえば・・・
・ Perceptron
・ Passive-Aggressive (PA) learning
・ Confidence-Weighted Linear Classification (CW)
・ Adaptive Regulari...
それを解消したのが
Soft Confidence-Weighted Learning (SCW)
各アルゴリズムの
どういう欠点を
どう解消したのかがわかれば
SCWがわかる!!
アルゴリズムを見ていく前に
言葉の定義
有用な特徴量 #とは
病気の人を分類したいとする
運動や食事の内容には依存するが
運動量が多い人は健康
食事の量が多すぎない人は健康
学歴や住んでいる場所には依存しない
海の近くに住んでいれば健康? -そうではない
学歴が高い人が健康? -そうではない
とする
運動、食事の内容 は有用な特徴量だが
学歴、住んでいる場所 は有用な特徴量ではない
有用な特徴量が定義できたので
Perceptron
Perceptronとは
・ 最も単純なオンライン線形分類器
・ フランク・ローゼンブラットが
1957 年に考案
アルゴリズム
間違えたら分離平面を移動
def predict(vector, weights, threshold):
if(np.dot(vector, weights) > threshold):
return 1
return -1
def perceptron(X, y, ...
Perceptronの欠点
・ 線形分離不可能なデータは扱えない
・ データの順番や頻度によっては
うまく学習できない
・ 有用な特徴量も、そうでない特徴量も
同等に扱ってしまう
低頻度だが有用な特徴量があったとしても、
それ以外の特徴量と同等に扱われる
→ 効率が悪い
そこで
Confidence-Weighted (CW)
低頻度だが有用な特徴量
→ 活用できれば一気に性能が上がる
高頻度の特徴量
→重み (分離平面) をゆっくり更新しても
学習できる
低頻度の特徴量
→ 重みを思い切って更新する必要がある
重みがガウス分布に従うと仮定し、
頻出する特徴量の重みの分散を
小さくしていく
現在の訓練例を正しく分類できるように
今までの分布になるべく近くなるように
重みを更新する
はやい!!!
CWの問題点
ノイズに弱い
CWの問題点
yt : クラスラベル
w : 重みベクトル
xt 入力データ
η ∈ (0.5, 1] : パラメータ
Pr[yt(w · xt) ≥ 0] ≥ η
を常に満たすように重みを更新する
→ 一定の割合以上の正答率を
必ず得ようとす...
それを解消したのが
Adaptive Regularization of Weight Vectors
(AROW)
条件式を書き換えてノイズに強くした
AROW はマージン最大化はやってくれないが
SCW はやってくれる
アルゴリズムの比較
実装してみる
擬似コード
Σ は CW のときに出てきた重みのガウス分布の共分散
µ は重みの分布の平均
あとは
このへんとか
このへんをよくみて
がんばって実装しましょう!!!
Upcoming SlideShare
Loading in …5
×

第一回機械学習アルゴリズム実装会

635 views

Published on

第一回機械学習アルゴリズム実装会で使用したSCWのスライドです

Published in: Technology
  • Be the first to comment

第一回機械学習アルゴリズム実装会

  1. 1. SCWを実装してみよう
  2. 2. 自己紹介 ・ 石田岳志 (18) ・ 機械学習と Python が大好き ・ ミクさんはもっと好き ・ ウサギィでバイトしてる
  3. 3. SCWつくるよ!!!
  4. 4. SCWってなに?
  5. 5. 線形分類器です
  6. 6. なにがすごいの?
  7. 7. ・ 速い! ・ 精度がいい! ・ ノイズに強い! ・ 逐次学習できる!
  8. 8. 神!!!
  9. 9. どうやってつくるの?
  10. 10. 論文をコードに落とし込みます ↑今日やること
  11. 11. このハッカソンでやりたいこと ・ 論文をコードにする ・ アルゴリズムを使いこなす
  12. 12. このハッカソンでやりたいこと ・ 論文をコードにする ←今日はこっち ・ アルゴリズムを使いこなす
  13. 13. アルゴリズムの解説
  14. 14. 線形分類器にもいろいろある
  15. 15. たとえば・・・ ・ Perceptron ・ Passive-Aggressive (PA) learning ・ Confidence-Weighted Linear Classification (CW) ・ Adaptive Regularization of Weight Vectors (AROW)
  16. 16. たとえば・・・ ・ Perceptron ・ Passive-Aggressive (PA) learning ・ Confidence-Weighted Linear Classification (CW) ・ Adaptive Regularization of Weight Vectors (AROW) ↑それぞれ欠点を持っている
  17. 17. それを解消したのが
  18. 18. Soft Confidence-Weighted Learning (SCW)
  19. 19. 各アルゴリズムの どういう欠点を どう解消したのかがわかれば SCWがわかる!!
  20. 20. アルゴリズムを見ていく前に
  21. 21. 言葉の定義
  22. 22. 有用な特徴量 #とは
  23. 23. 病気の人を分類したいとする
  24. 24. 運動や食事の内容には依存するが 運動量が多い人は健康 食事の量が多すぎない人は健康 学歴や住んでいる場所には依存しない 海の近くに住んでいれば健康? -そうではない 学歴が高い人が健康? -そうではない とする
  25. 25. 運動、食事の内容 は有用な特徴量だが 学歴、住んでいる場所 は有用な特徴量ではない
  26. 26. 有用な特徴量が定義できたので
  27. 27. Perceptron
  28. 28. Perceptronとは ・ 最も単純なオンライン線形分類器 ・ フランク・ローゼンブラットが 1957 年に考案
  29. 29. アルゴリズム 間違えたら分離平面を移動
  30. 30. def predict(vector, weights, threshold): if(np.dot(vector, weights) > threshold): return 1 return -1 def perceptron(X, y, threshold=0.5, learning_rate=0.1): weights = np.zeros(len(X[0])) while(True): error_count = 0 for vector, teacher in zip(X, y): #分類してみる result = predict(vector, weights, threshold) #正しく分類できていない場合は分離平面を動かす if(teacher != result): error_count += 1 for index, value in enumerate(vector): weights[index] += learning_rate * value #すべてのデータが正しく識別できたら終了 if(error_count == 0): return
  31. 31. Perceptronの欠点 ・ 線形分離不可能なデータは扱えない ・ データの順番や頻度によっては うまく学習できない ・ 有用な特徴量も、そうでない特徴量も 同等に扱ってしまう
  32. 32. 低頻度だが有用な特徴量があったとしても、 それ以外の特徴量と同等に扱われる → 効率が悪い
  33. 33. そこで
  34. 34. Confidence-Weighted (CW)
  35. 35. 低頻度だが有用な特徴量 → 活用できれば一気に性能が上がる
  36. 36. 高頻度の特徴量 →重み (分離平面) をゆっくり更新しても 学習できる 低頻度の特徴量 → 重みを思い切って更新する必要がある
  37. 37. 重みがガウス分布に従うと仮定し、 頻出する特徴量の重みの分散を 小さくしていく
  38. 38. 現在の訓練例を正しく分類できるように 今までの分布になるべく近くなるように 重みを更新する
  39. 39. はやい!!!
  40. 40. CWの問題点 ノイズに弱い
  41. 41. CWの問題点 yt : クラスラベル w : 重みベクトル xt 入力データ η ∈ (0.5, 1] : パラメータ Pr[yt(w · xt) ≥ 0] ≥ η を常に満たすように重みを更新する → 一定の割合以上の正答率を 必ず得ようとする → ノイズに弱い
  42. 42. それを解消したのが
  43. 43. Adaptive Regularization of Weight Vectors (AROW)
  44. 44. 条件式を書き換えてノイズに強くした
  45. 45. AROW はマージン最大化はやってくれないが SCW はやってくれる
  46. 46. アルゴリズムの比較
  47. 47. 実装してみる
  48. 48. 擬似コード Σ は CW のときに出てきた重みのガウス分布の共分散 µ は重みの分布の平均
  49. 49. あとは このへんとか このへんをよくみて
  50. 50. がんばって実装しましょう!!!

×