1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

決定木(CART)で分類、回帰をざっくりと

Last updated at Posted at 2019-03-02

決定木(CART)の分類、回帰をしてみたメモ。

#決定木
理論などは[入門]初心者の初心者による初心者のための決定木分析が参考になりました。

#実装
今回は、線形分離不可能であるmake_moonsを使用していきます。

##分類問題

#必要なライブラリをインポート
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

#データの数は200、ノイズ(分散)は0.1に設定
moons = make_moons(n_samples=200, noise=0.1, random_state=0)

#データを分割する
X = moons[0]
y = moons[1]

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

#学習(treeの深さをデフォルトと3に分けている)
tree_clf = DecisionTreeClassifier().fit(X_train, y_train)
tree_clf_3 = DecisionTreeClassifier(max_depth=3).fit(X_train, y_train)

#結果
print(tree_clf.score(X_test, y_test)) #0.98
print(tree_clf_3.score(X_test, y_test)) #0.92

結果を見るとどちらも高精度で分類されていることがわかりますが、グラフにプロットしてみると

スクリーンショット 2019-03-02 23.53.46.png
※左:デフォルト 右:treeの深さが3

右のtreeの深さが3を見るとうまく分類されていなく、また予測面が直線で表現されていることがわかりました。

##回帰問題

#必要なライブラリをインポート
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
import mglearn
from sklearn.tree import DecisionTreeRegressor

#データを分割、学習(treeの深さをデフォルトと3に分けている)
reg_X, reg_y = mglearn.datasets.make_wave(n_samples=100)

tree_reg = DecisionTreeRegressor().fit(reg_X, reg_y)
tree_reg_3 = DecisionTreeRegressor(max_depth=3).fit(reg_X, reg_y)

#結果
print(tree_reg.score(reg_X, reg_y)) #1.0
print(tree_reg_3.score(reg_X, reg_y)) #0.80

結果を見ると、デフォルトが100%と過学習?となってしまった。
グラフにプロットすると

スクリーンショット 2019-03-03 0.03.04.png
※左:デフォルト 右:treeの深さが3

分類問題の時と同様にtreeの深さが3ではうまく予測されていなく、予測面が直線となってしまっていることがわかりました。

決定木のメリット
・ホワイトボックスな為、理解が容易
・分類問題、回帰問題のどちらにも適用可能

決定木のデメリット
・過学習しやすい
・予測面が滑らかではない

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?