Tải bản đầy đủ (.docx) (18 trang)

Báo cáo đồ án decision tree regression

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (523.92 KB, 18 trang )

ĐẠ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

1


LỜ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ể hồ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 q 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

2


MỤC LỤC

I

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 tố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ự đốn dữ liệu trong tương lai dựa trên tập con.

3


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ự đố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ự đốn
thời tiết dự đố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ự đố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).

4


Hì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.

5


Hình 1.3: Ví dụ về kết nối nút và nhánh
Về 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 hồn
tồ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.


6



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:

Hì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ự đố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ư:

7


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ự đốn
xem khách hàng đó có thể thanh tố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:
o 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:
Trong đó 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:

8


Để 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 tốn entropy của Energy:

Sau đó ta có được kết quả của Information Gain là:

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:
Trong đó: i là số các lớp có trong tập data, là xác suất mà một
phần tử ngẫu nhiên thuộc lớp i.
9


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 tố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 tố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)
Node lá hồn tồ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.
10


“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.
o



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).



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.

11





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 ln được hố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 q 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 đó
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
o



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.

12


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 q 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 tốn Gain Radio.
• Cắt tỉa sau khi hồ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 tố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 Tree) cho hiệu
quả phân lớp rất cao đối với các trường dữ liệu số (quantitative
value) trong khi đó các thuật tốn như C4.5 có hiệu quả hơn
đối với các dữ liệu Qualititive value (ordinal, Binary, nominal).

VII

Thực nghiệm
a) Giới thiệu bộ dữ liệu

Nhóm em sử dụng bộ dataset Boston Housing cho ví dụ về
hồi quy. Đây là bộ dataset rất phổ biến chứa thông tin về những ngôi
13


nhà ở ngoại ô Boston. Bộ dữ liệu bao gồm 506 mẫu và 14 thuộc tính,
bao gồm:
















CRIM: Tỷ lệ tội phạm theo thị trấn.
ZN: Tỷ lệ đất được quy hoạch cho các lơ trên 25,000 feet
vng.
INDUS: Tỷ lệ diện tích kinh doanh phi bán lẻ trên mỗi thị trấn.
CHAS: Biến giả Charles River. (= 1 nếu đường giới hạn sông, =
0 nếu ngược lại)
NOX: Nồng độ oxit nitric.
RM: Số lượng phịng trung bình trên 1 ngơi nhà.
AGE: Tỷ lệ các căn hộ được xây dựng trước năm 1940.
DIS: Khoảng cách trọng số đến 5 trung tâm việc làm ở Boston.
RAD: Chỉ số khả năng tiếp cận các đường cao tốc hướng tâm
TAX: Thuế suất tài sản toàn giá trị trên 10,000$
PTRATIO: Tỷ lệ học sinh - giáo viên theo thị trấn.
B: 1,000(Bk – 0.63)2, trong đó Bk là tỷ lệ người Mỹ gốc Phi theo
thị trấn.
LSTAT: Tỷ lệ dân số có mức sống thấp.
MEDV: giá trị trung bình của những ngơi nhà (đơn vị 1,000$).

Link bộ dữ liệu:
/>.html

b) Phân tích dữ liệu
Vì mục đích đơn giản và dễ hình dung, chúng em chỉ sử dụng 2
thuộc tính là MEDV - giá trị trung bình của những ngơi nhà(đơn vị
1,000$), làm target và LSTAT - Tỷ lệ dân số có mức sống thấp, làm

feature.
Đầu tiên, nhóm em import những thư viện cần thiết, đồng thời
load bộ dataset từ sklearn.

Tiếp theo, vẽ biểu đồ phân phối biến mục tiêu MEDV:

14


Biểu đồ phân phối biến mục tiêu MEDV:

Có thể thấy rằng giá trị MEDV được phân phối bình thường và ít
có giá trị ngoại lệ.

c) Huấn luyện mơ hình
Bộ dữ liệu sẽ được chia với tỷ lệ 8:2. Trong đó 80% dataset
được dùng để huấn luyện và 20% được dùng để đánh giá.
Nhóm em sử dụng mơ hình DecisionTreeRegressor thuộc thư
viện scikit-learn để đào tạo cây hồi quy.Ở đây, chúng em sử dụng
các thơng số mặc định, ngồi max_depth = 3 để có thể vẽ và đọc
cây.

15


Tiếp theo, chúng em trực quan hóa mối quan hệ giữa MEDV và
LSTAT trên cây hồi quy.

Nhìn vào biểu đồ, có thể thấy cây quyết định với độ sâu depth
= 3 nắm bắt được xu hướng chung trong dữ liệu.


c) Điều chỉnh tham số
Ở đây, nhóm em điều chỉnh tham số bằng GridSearchCV. Chi
tiết như sau:

16


Sau khi điều chỉnh tham số, kết quả của mô hình vẫn khơng có
sự khác biệt q lớn. Mơ hình có kết quả tốt nhất có tham số là
max_depth = 3, min_samples_leaf = 10.

Trực quan hóa mơ hình như sau:

Source code của nhóm:
/>V3x9fPD-zfhV9Mgv?usp=sharing

17


VIII

Tài liệu tham khảo

1) />2) />3) />eRegressor.html
4) />5) />6) />7) />8) />
18




×