Mục tiêu và phạm vi nghiên cứu Mục tiêu - Hiểu được mô hình Decision Tree - Hiểu được các thuật toán trong mô hình Decision Tree - Tài liệu nghiên cứu lập trình machine learning với n
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DUY TÂN
Đồ án môn học
KHAI MỎ DỮ LIỆU
ĐỀ TÀI: PHÂN LỚP DỮ LIỆU
Học Viên: Nguyễn Nhật Hoàng
Nguyễn Thị Hồng Phước
Nguyễn Văn Thuận Lớp: K24MCS1
Đà Nẵng, tháng 12 năm 2022
Trang 2NGUYỄN NHẬT HOÀNG – K24 MCS.1
MỤC LỤC
MỞ ĐẦU 2
1 Giới thiệu đề tài 2
2 Mục tiêu và phạm vi nghiên cứu 2
3 Phương pháp nghiên cứu 3
CHƯƠNG 1: TỔNG QUAN VỀ HỌC MÁY 4
1.1 Giới thiệu Học máy 4
1.2 Phân loại Học máy 4
1.3 Ứng dụng của Học máy 4
CHƯƠNG 2: TỔNG QUAN VỀ MÔ HÌNH DECISION TREE 5
2.1 Giới thiệu về Decision Tree 5
2.2 Giới thiệu về thuật toán ID3 (Iterative Dichotomiser 3) 7
2.3 Mô tả thuật toán ID3 8
2.4 Ưu điểm của mô hình Decision Tree 14
2.5 Điều kiện dừng đối với các thuật toán decision tree 15
CHƯƠNG 3: 16
3.2 Triển khai thuật toán ID3 với python 16
3.3 … 18
KẾT LUẬN ĐỀ TÀI 19
TÀI LIỆU THAM KHẢO 20
1
Trang 3NGUYỄN NHẬT HOÀNG – K24 MCS.1
MỞ ĐẦU
1 Giới thiệu đề tài
Trong quá trình hoạt động, con người tạo ra nhiều dữ liệu nghiệp vụ Các tập dữliệu được tích lũy có kích thước ngày càng lớn, và có thể chứa nhiều thông tin ẩn dạngnhững quy luật chưa được khám phá Chính vì vậy, một nhu cầu đặt ra là cần tìm cáchtrích rút từ tập dữ liệu đó các luật về phân lớp dữ liệu hay dự đoán những xu hướng dữliệu tương lai Những quy tắc nghiệp vụ thông minh được tạo ra sẽ phục vụ đắc lực chocác hoạt động thực tiễn, cũng như phục vụ đắc lực cho quá trình nghiên cứu khoa học.Công nghệ phân lớp và dự đoán dữ liệu ra đời để đáp ứng mong muốn đó
Công nghệ phân lớp dữ liệu đã, đang và sẽ phát triển mạnh mẽ trước những khaokhát tri thức của con người Trong những năm qua, phân lớp dữ liệu đã thu hút sự quantâm các nhà nghiên cứu trong nhiều lĩnh vực khác nhau như học máy (machine learning),
hệ chuyên gia (expert system), thống kê (statistics) Công nghệ này cũng ứng dụng trongnhiều lĩnh vực thực tế như: thương mại, nhà băng, maketing, nghiên cứu thị trường, bảohiểm, y tế, giáo dục
Hiện nay các vấn đề liên quan đến máy học càng ngày càng phát triển, thời đại dữliệu và công nghệ xử lý dữ liệu lớn mà các ngôn ngữ lập trình khác quá khó tiếp cận với
các chuyên gia toán học và giáo sư Vì vậy đề tài “Tìm hiểu và Triển khai thuật toán
Iterative Dichotomiser 3 trong mô hình Decision Tree” sẽ giúp hiểu hơn về mô hình
cây quyết định
2 Mục tiêu và phạm vi nghiên cứu
Mục tiêu
- Hiểu được mô hình Decision Tree
- Hiểu được các thuật toán trong mô hình Decision Tree
- Tài liệu nghiên cứu lập trình machine learning với ngôn ngữ python
Phạm vi nghiên cứu
- Nghiên cứu thuật toán ID3
- Nghiên cứu ngôn ngữ lập trình python
2
Trang 4NGUYỄN NHẬT HOÀNG – K24 MCS.1
- Nghiên cứu thư viện hỗ trợ python
3 Phương pháp nghiên cứu
- Nghiên cứu từ lý thuyết đến thực tiễn chứng minh
3
Trang 5NGUYỄN NHẬT HOÀNG – K24 MCS.1
CHƯƠNG 1: TỔNG QUAN VỀ HỌC MÁY
1.1 Giới thiệu Học máy
1.2 Phân loại Học máy
1.3 Ứng dụng của Học máy
4
Trang 6NGUYỄN NHẬT HOÀNG – K24 MCS.1
CHƯƠNG 2: TỔNG QUAN VỀ MÔ HÌNH DECISION TREE
2.1 Giới thiệu về Decision Tree
Trong những năm qua, nhiều mô hình phân lớp dữ liệu đã được các nhà khoa họctrong nhiều lĩnh vực khác nhau đề xuất như mạng notron, mô hình thông kê tuyến tính/bậc 2, cây quyết định, mô hình di truyền Trong số những mô hình đó, cây quyết định vớinhững ưu điểm của mình được đánh giá là một công cụ mạnh, phổ biến và đặc biệt thíchhợp cho data mining nói chung và phân lớp dữ liệu nói riêng [1] Có thể kể ra những ưuđiểm của cây quyết định như: xây dựng tương đối nhanh; đơn giản, dễ hiểu Hơn nữa cáccây có thể dễ dàng được chuyển đổi sang các câu lệnh SQL để có thể được sử dụng đểtruy nhập cơ sở dữ liệu một cách hiệu quả Cuối cùng, việc phân lớp dựa trên cây quyếtđịnh đạt được sự tương tự và đôi khi là chính xác hơn so với các phương pháp phân lớpkhác [2] Cây quyết định là biểu đồ phát triển có cấu trúc dạng cây, như mô tả trong hình
• Gốc: là node trên cùng của cây
• Node trong: biểu diễn một kiểm tra trên một thuộc tính đơn (hình chữ nhật)
• Nhánh: biểu diễn các kết quả của kiểm tra trên node trong (mũi tên)
5
Trang 7Science None
175
Hướng dẫn chăm sóc điều trị F0 tại…
Computer
Science None
11
Khai thác internet mang lại nhiều lợi íc…
1
Trang 8NGUYỄN NHẬT HOÀNG – K24 MCS.1
• Node lá: biểu diễn lớp hay sự phân phối lớp (hình tròn)
Để phân lớp mẫu dữ liệu chưa biết, giá trị các thuộc tính của mẫu được đưa vàokiểm tra trên cây quyết định Mỗi mẫu tương ứng có một đường đi từ gốc đến lá và lábiểu diễn dự đoán giá trị phân lớp mẫu đó
Cây quyết định là một trong những thuật toán học máy phổ biến và mạnh mẽ Đây
là một phương pháp học tập có giám sát không tham số có thể được sử dụng cho cảnhiệm vụ phân loại và hồi quy Mục tiêu là tạo ra một mô hình dự đoán giá trị của mộtbiến mục tiêu bằng cách tìm hiểu các quy tắc quyết định đơn giản được suy ra từ các tínhnăng dữ liệu Đối với mô hình phân loại, các giá trị mục tiêu có bản chất là rời rạc, trongkhi đối với mô hình hồi quy, các giá trị mục tiêu được biểu diễn bằng các giá trị liên tục.Không giống như loại thuật toán hộp đen như Neural Network, Cây quyết định tương đối
dễ hiểu hơn vì nó chia sẻ logic ra quyết định nội bộ
Mặc dù thực tế là nhiều nhà khoa học dữ liệu tin rằng đó là một phương pháp cũ và
họ có thể nghi ngờ về độ chính xác của nó do vấn đề trang bị quá mức, các mô hình dựatrên cây gần đây hơn, ví dụ: Rừng ngẫu nhiên (phương pháp đóng túi), tăng độ dốc(phương pháp tăng cường ) và XGBoost (phương pháp thúc đẩy) được xây dựng trên đỉnhcủa thuật toán cây quyết định
Xây dựng cây quyết định gồm 2 bước:
Bước 1: Phát triển cây quyết định: đi từ gốc, đến các nhánh, phát triển quy nạp theohình thức chia để trị
- Chọn thuộc tính “tốt” nhất bằng một độ đo đã định trước
- Phát triển cây bằng việc thêm các nhánh tương ứng với từng giá trị của thuộc tính
đã chọn
- Sắp xếp, phân chia tập dữ liệu đào tạo tới node con - Nếu các ví dụ được phânlớp rõ ràng thì dừng
- Ngược lại: lặp lại bước 1 tới bước 4 cho từng node con
Bước 2: Cắt tỉa cây: nhằm đơn giản hóa, khái quát hóa cây, tăng độ chính xác
Hàm số entropy
6
ComputerScience None
Computer Science [ Duy Tan University ]
ComputerScience None
41
Trang 9NGUYỄN NHẬT HOÀNG – K24 MCS.1
Cho một phân phối xác suất của một biến rời rạc x có thể nhận n giá trị khác nhau
x ,x ,…,x1 2 n Giả sử rằng xác suất để x nhận các giá trị này là pi=p(x=xi) với 0 ≤ 𝑖 ≤
Ký hiệu phân phối này là p=(p ,p ,…,p1 2 n) Entropy của phân phối này được định nghĩa là
(1)
Trong đó log là logarit tự nhiên (Một số tài liệu dùng logarit cơ số 2, nhưng giá trị của H( )p chỉ khác đi bằng cách nhân với một hằng số) và quy ước 0log(0)=0
2.2 Giới thiệu về thuật toán ID3 (Iterative Dichotomiser 3)
Trong ID3, tổng có trọng số của entropy tại các leaf-node sau khi xây dựng decision
tree được coi là hàm mất mát của decision tree đó Các trọng số ở đây tỉ lệ với số điểm dữliệu được phân vào mỗi node Công việc của ID3 là tìm các cách phân chia hợp lý (thứ tựchọn thuộc tính hợp lý) sao cho hàm mất mát cuối cùng đạt giá trị càng nhỏ càng tốt Như
đã đề cập, việc này đạt được bằng cách chọn ra thuộc tính sao cho nếu dùng thuộc tính đó
để phân chia, entropy tại mỗi bước giảm đi một lượng lớn nhất Bài toán xây dựng mộtdecision tree bằng ID3 có thể chia thành các bài toán nhỏ, trong mỗi bài toán, ta chỉ cầnchọn ra thuộc tính giúp cho việc phân chia đạt kết quả tốt nhất Mỗi bài toán nhỏ nàytương ứng với việc phân chia dữ liệu trong một non-leaf node Chúng ta sẽ xây dựngphương pháp tính toán dựa trên mỗi node này
Xét một bài toán với C class khác nhau Giả sử ta đang làm việc với một non-leaf node với các điểm dữ liệu tạo thành một tập SS với số phần tử là | =| | | | | | | | | | | | | | | Giả sử thêmrằng trong số N điểm dữ liệu này, N , c = 1, 2, …, C điểm thuộc vào class c Xác suất đểc
mỗi điểm dữ liệu rơi vào một class c được xấp xỉ bằng _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ (maximum likelihood estimation) Như vậy, entropy tại node này được tính bởi:
(2) Tiếp theo, giả sử thuộc tính được chọn là x Dựa trên x, các điểm dữ liệu trong Sđược phân ra thành K child node S1,S ,…,S2 K với số điểm trong mỗi child node lần lượt là
m ,m ,…,m1 2 K Ta định nghĩa
7
Trang 10𝑖∗ = , ) = ( ( ( ( , )
tức thuộc tính khiến cho information gain đạt giá trị lớn nhất
Xây dựng cây quyết định trong thuật toán ID3
Bước Bước 1: Tính toán entropy cho tập dữ liệu
Bước 2: Đối với mọi attribute/feature
Tính entropy cho tất cả giá trị khác Entropy(Attribute)
Lấy entropy thông tin trung bình cho thuộc tính hiện tại
Tính giá trị trung bình
Tính information Gain:
Gain = Entropy(S) – I (Attribute) Bước 3: Chọn thuộc tính information Gain cao nhất
Bước 4: Lặp lại cho đến khi có được cây mong muốn
2.3 Mô tả thuật toán ID3
Ví dụ ta có bảng dữ liệu sau đây
ID Outlook Temperature Humidity Wind PlayGolf
8
Trang 11NGUYỄN NHẬT HOÀNG – K24 MCS.1
6 Rainy Cool Normal Strong No
7 Overcast Cool Normal Strong Yes
10 Rainy Mild Normal Weak Yes
11 Sunny Mild Normal Strong Yes
12 Overcast Mild High Strong Yes
13 Overcast Hot Normal Weak Yes
14 Rainy Mild High Strong No
Xây dựng cây quyết định ID3 với bảng dữ liệu trên
Bước 1: Tính entropy cho tập dữ liệu
Ta thấy rằng bảng dữ liệu có 9 dữ liệu được dán nhãn yes và 5 dữ liệu được dán nhãn no
Bước 2: Tính entropy cho từng thuộc tính của dữ liệu
Chọn thuộc tính Outlook có các giá trị “Sunny”, “Overcast”, “Rainy” ta đitính entropy cho từng giá trị đó
9
Trang 12NGUYỄN NHẬT HOÀNG – K24 MCS.1
Ta thống kê theo thuộc tính Outlook được bảng sau:
Tính entropy trung bình của thuộc tính Outlook
Information Gain: Gain = Entropy(S) – I(Attribute)
Gain(Outlook) = 0.65 – 0.48 = 0.17
Tiếp tục tính entropy thuộc tính Temperature: “Hot”, “Mild”, “Cool”
10
Trang 13NGUYỄN NHẬT HOÀNG – K24 MCS.1
Tính entropy trung bình của thuộc tính Temperature
Information Gain: Gain = Entropy(S) – I(Attribute)
Gain(Temperature) = 0.65 – 0.631 = 0.019
Tương tự với thuộc tính Humidity (“Normal”, “High”) và Wind (“Weak”,
“Strong”) lần lượt là:
) = 0.547((((((((((((((( , Gain(Humidity) = 0.102
) = 0.618((((((((((((((( , Gain(Wind) = 0.032
Bước 3: Ta có thể thấy được Information Gain của thuộc tính Outlook là lớn nhấtnên suy ra thuộc tính Outlook sẽ là gốc của cây
Bước 4: Tiếp tục lặp lại với từng dữ liệu con của thuộc tính Outlook để ta có thểtạo được cây mong muốn
- Outlook = Overcast
11
Trang 15NGUYỄN NHẬT HOÀNG – K24 MCS.1
Từ đó ta được cây quyết định sau
- Outlook: Rainy
Ta đi tính:
I(Rainy|Temperature), I(Rainy |Humidity), I(Rainy |Windy)
Gain(Rainy |Temperature), Gain(Rainy |Humidity), Gain(Rainy |Windy)
Ta được cây quyết định hoàn thiện sau:
13
Trang 16NGUYỄN NHẬT HOÀNG – K24 MCS.1
2.4 Ưu điểm của mô hình Decision Tree
- Cây quyết định dễ hiểu Người ta có thể hiểu mô hình cây quyết định sau khi đượcgiải thích ngắn
- Việc chuẩn bị dữ liệu cho một cây quyết định là cơ bản hoặc không cần thiết Các
kỹ thuật khác thường đòi hỏi chuẩn hóa dữ liệu, cần tạo các biến phụ (dummy variable)
và loại bỏ các giá trị rỗng
- Cây quyết định có thể xử lý cả dữ liệu có giá trị bằng số và dữ liệu có giá trị là tênthể loại Các kỹ thuật khác thường chuyên để phân tích các bộ dữ liệu chỉ gồm một loạibiến Chẳng hạn, các luật quan hệ chỉ có thể dùng cho các biến tên, trong khi mạng nơ-ron chỉ có thể dùng cho các biến có giá trị bằng số
- Cây quyết định là một mô hình hộp trắng Nếu có thể quan sát một tình huống chotrước trong một mô hình, thì có thể dễ dàng giải thích điều kiện đó bằng logic Boolean
14
Trang 172.5 Điều kiện dừng đối với các thuật toán decision tree
Trong các thuật toán decision tree nói chung và ID3 nói riêng, nếu ta tiếp tục phânchia các node chưa tinh khiết, ta sẽ thu được một tree mà mọi điểm trong tập huấn luyệnđều được dự đoán đúng (giả sử rằng không có hai input giống nhau nào cho output khácnhau) Khi đó, tree có thể sẽ rất phức tạp (nhiều node) với nhiều leaf node chỉ có một vàiđiểm dữ liệu Như vậy, nhiều khả năng overfitting sẽ xảy ra
Để tránh overfitting, một trong số các phương pháp sau có thể được sử dụng Tạimột node, nếu một trong số các điều kiện sau đây xảy ra, ta không tiếp tục phân chia node
đó và coi nó là một leaf node:
Nếu node đó có entropy bằng 0, tức mọi điểm trong node đều thuộc một class
Nếu node đó có số phần tử nhỏ hơn một ngưỡng nào đó Trong trường hợp này, tachấp nhận có một số điểm bị phân lớp sai để tránh overfitting Class cho leaf node này cóthể được xác định dựa trên class chiếm đa số trong node
Nếu khoảng cách từ node đó đến root node đạt tới một giá trị nào đó Việc hạn chế
chiều sâu của tree này làm giảm độ phức tạp của tree và phần nào giúp tránh overfitting
Nếu tổng số leaf node vượt quá một ngưỡng nào đó
Nếu việc phân chia node đó không làm giảm entropy quá nhiều (information gainnhỏ hơn một ngưỡng nào đó)
Ngoài các phương pháp trên, một phương pháp phổ biến khác được sử dụng đểtránh overfitting là pruning, tạm dịch là cắt tỉa
15
Trang 18NGUYỄN NHẬT HOÀNG – K24 MCS.1
CHƯƠNG 3:
THỰC NGHIỆM THUẬT TOÁN ID3 TRONG MÔ HÌNH
DECISION TREE
3.2 Triển khai thuật toán ID3 với python
Dựa vào mô hình trên ta sử dụng thư viện sklearn trong python để triển khai kiểm
chứng Đầu tiên gọi đến thư viện cần:
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
Thư viện pandas sử dụng để đọc dữ liệu từ file
Thư viện sklearn được sử dụng để xây dựng cây quyết định
Trang 19NGUYỄN NHẬT HOÀNG – K24 MCS.1
Kết quả ta thu được:
Bây giờ ta đi xây dựng cây quyết định với giá trị X và y với phương thức fit Một
số tham số của hàm DecisionTreeClassifier
Với criterion= “entropy” có nghĩa là sử dụng entropy để đưa ra quyết định.Max_depth là chiều dài tối đa của cây quyết định có thể
Sau khi train dữ liệu ta tạo tập dữ liệu mới để kiểm tra hoặc sử dụng lại tập dữ liệu cũ đểkiểm tra tính chính xác với phương thức predict
[ , , , , ] =>[id = 1, outlook = rainy,
temperature = mild, humidity = high, wind = strongsX_new = [[1 1 2 0 0, , , , ]] print(dtree.predict(X_new))
Kết quả dự đoán là No vì như phân tích ở trên thì outlook = rainy thì sẽ phụ thuộc vàowind Nếu Wind = weak thì sẽ là yes, strongs thì sẽ no và kết quả cũng như vậy
from six import StringIO dot_data
Trang 20NGUYỄN NHẬT HOÀNG – K24 MCS.1
3.3 ….
18
Trang 21NGUYỄN NHẬT HOÀNG – K24 MCS.1
KẾT LUẬN ĐỀ TÀI
- Đã tìm hiểu được mô hình Decision Tree
- Hiểu được thuật toán ID3 và CART trong mô hình Decision Tree
- Sử dụng được các thư viện pandas, sklearn, matplotlib của ngôn ngữ lập trìnhpython
- Hiểu được điểm mạnh của ngôn ngữ python trong việc hỗ trợ lập trình các bài toánkhó
- Tài liệu nghiên cứu lập trình machine learning với ngôn ngữ python
19
Trang 22NGUYỄN NHẬT HOÀNG – K24 MCS.1
TÀI LIỆU THAM KHẢO
[1] John Shafer, Rakesh Agrawal, Manish Mehta SPRINT- A Scalable Paralllel Classifierfor Data mining In Predeeings of the 22nd International Conference on Very Large Database, India, 1996
[2] Mohammed J Zaki, Ching-Tien Ho, Rekesh Agrawal Parallel Classification for Data Mining on Shared-Memory Multiprocessors IVM Almaden Research Center, San Jose, CA 95120
[3]https://scikit-learn.org/
[4] https://machinelearningcoban.com/2018/01/14/id3/#-gioi-thieu
20