Giới thiệu bài toána Giới thiệu chung Cây quyết định là một thuật toán dựa trên cấu trúc cây được sử dụng để giải quyết vấn đề hồi quy Regression hoặc phân loại Classification, và rất hữ
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
□&□ Báo cáo đồ án Decision Tree Regression
Giảng viên: Ts.Nguyễn Vinh Tiệp
Thành viên nhóm:
Lê Văn Nhân - 19521935
Trương Minh Tuấn - 19522485
Lê Dương Khánh Việt – 19522515
Tháng 11, năm 2021
Trang 2LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại Trường Đại học Công Nghệ Thông Tin, chúng em đã được trang bị các kiến thức cơ bản, các kỹ năng thực tế để có thể hoàn thành đồ án môn học của mình
Chúng em xin gửi lời cảm ơn chân thành đến thầy TS Nguyễn Vinh Tiệp – Giảng viên phụ trách lớp CS116.M11 – Môn Lập trình python cho Máy học đã tận tâm hướng dẫn, truyền đạt những kiến thức cũng như kinh nghiệm cho chúng em trong suốt thời gian học tập
Trong quá trình làm đồ án môn học, mặc dù nhóm chúng em đã cố gắng nhưng chắc chắn sẽ không tránh được những sai sót không đáng có Mong nhận được sự góp
ý cũng như kinh nghiệm quý báu của các các thầy và các bạn sinh viên để được hoàn thiện hơn và rút kinh nghiệm cho những môn học sau Chúng em xin chân thành cảm ơn!
TP.Hồ Chí Minh, tháng 12, năm 2021
Trang 3MỤC LỤC
I. Giới thiệu bài toán 3
a) Giới thiệu chung 3
b) Cây quyết định 4
c) Các công đoạn khác nhau của mô hình 5
d) Ưu và nhược điểm của mô hình 6
e) Ví dụ đơn giản về Decision Tree 6
II Mục tiêu, ứng dụng của mô hình 7
III So sánh với các mô hình hồi quy khác 8
IV Các đặc điểm trong Decision Tree Regression 8
a) Entropy 8
b) Information Gain 9
c) Chỉ số Gini 9
d) Điều kiện dừng 10
e) Pruning (cắt tỉa) 10
V Siêu tham số, tuning siêu tham số 10
VI Các thuật toán phổ biến 12
a) ID3 12
b) C4.5 13
c) Kết luận 13
VII Thực nghiệm 13
a) Giới thiệu bộ dữ liệu 13
b) Phân tích dữ liệu 14
c) Huấn luyện mô hình 15
c) Điều chỉnh tham số 16
VIII Tài liệu tham khảo 17
Trang 4I Giới thiệu bài toán
a) Giới thiệu chung
Cây quyết định là một thuật toán dựa trên cấu trúc cây được sử dụng để giải quyết vấn đề hồi quy (Regression) hoặc phân loại (Classification), và rất hữu ích cho các bộ dữ liệu phức tạp Cây quyết định thuộc mô hình thuật toán học có giảm sát (Supervised learning), nó hoạt động bằng cách quan sát các đặc điểm, tính năng 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, chia nhỏ tập dữ liệu thành các tập con ngày càng nhỏ hơn và sau đó đưa ra các dự đoán dữ liệu trong tương lai dựa trên tập con
Hình 1.1: Cấu trúc của Decision Tree
b) Cây quyết định
Cây quyết định là một cây phân cấp có cấu trúc được dùng để phân lớp các đối tượng dựa vào dãy các luật Các thuộc tính của đối tượng có thể thuộc các kiểu dữ liệu khác nhau như Nhị phân (Binary) , Định danh (Nominal), Thứ tự (Ordinal), Số lượng (Quantitative) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là Binary hoặc Ordinal Nói chung, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes) của nó, cây quyết định sẽ sinh ra các luật để dự đoán lớp của các dữ liệu chưa biết
Nhìn chung Decision Tree thường áp dụng vào cả 2 bài toán: Phân loại
(Classification) và Hồi quy (Regression) Dạng phân loại kết quả thường là rời rạc và không có thứ tự (Ví dụ: mô hình dự đoán thời tiết dự đoán có hay không mưa vào một ngày cụ thể), dạng hồi quy thì dữ liệu có vector đặc trưng bao gồm cả thuộc tính dạng categorical và liên tục, có ý nghĩa (Ví dụ: một mô hình dự đoán lợi nhuận cho biết lợi nhuận có thể được tạo ra từ việc bán một sản phẩm)
Trong phạm vi đồ án này thì nhóm em sẽ tập trung vào mô hình hồi quy của cây quyết định (Decision Tree Regression)
Trang 5Hình 1.2: Ví dụ về Decision Tree
c) Các công đoạn khác nhau của mô hình
Về cốt lõi, cây quyết định bao gồm 3 phần:
Nút quyết định: Đại diện cho một quyết định
Nút cơ hội: Đại diện cho xác suất hoặc sự không chắc chắn
Nút kết thúc: Đại diện cho một kết quả
Kết nối các nút là các nhánh Các nút và nhánh có thể được sử dụng lặp đi lặp lại với nhiều cách kết hợp khác nhau để tạo ra cây có độ phức tạp khác nhau
Hình 1.3: Ví dụ về kết nối nút và nhánh
Trang 6Về bản chất, cây phân loại hay cây hồi quy đều hoạt động dựa theo mô hình trên Điểm khác nhau giữa chúng là ở đầu ra Nếu mục tiêu dự đoán của cây là phân loại thì sẽ là cây phân loại, còn nếu là số thực thì sẽ là cây hồi quy
d) Ưu và nhược điểm của mô hình
Ưu điểm Decision Tree:
Cây quyết định là một thuật toán đơn giản và phổ biến Mô hình sinh ra các quy tắc dễ hiểu cho người đọc, tạo ra bộ luật với mỗi nhánh lá là một luật của cây Cây có thể được trực quan hóa
Dữ liệu cần chuẩn bị nhỏ Dữ liệu đầu vào có thể là là dữ liệu trống, không cần chuẩn hóa hoặc tạo biến giả
Có thể làm việc với cả dữ liệu số và dữ liệu phân loại
Có khả năng xử lý các vấn đề yêu cầu đa đầu ra
Sử dụng mô hình hộp màu trắng Nếu một tình huống nhất định có thể quan sát được trong 1 mô hình, thì lời giải thích cho điều kiện đó dễ dàng được giải thích bằng logic boolean
Có thể xác thực mô hình bằng cách sử dụng các kiểm tra thống kê
Có khả năng là việc với dữ liệu lớn
Nhược điểm Decision Tree:
Mô hình cây quyết định phụ thuộc rất lớn vào dữ liệu của bạn Thậm chí, với một sự thay đổi nhỏ trong bộ dữ liệu, cấu trúc mô hình cây quyết định có thể thay đổi hoàn toàn
Mô hình cây quyết định có thể trở thành cây thiên vị nếu một số lớp chiếm ưu thế Do đó, nên cân bằng dữ liệu trước khi fitting
Mô hình cây quyết định có thể tạo ra cây quá phức tạp, khiến cho việc tổng quan hóa dữ liệu không được tốt Vấn đề này gọi là overfitting Để tránh vấn đề này, các cơ chế như pruning, thiết lập số lượng mẫu tối thiểu tại một nút lá hoặc thiết lập độ sâu tối đa của cây là cần thiết
e) Ví dụ đơn giản về Decision Tree
Xét một ví dụ đơn giản thông qua mô hình sau:
Trang 7Hình 1.4: Ví dụ minh họa
Ở đây, tùy thuộc vào các điều kiện mà ta sẽ quyết định xem công việc nào sẽ được thực hiện tiếp theo, cho đến khi ta đi đến kết luận cuối cùng Trọng tâm ở đây cũng được thể hiện rõ ràng (ăn hay không ăn, ăn cái gì), không có những thông tin không liên quan hoặc không cần thiết, tránh trường hợp cây bị overfitting
II Mục tiêu, ứng dụng của mô hình
Từ những ưu, nhược điểm kể trên, cây quyết định trở thành một công cụ mạnh
mẽ và phổ biến Chúng thường được dùng trong phân tích và dự đoán Chúng cũng là công cụ phổ biến cho máy học và trí tuệ nhân tạo, được sử dụng làm thuật toán đào tạo cho việc học có giám sát
Nhìn chung, cây quyết định được sử dụng trong nhiều ngành công nghiệp khác nhau (Công nghệ, y tế, tài chính), để giải quyết nhiều vấn đề khác nhau Ví dụ như:
Doanh nghiệp đánh giá cơ hội mở rộng, phát triển dựa trên việc phân tích dữ liệu bán hàng từ quá khứ
Công ty quyết định chi tiêu cho ngân sách quảng cáo dựa trên sức mua của khách hàng
Ngân hàng sử dụng dữ liệu khách hàng cung cấp để dự đoán xem khách hàng
đó có thể thanh toán khoảng vay hay không
III So sánh với các mô hình hồi quy khác
Đối với Linear Regression:
Trang 8o Cây quyết định hỗ trợ tính không tuyến tính, trong khi hồi quy tuyến
tính chi hỗ trợ giải pháp tuyến tính
o Khi có một số lượng lớn các feature với ít tập dữ liệu(với độ nhiễu
thấp), hồi quy tuyến tính có thể tốt hơn cây quyết định Trong các trường hợp chung, cây quyết định sẽ có độ chính xác trung bình tốt hơn
o Đối với các biến phân loại độc lập, cây quyết định tốt hơn so với hồi quy
tuyến tính
o Cây quyết định xử lý cột tốt hơn hồi quy tuyến tính.
Đối với Logistic Regression:
o Cây quyết định xử lý cột tốt hơn.
o Cây quyết định không thể suy ra tầm quan trọng của tính năng, trong khi
Logistic Regression thì có
o Cây quyết định tốt hơn cho các giá trị phân loại so với LR.
IV Các đặc điểm trong Decision Tree Regression
a) Entropy
Entropy được dùng để đo tính thuần nhất của một tập dữ liệu, thể hiện mức độ hỗn loạn hay độ nhiễu của dữ liệu. Entropy càng cao thì độ tinh khiết (purity) càng thấp và tạp chất càng cao, được dùng trong các thuật toán ID3, C4.5 và C5.0
Công thức cho Entropy:
S=−∑
i=1
N
p i lo g2p i
Trong đó p i là xác suất trạng thái thứ i xuất hiện, S là tập con.
b) Information Gain
Information Gain là đại lượng dùng để đo tính hiệu quả của một thuộc tính được lựa chọn cho việc phân lớp, là yếu tố quyết định thuộc tính nào nên được chọn làm Root Node Công thức:
Information Gain=E (Y )−E(Y ∨ X )
Để hiểu sâu hơn thì ta làm một ví dụ tìm Root Node của cây:
Có 30 người ở chung một chung cư và có ý định đi tập gym vào buổi chiều nay Giả sử chỉ có 16 người đi và 14 người còn lại không đi tập gym Chúng ta có 2 thuộc tính quyết định họ có đi đến tập gym hay không, bao gồm: Energy có hai giá trị high và low, Motivation có hai giá trị low và high
Trước hết chúng ta tính toán entropy của Energy:
Trang 9Sau đó ta có được kết quả của Information Gain là:
Information Gain=E ( parent )−E ( parent|energy)=0.99−0.62=0.37
Tương tự ta có kết quả Information Gain của thuộc tính Motivation là 0.13 Vì
kết quả của thuộc tính Energy lớn hơn nên ta sẽ chọn Energy làm Root Node
c) Chỉ số Gini
Gini là chỉ số thể hiện mức độ phân loại sai khi ta chọn ngẫu nhiên một phần tử
từ tập data, được sử dụng để đo lường mức độ bất bình đẳng trong phân phối của các lớp, được tính bằng cách lấy 1 trừ đi tổng bình phương tỷ lệ phần trăm ở mỗi lớp Công thức của Gini:
Gini=1−∑
i=1
C
p12
Trong đó: i là số các lớp có trong tập data, p ilà xác suất mà một phần tử ngẫu nhiên thuộc lớp i
Gini được dùng đối với các biến rời rạc có số lượng các trường hợp lớn vì nó
có tốc độ tính toán nhanh hơn so với hàm Entropy nên được sử dụng trong thuật toán CART thay cho Entropy
d) Điều kiện dừng
Để không xảy ra hiện tượng quá khớp và tiết kiệm chi phí khi tính toán, chúng
ta sẽ dừng việc phân chia của cây khi đạt điều kiện như:
Độ sâu của cây chạm một ngưỡng tối thiểu (sử dụng tham số max_depth để điều chỉnh độ sâu)
Số lượng mẫu tối thiểucho mot node lá đạt ngưỡng tối thiểu ( dùng tham số min_samples_split để điều chỉnh)
Trang 10 Node lá hoàn toàn thuộc về một nhóm duy nhất Tức là node phân chia hoàn toàn tinh khiết (purity)
Số lượng các node phân chia đạt ngưỡng
Số lượng các node lá đạt ngưỡng Số lượng node lá càng nhiều thì mô hình càng trở nên phức tạp
e) Pruning (cắt tỉa)
Pruning là một phương pháp giúp chúng ta tránh bị overfitting Nó giúp cải thiện hiệu suất của cây bằng cách loại bỏ các nút con không quan trọng, loại bỏ các nhánh có tầm quan trọng rất thấp
Chủ yếu có 2 cách để Pruning:
Pre-pruning: ta loại bỏ một nút nếu nó có tầm quan trọng thấp trong khi phát triển cây
Post-pruning: khi cây đã xây dựng đến độ sâu nhất định, ta bắt đầu loại bỏ các nút dựa trên ý nghĩa của chúng
V Siêu tham số, tuning siêu tham số
Siêu tham số của Decision Tree Regression bao gồm:
criterion: {“squared_error”, “friedman_mse”, “absolute_error”, “poisson”},
default = “squared_error”: có chức năng đo lường chất lượng một lần tách (split)
o “squared_error” cho sai số bình phương trung bình(mean squared error) bằng với giảm phương sai làm tiêu chí lựa chọn tính năng và giảm thiểu tổn thất L2 bằng cách sử dụng giá trị trung bình của mỗi nút đầu cuối
o “Friedman_mse”, sử dụng sai số bình phương trung bình với điểm cải thiện của Friedman cho tiềm năng phân chia
o “absolute_error” cho sai số tuyệt đối trung bình, giảm thiểu tổn thất L1 bằng cách sử dụng giá trị trung bình của mỗi nút đầu cuối
o “poisson” sử dụng giảm độ lệch Poisson để tìm phân tách
splitter: {“best”, “ramdom”} default = “best”: Chiến lược được sử dụng để
chọn phần tách từ mỗi nút
o “best” để chọn phần tách tốt nhất
o “ramdom” để chọn phần tách ngẫu nhiên tốt nhất
max_depth: int, default = None: Chiều sâu tối đa của cây Nếu là None, các nút
sẽ được mở rộng cho đến khi tất cả các lá được thêm hoặc cho đến khi tất cả
các lá chứa ít hơn số lượng min_samples_split Đối với mô hình bị quá khớp thì
chúng ta cần gia tăng max_depth (độ sâu)
Trang 11 min_samples_split: Số lượng mẫu tối thiểu cần thiết để tách một nút nội bộ
Được sử dụng để tránh kích thước của node lá quá nhỏ nhằm giảm thiểu hiện tượng quá khớp
o Nếu là số nguyên, hãy coi min_samples_split là số nhỏ nhất.
o Nếu là số thực, min_samples_split là một phân số và ceil
(min_samples_split * n_samples) là số lượng mẫu tối thiểu mỗi lần tách.
min_weight_fraction_leaf: float, default = 0.0: Phần có trọng số tối thiểu của
tổng trọng số (của tất cả các mẫu đầu vào) cần có ở một nút lá Các mẫu có
trọng lượng bằng nhau khi sample_weight không được cung cấp
max_features: int, float hoặc {“auto”, “sqrt”, “log2”}, default = None: Số
lượng các tính năng cần xem xét khi tìm sự phân chia tốt nhất ở mỗi lượt phân chia
o Nếu là int, hãy xem xét số max_features tính năng tại mỗi lần phân chia.
o Nếu là float, max_features là một phân số và một số nguyên tính năng (max_features * n_features) được xem xét mỗi lần tách.
o Nếu là “auto”, max_features = n_features.
o Nếu là “sqrt”, max_features = sqrt(n_features).
o Nếu là “log2”, max_features = log2(n_features).
o Nếu là None, max_features = n_features.
random_state: int, RamdomState instance hoặc None, default = None: Kiểm
soát tính ngẫu nhiên của công cụ ước tính Các tính năng luôn được hoán vị
ngẫu nhiên tại mỗi lần tách, ngay cả khi splitter được đặt là “best” Khi
max_features < n_features, thuật toán sẽ chọn max_features ngẫu nhiên tại mỗi
lần tách trước khi tìm ra phần tách tốt nhất trong số chúng Nhưng sự phân chia tốt nhất được tìm thấy có thể khác nhau mỗi các lần chạy khác nhau, ngay cả
khi max_features = n_features Đó là trường hợp, nếu sự cải tiến của tiêu chí
giống hệt nhau đối với một số phần tách và một phần tách phải được chọn ngẫu
nhiên Để có được một hành vi xác định trong khi điều chỉnh, random_state
phải được cố định thành một số nguyên
max_leaf_nodes: int, default = None: Số lượng các node lá tối đa của cây
quyết định, được dùng khi muốn kiểm soát hiện tượng quá khớp Các nút tốt nhất được định nghĩa là giảm tạp chất tương đối Nếu None thì không giới hạn
số nút lá
min_impurity_decrease: float, default = 0.0: Một nút sẽ bị tách nếu phân tách
làm giảm tạp chất lớn hơn hoặc bằng giá trị này, được sử dụng để tránh hiện tượng quá khớp Phương trình giảm tạp chất có dạng:
N_t / N * (impurity – N_t_R / N_t * right_impurity - N_t_L / N_t * left_imputiry) Trong đó
Trang 12o N là tổng số mẫu, N_t là số mẫu tại nút hiện tại, N_t_L là số mẫu ở nút con bên trái và N_t_R là số mẫu ở nút con bên phải
o N, N_t, N_t_R và N_t_L đều tham chiếu đến tổng có trọng số, nếu sample_weight được thông qua
ccp_alpha: non-negative float, default = 0.0: Tham số độ phức tạp được dùng
cho Minimal Cost-Complexity Pruning Cây con có chi phí độ phức tạp lớn
nhất nhỏ hơn ccp_alpha sẽ được chọn Nếu là default, không có thao tác cắt tỉa
nào được thực hiện
Những tham số có thể được sử dụng để tuning bao gồm: Criterion, splitter, max_depth, min_samples_split, min_samples_leaf, max_features,
max_leaf_nodes, min_impurity_decrease, min_impurity_split
VI Các thuật toán phổ biến
a) ID3
Thuật toán ID3 (Iterative Dichotomiser 3) là giải thuật lâu đời được tạo ra bởi Ross Quinlan nhằm xây dựng cây quyết định phù hợp từ một bộ dữ liệu, áp dụng cho bài toán Phân loại (Classification) mà tất các các thuộc tính để ở dạng category Thuật toán ID3 dùng Entropу function ᴠà Information gain để kiểm tra kết quả, có thể tóm tắt các bước làm của ID3 như sau:
Lấy tất cả các thuộc tính chưa được sử dụng và đếm entropy liên quan đến mẫu thử của các thuộc tính đó
Chọn thuộc tính có entropy lớn nhất
Nối node với thuộc tính đó
b) C4.5
C4.5 là thuật toán cải tiến hơn so với ID3, phân lớp dữ liệu dựa trên cây quyết định, hiệu quả và phổ biến trong những ứng dụng khai phá cơ sở dữ liệu có kích thước nhỏ C4.5 xây dựng cây quyết định từ tập training data tương tự như ID3 và có một số ưu điểm như:
Sử dụng Gain Ratio (thay vì dùng Information Gain) để chọn thuộc tính phân chia trong quá trình xây dựng cây
Xử lý tốt cả hai dạng thuộc tính: rời rạc, liên tục Xử lý được những dữ liệu không đầy đủ (thiếu một số giá trị tại một số thuộc tính), các thuộc tính - giá trị
bị thiếu thay bằng dấu hỏi (?) và không được xem xét khi tính toán Gain Radio
Cắt tỉa sau khi hoàn thành việc xây dựng cây: Loại bỏ những nhánh cây không quan trọng
c) Kết luận
Việc chọn thuật toán nào để có hiệu quả phân lớp cao tùy thuộc vào rất nhiều yếu tố, trong đó cấu trúc dữ liệu ảnh hưởng rất lớn đến kết quả của các thuật toán Chẳng hạn như thuật toán ID3 và CART (Classification And Regression