Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ゼロから作るアンサンブル学習(第1回)

tatamiya
March 28, 2019

 ゼロから作るアンサンブル学習(第1回)

tatamiya

March 28, 2019
Tweet

More Decks by tatamiya

Other Decks in Technology

Transcript

  1. ゼロから作るアンサンブル学習
    ~OSSに学ぶ機械学習の実装~
    第1回 決定⽊・ランダムフォレストの理解と実装
    たみや@tatatatatamiya

    View Slide

  2. このセミナーについて
    u ⽬的
    u アルゴリズムの理解
    u OSSから良い実装を学ぶ
    u スケジュール
    u 第1回(3/28 本⽇) : 決定⽊・ランダムフォレストの理解と実装
    u 第2回(4⽉下旬) : scikit-learnの読解
    u 第3回(5⽉下旬) : 勾配ブースティング〜XGBoost, LightGBM

    View Slide

  3. アルゴリズムの概要
    - 決定⽊
    - ランダムフォレスト

    View Slide

  4. 決定⽊

    View Slide

  5. 決定⽊とは︖
    プロフィール
    年齢 33歳
    ⾝⻑ 168cm
    体重 65kg
    収⼊ 700万円
    !?
    ⾝⻑ > 170cm?
    体重 > 70kg?
    体重 > 100kg?
    年齢 >30?
    収⼊ >1000万円?
    No
    No Yes
    Yes
    No Yes No Yes
    No Yes















    閾値を設けてYes/Noで振り分けていく
    モテる︖モテない︖
    課題
    - どの特徴量で切る︖
    - 閾値はいくつにする︖

    View Slide

  6. 分類⽅法の決め⽅
    年齢 33歳 32歳 54歳 45歳 24歳 27歳 35歳 48歳 38歳
    ⾝⻑ 168cm 165cm 173cm 155cm 175cm 160cm 165cm 180cm 160cm
    体重 70kg 50kg 70kg 55kg 65kg 130kg 80kg 75kg 60kg
    収⼊ 400万円 600万円 550万円 800万円 300万円 500万円 250万円 700万円 1500万円





    テ ⾮




    テ モ









    <理想的なデータの分割>
    データをある特徴量のある閾値で⼆分割した時,
    それぞれの断⽚が1種類のクラスのみから構成されている
    あらかじめラベルづけされたデータを⼊れて学習をおこなう

    View Slide

  7. 分割の判断指標
    u 「どれだけ単⼀クラス構成に近いか」を不純度として定量化する
    u データ中に占めるクラスの構成⽐率を#
    としたとき,全クラス数をとして,
    u Gini係数 :∑#&'
    ( 1 − #
    #
    = 1 − ∑#&'
    ( #
    ,
    u Entropy : − ∑#&'
    ( #
    log #
    u いずれの指標も,
    u ある⼀つのクラスだけに偏っている時,最⼩値0をとる
    u #∗ = 1, #
    = 0 ( ≠ ∗)
    u 全クラスの構成⽐が等しい時,最⼤値log をとる
    u #
    = 1/
    u 不純度が最⼩になる分割特徴量・閾値を探索する

    View Slide

  8. 分割の判断指標















    テ ⾮





    収⼊ 250万円 300万円 400万円 500万円 550万円 600万円 700万円 800万円 1500万円
    収⼊ ≦ 500万円
    モテ =
    1
    4
    , ⾮モテ =
    3
    4
    ℎ;
    = 1 −
    1
    4
    ,

    3
    4
    ,
    = 3/8
    収⼊ > 500万円
    モテ =
    1
    5
    , ⾮モテ =
    4
    5
    ℎ>
    = 1 −
    1
    5
    ,

    4
    5
    ,
    =
    8
    25
    A
    =
    4
    9
    ℎ;
    +
    5
    9
    ℎ>
    = 0.3444 …
    Gini係数の場合
    …ここで分けると良さそう︖

    View Slide

  9. 分割の判断指標















    テ ⾮





    年齢 35歳 24歳 33歳 27歳 54歳 32歳 48歳 45歳 38歳
    ⾝⻑ 165cm 175cm 168cm 160cm 170cm 165cm 180cm 155cm 160cm
    体重 80kg 65kg 70kg 130kg 70kg 50kg 75kg 55kg 60kg
    収⼊ 250万円 300万円 400万円 500万円 550万円 600万円 700万円 800万円 1500万円
    ℎ;
    = 0.444 … , ℎ>
    = 0,
    A
    = F
    G
    ℎ;
    + H
    G
    ℎ>
    = 0.296 … < 0.3444
    むしろ,今回は以下の分割が最適︓

    View Slide

  10. どこで分割を⽌めるか︖















    テ ⾮





    年齢 35歳 24歳 33歳 27歳 54歳 32歳 48歳 45歳 38歳
    ⾝⻑ 165cm 175cm 168cm 160cm 170cm 165cm 180cm 155cm 160cm
    体重 80kg 65kg 70kg 130kg 70kg 50kg 75kg 55kg 60kg
    収⼊ 250万円 300万円 400万円 500万円 550万円 600万円 700万円 800万円 1500万円
    年収 > 600万円?
    No Yes


    年齢 27歳 35歳 32歳 33歳 54歳 24歳
    ⾝⻑ 160cm 165cm 165cm 168cm 170cm 175cm
    体重 130kg 80kg 50kg 70kg 70kg 65kg
    収⼊ 500万円 250万円 600万円 400万円 550万円 300万円


    テ モ












    ⾝⻑ >168cm?
    Yes





    不純度が最⼩になる特徴量・閾値の組み合わせを
    探して分割

    分割後のデータをさらに分割していく
    <停⽌条件>
    - 不純度の減少量が⼀定値以下
    - 分割後のデータ数が⼀定値以下
    - 分割の「深さ」が⼀定値以上

    View Slide

  11. ランダムフォレスト

    View Slide

  12. ランダムフォレスト概要
    u 決定⽊の⽋点
    u 学習データに強く依存する
    u ⽊を⼤量に集めて多数決を⾏う
    u 決定⽊よりは性能の劣る「弱学習器」を⼤量に作る
    u 弱学習器の構築指針
    u 学習に使うデータを変える
    u ブートストラップサンプリング
    u 分割につかう特徴量を変える
    u 全特徴量は使わず,⼀部のみ使⽤する
    u 分割ごとにランダムに選択する

    View Slide

  13. ブートストラップサンプリング
    u データをランダムに選択して新しいデータセットを量産する
    u 重複を許す(復元抽出)









    テ モ









    テ ⾮



    テ モ











    テ ⾮





    ・・・

    View Slide

  14. 特徴量のランダム選択
    u 分割の際に,⼀部のランダムに選んだ特徴量のみを⾒る









    テ モ













    年齢 24歳 27歳 33歳 45歳 54歳 35歳 32歳 35歳 27歳
    ⾝⻑ 175cm 160cm 168cm 155cm 170cm 165cm 165cm 165cm 160cm
    体重 65kg 130kg 70kg 55kg 70kg 80kg 50kg 80kg 130kg
    収⼊ 300万円 500万円 400万円 800万円 550万円 250万円 600万円 250万円 500万円

    View Slide