決定木を使った分類をわかりやすく解説!

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024

Комментарии • 8

  • @khayashi3356
    @khayashi3356 2 года назад +3

    1番わかりやすい!

    • @K_DM
      @K_DM  2 года назад +1

      ありがとうございます。
      これからもわかりやすい動画作れるように頑張ります🙇

  • @ゆっくりんぐ
    @ゆっくりんぐ Год назад +2

    ものすごく分かりやすい動画をありがとうございます!
    今回はサンプルデータを作成していましたが自分で取得したcsv形式のデータでも条件をつけて決定木の作成は可能なのでしょうか?
    真似しようと進めていたのですが自分のcsvファイルを入力する方法や必要な前処理の有無も理解できておらず、不明瞭な質問になってしまっていたら申し訳ないです。
    環境は、GoogleColaboratoryで行っており、csvファイルの中身は4列100行で、時系列出た(加速度)です。決定木は線形には向いていないと聞いたような気もするのですが、最終的にRandomForestClassifierで分類を行いたいと考えており、もしも何かアドバイスなどあればご教授頂けますと幸いです。

    • @K_DM
      @K_DM  Год назад

      コメントありがとうございます。
      > csvファイルの中身は4列100行で、時系列データ(加速度)
      ということはすべて数値データであると理解しました。
      精度が出るかはわかりませんが、このデータで決定木を作ることは十分可能です。RandomForestを使う場合は、RandomForestは特徴をランダムに選んだ木をたくさん作成するモデルなので、4つよりもよりたくさんの特徴を用意した方がいいと思います(たとえば特徴同士の差や掛け算をしたものなど)。
      また、データ数が少ないのでデータを増やした上での評価も必要だと思います。
      > 決定木は線形には向いていない
      決定木は「Aが●以上かどうか」といった分岐を作るため、「Aが増えるほどBが増える」といった決定境界を作りにくいということを指していると理解しました。
      これはその通りで、決定木が決定境界を引きやすいような特徴量を事前に作成してあげる必要があります。

    • @ゆっくりんぐ
      @ゆっくりんぐ Год назад

      @@K_DM
      返信頂き本当にありがとうございます。
      4列100行のデータが、カーブ20種類直進10種類ずつあり、必要に応じてもう少し同じ量のデータが増やせる状態です。
      また、記載できていなかったのですが加速度というのも車に加速度センサを設置して直進やカーブを走行した時に取得できる加速度のことでした。一度に記載することができておらず、申し訳ございません。
      >4つよりもよりたくさんの特徴を用意した方がいい
      現在の特徴の内訳は、x軸加速度、y軸加速度、z軸加速度、合成加速度なのですが、特徴を増やすというのはExcel上(csv)で行えば良いのでしょうか、それとも前処理で行う物なのでしょうか。
      >決定木が決定境界を引きやすいような特徴量を事前に作成
      例えば、x軸加速度の値が0.4以上かどうか、といったものを作成して決定木を実装すれば良いという解釈でよろしいでしょうか。
      重ねての質問になってしまい申し訳ございません。
      もしもお答え頂けますと、幸いです。

    • @K_DM
      @K_DM  Год назад

      > 特徴を増やすというのはExcel上(csv)で行えば良いのでしょうか、それとも前処理で行う物なのでしょうか
      csv上でしてもいいですし、pythonコード内でしてもいいと思います。やりやすい方で全く問題ないです。
      scikit-learnを使う場合はsklearn.preprocessing.PolynomialFeaturesなどが該当すると思います。
      scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PolynomialFeatures.html
      > 例えば、x軸加速度の値が0.4以上かどうか、といったものを作成して決定木を実装すれば良いという解釈でよろしいでしょうか
      はい。ただ、『x軸加速度の値が0.4以上かどうか』というルールは決定木自身が簡単に作成することができるルールなので、『A以上・以下か』よりも複雑な特徴を作った方が効果が出ると思います。
      たとえば『x軸加速度とy軸加速度の差』や『x軸加速度とy軸加速度の比率』などです。もちろん、闇雲に新しい特徴を作成するのではなく、予測したい値と関係がありそうなものを作成してしてください。
      『x軸加速度とy軸加速度の差』のような特徴をなぜあらかじめ追加してあげた方がいいかというと、『x軸加速度』と『y軸加速度』だけから『x軸加速度とy軸加速度の差』のルールを作ることが難しいからです。仮に『x軸加速度とy軸加速度の差が約1ならばカーブA』というルールがある場合、
      - 『1 < x軸加速度 < 2 』かつ『 2 < y軸加速度 < 3』→『カーブA』
      - 『2 < x軸加速度 < 3 』かつ『 3 < y軸加速度 < 4』→『カーブA』
      - 『3 < x軸加速度 < 4 』かつ『 4 < y軸加速度 < 5』→『カーブA』
      ...
      といったルールをたくさん作る必要があります。しかし、事前に『x軸加速度とy軸加速度の差』という特徴があれば
      - 『 0.5 < x軸加速度とy軸加速度の差 < 1.5』→『カーブA』
      というひとつのルールで済みます。ルールをたくさん作るにはデータが沢山必要です、そのためデータ数が少ない場合は事前に特徴を作ってあげるのが有効かもしれません。
      参考になれば幸いです。

    • @ゆっくりんぐ
      @ゆっくりんぐ Год назад +1

      ​@@K_DM
      続けての返信本当にありがとうございます。
      なるほど…!事前に特徴を作るというのは単純な物ばかりにしても良いという訳ではないのですね。加速度の差にそんな使い方があるとは盲点でした。
      現在ではデータ数が多いわけではないので、事前に特徴を作るという部分に注力したいと思います!
      私自身機械学習素人で勉強し始めたばかりなので、これからも​ @K_DM【機械学習 x Python】様の他の動画でも勉強させて頂きます!分かりやすい動画をありがとうございます!応援してます!

  • @ken3669
    @ken3669 Год назад

    ということは、ウミガメのスープと似たような考え方ですね!