Cây quyết định là một công cụ ra quyết định sử dụng cấu trúc cây giống như lưu đồ hoặc là một mô hình về các quyết định và tất cả các kết quả có thể có của chúng, bao gồm cả kết quả, chi phí đầu vào và tiện ích.

Thuật toán cây quyết định thuộc loại thuật toán học có giám sát. Nó hoạt động cho cả các biến đầu ra liên tục cũng như phân loại.

Các nhánh / cạnh đại diện cho kết quả của nút và các nút có:

Điều kiện [Mã quyết định]

Kết quả [Nút kết thúc]

Các nhánh / cạnh đại diện cho sự thật / sai của câu lệnh và đưa ra quyết định dựa trên điều đó trong ví dụ dưới đây hiển thị cây quyết định đánh giá số nhỏ nhất trong ba số:

Hồi quy cây quyết định:

Hồi quy cây quyết định quan sát các đặc điểm của một đối tượng và đào tạo một mô hình trong cấu trúc của cây để dự đoán dữ liệu trong tương lai nhằm tạo ra đầu ra liên tục có ý nghĩa. Đầu ra liên tục có nghĩa là đầu ra / kết quả không rời rạc, tức là nó không được biểu diễn chỉ bằng một tập hợp số hoặc giá trị rời rạc, đã biết.

Ví dụ về đầu ra rời rạc: Mô hình dự đoán thời tiết dự đoán có hay không có mưa trong một ngày cụ thể.

Ví dụ về sản lượng liên tục: Mô hình dự đoán lợi nhuận cho biết lợi nhuận có thể có được từ việc bán một sản phẩm.

Ở đây, các giá trị liên tục được dự đoán với sự trợ giúp của mô hình hồi quy cây quyết định.

Hãy xem việc triển khai từng bước –

Bước 1: Nhập các thư viện bắt buộc

//Python
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# import numpy package for arrays and stuff 
import numpy as np  
  
# import matplotlib.pyplot for plotting our result 
import matplotlib.pyplot as plt 
  
# import pandas for importing csv files  
import pandas as pd  

Bước 2: Khởi tạo và in Dataset.

# import dataset 
# dataset = pd.read_csv('Data.csv')  
# alternatively open up .csv file to read data 
  
dataset = np.array( 
[['Asset Flip', 100, 1000], 
['Text Based', 500, 3000], 
['Visual Novel', 1500, 5000], 
['2D Pixel Art', 3500, 8000], 
['2D Vector Art', 5000, 6500], 
['Strategy', 6000, 7000], 
['First Person Shooter', 8000, 15000], 
['Simulator', 9500, 20000], 
['Racing', 12000, 21000], 
['RPG', 14000, 25000], 
['Sandbox', 15500, 27000], 
['Open-World', 16500, 30000], 
['MMOFPS', 25000, 52000], 
['MMORPG', 30000, 80000] 
]) 
  
# print the dataset 
print(dataset)  

Bước 3: Chọn tất cả các hàng và cột 1 từ tập dữ liệu thành “X”

# select all rows by : and column 1 
# by 1:2 representing features 
X = dataset[:, 1:2].astype(int)  
  
# print X 
print(X) 

Bước 4: Chọn tất cả các hàng và cột 2 từ tập dữ liệu thành “y”

# select all rows by : and column 2 
# by 2 to Y representing labels 
y = dataset[:, 2].astype(int)  
  
# print y 
print(y) 

Bước 5: Điều chỉnh hồi quy cây quyết định với tập dữ liệu

# import the regressor 
from sklearn.tree import DecisionTreeRegressor  
  
# create a regressor object 
regressor = DecisionTreeRegressor(random_state = 0)  
  
# fit the regressor with X and Y data 
regressor.fit(X, y) 

Bước 6: Dự đoán giá trị mới

# predicting a new value 
  
# test the output by changing values, like 3750 
y_pred = regressor.predict(3750) 
  
# print the predicted price 
print("Predicted price: % d\n"% y_pred)  
Predicted price: 8000

Bước 7: Hình dung kết quả

//Python
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Group: https://www.facebook.com/groups/cafedev.vn/
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
#Pinterest: https://www.pinterest.com/cafedevvn/
#YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
# -----------------------------------------------------------

# arange for creating a range of values  
# from min value of X to max value of X  
# with a difference of 0.01 between two 
# consecutive values 
X_grid = np.arange(min(X), max(X), 0.01) 
  
# reshape for reshaping the data into  
# a len(X_grid)*1 array, i.e. to make 
# a column out of the X_grid values 
X_grid = X_grid.reshape((len(X_grid), 1))  
  
# scatter plot for original data 
plt.scatter(X, y, color = 'red') 
  
# plot predicted data 
plt.plot(X_grid, regressor.predict(X_grid), color = 'blue')  
  
# specify title 
plt.title('Profit to Production Cost (Decision Tree Regression)')  
  
# specify X axis label 
plt.xlabel('Production Cost') 
  
# specify Y axis label 
plt.ylabel('Profit') 
  
# show the plot 
plt.show() 

Bước 8: Cây cuối cùng được xuất và hiển thị trong CẤU TRÚC CÂY bên dưới, được hiển thị trực quan bằng cách sử dụng http://www.webgraphviz.com/ bằng cách sao chép dữ liệu từ tệp ‘tree.dot’.

# import export_graphviz 
from sklearn.tree import export_graphviz  
  
# export the decision tree to a tree.dot file 
# for visualizing the plot easily anywhere 
export_graphviz(regressor, out_file ='tree.dot', 
               feature_names =['Production Cost'])  

Đầu ra (Cây quyết định):

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!