Tải bản đầy đủ (.pdf) (43 trang)

Tìm hiểu và tối ưu hóa các tham số trong thuật toán ramdom forest

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 (1.49 MB, 43 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC
TÌM HIỂU VÀ TỐI ƯU CÁC THAM SỐ TRONG
THUẬT TOÁN RANDOM FOREST

Giáo viên hướng dẫn: Th.S PHẠM THỊ KIM NGOAN
Sinh viên thực hiện:

NGUYỄN THÀNH ĐÔ

Lớp:

53CNTT

MSSV:

53130019

Tháng 6/2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NHA TRANG
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC


TÌM HIỂU VÀ TỐI ƯU CÁC THAM SỐ TRONG
THUẬT TOÁN RANDOM FOREST

Giáo viên hướng dẫn: Th.S PHẠM THỊ KIM NGOAN
Sinh viên thực hiện:

NGUYỄN THÀNH ĐÔ

Lớp:

53CNTT

MSSV:

53130019

Tháng 6/2015


NHẬN XÉT KẾT QUẢ ĐỒ ÁN
Họ và tên sinh viên:..........................................................................................................
Mã số sinh viên: …………………… Lớp: ……………… Hệ:……………………….
Khoa Công nghệ Thông tin, Trường Đại học Nha Trang.
Nội dung đồ án:
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................

..........................................................................................................................................
..........................................................................................................................................
Đánh giá kết quả đồ án:
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
………………… ngày …. tháng … năm ……
Giáo viên hướng dẫn


LỜI MỞ ĐẦU
Trong những năm gần đây, các lĩnh vực nghiên cứu của ngành Công nghệ thông tin
phát triển hết sức mạnh mẽ, nhiều thuật toán ra đời với nhiều hướng nghiên cứu khác
nhau. Trong đó học máy là một hướng nghiên cứu đã xuất hiện từ lâu và đạt rất nhiều
thành tựu. Nhiều thuật toán học máy được ứng dụng trong thực tế mang lại hiệu quả
trong các lĩnh vực như: nhận dạng chữ viết tay, nhận dạng mặt người, máy tìm kiếm,…
Các thuật toán được dùng phổ biến như: Cây quyết định, Mạng Nơ-ron nhân tạo, KMean, Random Forest. Mỗi thuật toán đều có một số tham số và các tham số này ảnh
hưởng rất lớn đến kết quả của thuật toán, vì vậy việc tối ưu các tham số là rất quan trọng
và cần thiết.
Trong đồ án này tôi tìm hiểu và tối ưu một số tham số của thuật toán Random Forest,
thực nghiệm trên ứng dụng nhận dạng chữ viết tay rời rạc và cài đặt ứng dụng ước lượng
tuổi từ gương mặt bằng thuật toán Random Forest.
Em cũng xin chân thành cảm ơn cô Phạm Thị Kim Ngoan đã tận tình hướng dẫn em
hoàn thành đồ án này.



MỤC LỤC
CHƯƠNG 1. TỔNG QUAN ........................................................................................ 8
1.1 Giới thiệu học máy .............................................................................................. 8
1.2 Giới thiệu thuật toán Random Forest ............................................................... 8
1.3 Vấn đề tối ưu tham số trong Random Forest ................................................... 9
1.4 Ứng dụng Random Forest uớc lượng tuổi từ gương mặt ................................ 9
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT .......................................................................... 10
2.1 Thuật toán Random Forest .............................................................................. 10
2.1.1 Định nghĩa .................................................................................................... 10
2.1.2 Mô hình thuật toán........................................................................................ 10
2.1.3 Thuật toán ..................................................................................................... 11
2.1.4 Ví dụ minh họa .............................................................................................. 11
2.1.5 Đặc điểm của Random Forest ...................................................................... 12
2.2 Phương pháp lấy mẫu Bootstrap ....................................................................... 13
2.2.1 Giới thiệu Bootstrap ..................................................................................... 13
2.2.2 Thuật toán Bootstrap .................................................................................... 14
2.2.3 Đặc điểm của Bootstrap ............................................................................... 14
2.2.4 Bootstrap trong Random Forest .................................................................. 15
2.3 Cây phân lớp ...................................................................................................... 15
2.3.1 Giới thiệu ...................................................................................................... 15
2.3.2 Một số thuật toán xây dựng cây quyết định .................................................. 17
2.3.3 Đặc điểm của Cây quyết định ....................................................................... 17
2.4 Một số số đo chọn lựa thuộc tính ..................................................................... 18
2.4.1 Độ lợi thông tin( Information Gain ) ............................................................ 18
2.4.2 Tỉ lệ độ lợi( Gain Ratio ) .............................................................................. 20
2.4.3 Gini Index( Gini ) .......................................................................................... 21
2.4.4 Nhận xét ........................................................................................................ 22
CHƯƠNG 3. TỐI ƯU THAM SỐ TRONG RANDOM FOREST ........................ 24
3.1 Tối ưu số cây ...................................................................................................... 24
3.2 Lựa chọn số đo lựa chọn thuộc tính ................................................................ 26

3.3 Lựa chọn số thuộc tính phân chia .................................................................... 27
3.4. Chương trình minh họa thuật toán Random Forest ..................................... 29


CHƯƠNG 4. ỨNG DỤNG RANDOM FOREST ƯỚC LƯỢNG TUỔI TỪ
GƯƠNG MẶT ............................................................................................................ 31
4.1 Mô tả ứng dụng ................................................................................................. 31
4.1.1 Chức năng ..................................................................................................... 31
4.1.2 Môi trường cài đặt ........................................................................................ 31
4.1.3 Hoạt động ..................................................................................................... 32
4.2 Cơ sở ước lượng tuổi từ gương mặt................................................................. 32
4.2.1 Các đặc trưng trên ảnh gương mặt .............................................................. 33
4.2.2 Cơ sở tri thức ............................................................................................... 34
4.3 Thuật toán dò gương mặt trong ảnh ............................................................... 34
4.3.1 Đặc trưng Haar like ...................................................................................... 35
4.3.2 Thuật toán AdaBoost .................................................................................... 36
4.4 Ước lượng tuổi dùng Random Forest .............................................................. 38
4.5 Đánh giá ứng dụng ............................................................................................ 38
4.5.1 So sánh với ứng dụng tương tự ..................................................................... 38
4.5.2. Độ chính xác ứng dụng khi thay đổi các tham số ........................................ 39
4.5.3 Nhận xét ........................................................................................................ 40
4.6 Khó khăn ước lượng tuổi từ gương mặt ......................................................... 41
4.6.1. Tập huấn luyện............................................................................................. 41
4.6.2 Đặc trưng gương mặt.................................................................................... 41
4.6.3 Chất lượng ảnh ............................................................................................. 41
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ......................................... 42
5.1 Kết luận .............................................................................................................. 42
5.2 Hướng phát triển ............................................................................................... 42



DANH MỤC BẢNG, SƠ ĐỒ, HÌNH
Bảng 2.1: Tập dữ liệu minh họa thuật toán Random Forest ......................................... 11
Bảng 2.2: Bảng dữ liệu cho cây quyết định.................................................................. 16
Bảng 2.3: Bảng dữ liệu ví dụ Information Gain ........................................................... 19
Bảng 4.1: Bảng so sánh kết quả ứng dụng và How-old.net ......................................... 38
Bảng 4.2: Bảng kết quả ứng dụng với số cây khác nhau.............................................. 39
Bảng 4.3: Bảng kết quả ứng dụng với số thuộc tính lựa chọn khác nhau .................... 40
Bảng 4.4: Bảng tần xuất độ tuổi trong FG-NET .......................................................... 40
Biểu đồ 3.1: Kết quả thực nghiệm số cây ..................................................................... 25
Biểu đồ 3.2: Biểu đồ kết quả thực nghiệm số đo lựa chọn thuộc tính.......................... 27
Biểu đồ 3.3: Biểu đồ kết quả thực nghiệm lựa chọn thuộc tính phân chia ................... 28
Sơ đồ 4.1: Sơ đồ hoạt động ứng dụng ước lượng tuổi từ gương mặt ........................... 32
Hình 2.1: Mô hình thuật toán Random Forest .............................................................. 10
Hình 2.2: Hình 2 cây quyết định trong rừng ................................................................ 12
Hình 2.3: Hình ảnh Bootstrap trong Random Forest .................................................... 15
Hình 2.4: Hình ảnh Cây quyết định .............................................................................. 16
Hình 3.1: Hình ảnh các ký tự trong tập MNISTrain.................................................... 25
Hình 3.2: Hình ảnh chương trình minh họa Random Forest ........................................ 29
Hình 4.1: Hình ảnh minh họa ứng dụng ước lượng tuổi từ gương mặt ........................ 31
Hình 4.2: Hình ảnh các đặc trưng gương mặt .............................................................. 33
Hình 4.3: Hình ảnh minh họa dò tìm gương mặt trong ảnh ......................................... 34
Hình 4.4: Hình ảnh cửa sổ 10x10 ................................................................................. 36
Hình 4.5: Hình ảnh kết quả ứng dụng sai khác với cùng một người ............................ 41


CHƯƠNG 1
TỔNG QUAN
1.1 Giới thiệu học máy
Học máy là ngành khoa học về máy tính nhằm nghiên cứu, phát triển các thuật toán,
thuật giải với mục đích đưa tri thức vào máy tính, cụ thể hơn là những thuật giải dựa

trên các tập dữ liệu và rút trích các quy luật từ chúng, làm cho máy tính có thể giải được
các bài toán mà các thuật toán bình thường khó có thể thực hiện như tìm kiếm, nhận
dạng, dự đoán. Các thuật toán học máy được phân loại theo kết quả của thuật toán. Các
loại thuật toán thường sử dụng như: Học có giám sát, học không giám sát, học nửa
giám sát, học tăng cường. Học máy ngày càng phát triển và có nhiều thuật toán ra đời
như: Mạng nơ-ron nhân tạo, Cây quyết định, K-Mean, Máy vector hỗ trợ.
Học máy có hiện nay được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau như:
máy truy tìm dữ liệu, chuẩn đoán y khoa, phát hiện thẻ tín dụng giả, phân tích thị trường
chứng khoán, phân loại các chuỗi DNA, nhận dạng tiếng nói và chữ viết, dịch tự động,
chơi trò chơi và cử động rô-bốt.
Thuật toán Random Forest là một trong các thuật toán học máy ra đời muộn hơn các
thuật toán học máy khác, chính vì vậy thuật toán Random Forest kế thừa được ưu điểm
các thuật toán khác đồng thời khắc phục được hạn chế về mặt số lượng dữ liệu cũng
như độ phức tạp của dữ liệu.
1.2 Giới thiệu thuật toán Random Forest
Thuật ngữ Random Forest được xuất hiện lần đầu tiên vào năm 1995, sau đó kết hợp
với kỹ thuật lựa chọn các thuộc tính ngẫu nhiên của Leo Breiman năm 1996. Năm 2001
Leo Breiman xây dựng thuật toán Random Forest có bổ sung thêm một lớp ngẫu nhiên
để phân lớp. Ngoài việc mỗi cây sử dụng các mẫu dữ liệu khác nhau, rừng ngẫu nhiên
được thay đổi để xây dựng các cây phân loại và hồi quy khác nhau. Các gói thư viện cài
đặt thuật toán Random Forest đầu tiên được xây dựng bằng ngôn ngữ Fortran bởi Leo
Breiman và Cutler.
Random Forest được mô hình hóa như tập các cây phân lớp. Tuy nhiên Random
Forest sử dụng các mẫu ngẫu nhiên cho các cây cũng như việc chọn lựa thuộc tính ngẫu
nhiên khi phân chia cây. Thuật toán Random Forest tỏ ra chính xác và nhanh hơn khi
huấn luyện trên không gian dữ liệu lớn với nhiều thuộc tính, việc sử dụng kết quả dự
đoán của cả tất cả các cây trong rừng khi phân lớp hoặc hồi quy giúp cho kết quả thuật
toán chính xác hơn.
8



Thuật toán Random Forest được ứng dụng trong các tác vụ phân lớp hoặc hồi quy.
Về phân lớp như nhận dạng chữ viết tay rời rạc, về ứng dụng hồi quy như ước lượng
tuổi từ hình ảnh gương mặt. Các ứng dụng sẽ được trình bày chi tiết trong chương 3 và
chương 4 của đồ án. Để cải thiện hiệu quả thuật toán trên ứng dụng, ngoài việc chuẩn
bị tập mẫu phong phú thì cũng cần lựa chọn một số tham số phù hợp để nâng cao độ
chính xác của ứng dụng.
1.3 Vấn đề tối ưu tham số trong Random Forest
Đối với các thuật toán nói chung và Random Forest nói riêng, việc tối ưu các tham
số là quan trọng và cần thiết. Khi thay đổi giá trị hoặc cách tính giá trị một số tham số
trong thuật toán có thể làm thay đổi độ chính xác, thời gian thực thi cũng như tài nguyên
hệ thống của thuật toán. Như thuật toán Mạng Nơ-ron nhân tạo, nếu thay đổi ngưỡng
lỗi cao sẽ làm tăng độ chính xác như cũng làm thời gian huấn luyện kéo dài.
Random Forest cũng có một số tham số khi huấn luyện, vậy nên việc lựa chọn tham
số sao cho thuật toán đạt hiệu quả cao và tốt nhất là rất cần thiết khi huấn luyện cũng
như đưa vào ứng dụng cụ thể.
1.4 Ứng dụng Random Forest uớc lượng tuổi từ gương mặt
Đối với con người, việc ước lượng tuổi từ hình ảnh gương mặt có thể dễ dàng nhưng
đối với máy tính thì đó là một tác vụ khó khăn. Các thuật toán học máy ra đời có thể
giúp máy tính thực hiện các tác vụ khó khăn như trên.
Thuật toán Random Forest với ứng dụng hồi quy có thể ước lượng tuổi từ hình ảnh
gương mặt dựa vào các đặc trưng trên hình ảnh gương mặt đó. Việc xác định gương
mặt và tuổi từ hình ảnh gương mặt đó có thể ứng dụng trong các vấn đề an ninh như:
xác định có người lớn tuổi trong phòng mẫu giáo chỉ có gắn máy quay hoặc xác định
tuổi của một người trong ảnh.

1.

3


9


2.

CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
2.1 Thuật toán Random Forest
2.1.1 Định nghĩa
Random Forest là thuật toán học máy dựa trên kỹ thuật lắp ghép, kết hợp các cây
phân lớp. Random Forest xây dựng cây phân lớp bằng cách lựa chọn ngẫu nhiên một
nhóm nhỏ các thuộc tính tại mỗi nút của cây để phân chia cho mức tiếp theo của cây
phân lớp. Ngoài ra tập mẫu của mỗi cây cũng được lựa chọn ngẫu nhiên bằng phương
pháp Bootstrap từ tập mẫu ban đầu. Số lượng các cây phân lớp trong rừng là không hạn
chế và thuật toán sử dụng kết quả dự đoán của tất cả cây trong rừng làm kết quả cuối
cùng của thuật toán.
2.1.2 Mô hình thuật toán

Random Forest

Bootstrap 1



Bootstrap T

Decision Tree 1




Decision Tree T

Hình 2.1: Mô hình thuật toán Random Forest

10


Các kí hiệu:


Random Forest



Bootstrap i



Decision Tree i



Rừng ngẫu nhiên: Tập cây phân lớp
Phương pháp Bootstrap tạo tập huấn luyện cho cây thứ i
Cây phân lớp thứ i trong rừng
Nút trong cây phân lớp

2.1.3 Thuật toán
Thuật toán Random Forest cho phân lớp và hồi quy
A. Huấn luyện:



Cho tập huấn luyện S



Đối với mỗi cây trong rừng Ncây
-

Xây dựng Cây phân lớp Tk với tập Sk, Sk được lấy Bootstrap từ S

-

Tại mỗi nút của cây, chọn thuộc tính tốt nhất để phân chia cây từ tập thuộc
tính Fi được chọn ngẫu nhiên trong tập thuộc tính F

-

Mỗi cây được xây dựng đến độ sâu tối đa(không cắt nhánh)

B. Dự đoán: Thuật toán dự đoán nhãn lớp cho một đối tượng theo


Phân lớp: sử dụng kết quả số đông của các cây.



Hồi quy: lấy giá trị trung bình kết quả tất cả các cây

2.1.4 Ví dụ minh họa

Cho tập dữ liệu gồm 5 bộ, mỗi bộ có 4 thuộc tính và một giá trị nhãn lớp như bảng
2.1 bên dưới
Bảng 2.1: Tập dữ liệu minh họa thuật toán Random Forest
Thuộc tính

A1

A2

A3

A4

Nhãn lớp

1

1

0

1

1

1

2

0


0

0

0

1

3

1

0

0

0

1

4

0

1

1

1


0

5

1

1

0

1

1

STT

11


Với số cây là 2, số thuộc tính lựa chọn phân chia là 2, thuật toán thực hiện như sau:
Từ tập S, dùng Bootstrap lấy mẫu có hoàn lại xây dựng tập con Sk, với |Sk|= 4 được: S1
gồm các bộ 1, 2, 3, 4; S2 gồm các bộ 1,4,3,5(theo thứ tự trong bảng).
Xây dựng 2 cây T1, T2 với các tập dữ liệu tương ứng S1, S2
A3

A1
<1

>=1


<1
A4

>=1

Nhãn lớp =1

Nhãn lớp =1

<1

A2
<1

>=1
Nhãn lớp =1

Nhãn lớp =1

Nhãn lớp =0

T1

>=1
Nhãn lớp =0

T2
Hình 2.2: Hình 2 Cây phân lớp trong rừng


Dự đoán nhãn lớp cho bộ X(1,0,1,0):
-

Cây T1 cho X có giá trị nhãn lớp là 1

-

Cây T2 cho X có giá trị nhãn lớp là 1

Vậy X (1,0,1,0) có nhãn lớp là 1 do có 2 cây cho giá trị 1 và 0 cây cho giá trị 0 nên giá
trị 1 sẽ là kết quả cuối cùng vì số đông cây cho giá trị này.
Nếu có nhiều nhãn lớp có cùng số cây cho ra thì có thể chọn bất kì nhãn lớp nào làm
kết quả, thường chọn giá trị đầu tiên hoặc giá trị chiếm đa số trong tập mẫu D.
2.1.5 Đặc điểm của Random Forest
a. Ưu điểm:
-

Thuật toán giải quyết tốt các bài toán có nhiều dữ liệu nhiễu, thiếu giá trị. Do cách
chọn ngẫu nhiên thuộc tính nên các giá trị nhiễu, thiếu ảnh hưởng không lớn đến
kết quả.

-

Có những sự ước lượng nội tại như độ chính xác của mô hình phỏng đoán hoặc độ
mạnh và liên quan giữa các thuộc tính(Out of bag)

-

Dễ dàng thực hiện song song. Thay vì một máy thực hiện cả thuật toán, ta có thể sử
dụng nhiều máy để xây dựng các cây sau đó ghép lại thành rừng.

12


-

Các sai số được giảm thiểu do kết quả của Random Forest được tổng hợp thông qua
nhiều người học (Cây phân lớp).

-

Việc chọn ngẫu nhiên tại mỗi bước trong Random Forest sẽ làm giảm mối tương
quan giữa các người học trong việc tổng hợp các kết quả.

-

Lỗi chung của một rừng các cây phân lớp phụ thuộc vào lỗi riêng của từng cây trong
rừng cũng như mối tương quan giữa các cây.

b. Hạn chế:
-

Dữ liệu huấn luyện cần được đa dạng hóa và cân bằng về số nhãn lớp. Việc không
cân bằng nhãn lớp khiến kết quả dự đoán của thuật toán có thể lệch về số đông nhãn
lớp.

-

Thời gian huấn luyện của rừng có thể kéo dài tùy số cây và số thuộc tính phân chia.

c. Out of bag

Random Forest sử dụng Bootstrap để tạo tập mẫu cho các cây. Khi tập mẫu được
rút ra từ một tập huấn luyện của một cây với sự thay thế thì theo ước tính có khoảng
1/3 các phần tử không có nằm trong mẫu này. Điều này có nghĩa là chỉ có khoảng 2/3
các phần tử trong tập huấn luyện tham gia vào trong các tính toán, và 1/3 các phần tử
này được gọi là dữ liệu out-of-bag. Dữ liệu out-of-bag được sử dụng để ước lượng lỗi
tạo ra từ việc kết hợp các kết quả từ các cây tổng hợp trong Random Forest cũng như
dùng để ước tính độ quan trọng thuộc tính. Hơn nữa có thể sử dụng chính tập huấn
luyện để kiểm thử mô hình từ thuật toán trước khi đưa vào ứng dụng.
2.2 Phương pháp lấy mẫu Bootstrap
2.2.1 Giới thiệu Bootstrap
Bootstrap là tập hợp một số kỹ thuật phân tích dựa vào nguyên lý chọn mẫu có hoàn
lại để ước tính các thông số trong thống kê. Phương pháp Bootstrap do nhà thống kê
học Bradley Efron thuộc đại học Stanford (Mĩ) phát triển từ cuối thập niên 1979 nhưng
đến khi máy tính được sử dụng phổ biến thì phương pháp này mới trở thành phương
pháp phổ biến trong phân tích thống kê và được ứng dụng rộng rãi trong rất nhiều lĩnh
vực khoa học. Boostrap được xem là phương pháp chuẩn trong phân tích thống kê và
đã làm nên một cuộc cách mạng trong thống kê vì có thể giải quyết được nhiều vấn đề
mà trước đây tưởng như không giải được.

13


2.2.2 Thuật toán Bootstrap
Thuật toán Bootstrap lấy mẫu ngẫu nhiên có hoàn lại
A. Lấy mẫu



-


Cho tập dữ liệu D với N mẫu và K mẫu muốn lấy ra
Thực hiện K lần
- Lấy ngẫu nhiên một mẫu k từ tập D, ghi lại chỉ số k
- Đặt k lại tập D
Cuối cùng được K mẫu ngẫu nhiên

B. Sử dụng
Sử dụng tập mẫu ngẫu nhiên làm tập mẫu huấn luyện cho cây quyết định.

Ví dụ: Giả sử có 15,000 bệnh nhân nghi ngờ bị nhiễm độc, cần xác định mẫu máu của
các bệnh nhân này. Nếu lấy hết 15,000 đem đi xét nhiệm thì tốn kém và mất thời gian
nên chỉ lấy 1,000 bệnh nhân làm đại diện cho cả 15,000 bệnh nhân.
Cần lấy 1,000 mẫu từ 15,000 bệnh nhân bằng phương pháp Boostrap, ta tiến hành như
sau:
Lặp 1,000 lần thao tác:
-

Lấy ngẫu nhiên một bệnh nhân từ 15,000 bệnh nhân.

-

Ghi lại chỉ số bệnh nhân được chọn.

-

Đặt bệnh nhân vào lại 15,000 bệnh nhân.

Cuối cùng có được là chỉ số của 1,000 bệnh nhân được chọn.
Chú ý rằng trong cách chọn ngẫu nhiên có hoàn lại như trên, có thể có một số bệnh nhân
được chọn hơn 1 lần.

2.2.3 Đặc điểm của Bootstrap:
-

Phương pháp chọn mẫu ngẫu nhiên có hoàn lại nhằm mục đích tạo ra nhiều mẫu
ngẫu nhiên từ một mẫu, và qua cách chọn này, tập hợp những mẫu có thể đại diện
cho một quần thể.

-

Bootstrap có thể cung cấp thông tin chi tiết về phân bố của số trung bình, khoảng
tin cậy cũng như xác suất của số trung bình dựa trên một mẫu duy nhất.

14


2.2.4 Bootstrap trong Random Forest
Trong Random Forest thuật toán Bootstrap được sử dụng để tạo mẫu ngẫu nhiên cho
từng cây p. Vậy mỗi cây sẽ có một tập mẫu ngẫu nhiên riêng biệt. Ngoài ra còn sử dụng
để đánh giá nội tại của thuật toán(Out- of-bag).

Random Forest

Bootstrap 1

Bootstrap 2



Bootstrap k


Decision
Tree 1

Decision
Tree 2



Decision
Tree k

Hình 2.3: Hình ảnh Bootstrap trong Random Forest

2.3 Cây phân lớp
2.3.1 Giới thiệu
Cây phân lớp được dùng trong Random Forest là cây quyết định nhị phân có các thành
phần:
-

Các nút lá mang giá trị nhãn lớp

-

Các nút không phải nút lá là thuộc tính phân chia cây

-

Giá trị ghi trên nhánh là giá trị phân chia tại thuộc tính nút trên

Sử dụng cây quyết định: Mỗi đường đi từ nút gốc đến lá là một luật, áp dụng luật thỏa

mãn cho một đối tượng để cho giá trị nhãn lớp của đối tượng đó.
Ví dụ biểu diễn một cây quyết định cho việc xác định một người có mua máy tính không
dựa vào các thuộc tính: ‘tuổi’, ‘là học sinh’ và ‘thu nhập’ với bảng dữ liệu bên dưới.

15


Tuổi
<= 30

> 30

Làhọc sinh



Thu nhập

Không

Không mua

Cao

Thấp

Có mua

Có mua


Không mua

Hình 2.4: Hình ảnh Cây quyết định
Bảng 2.2: Bảng dữ liệu cho cây quyết định
Thuộc tính

Tuổi

Là học sinh

Thu nhập

Mua máy tính

1

23

Không

Cao

Có mua

2

35




Cao

Có mua

3

15



Thấp

Không

4

40

Không

Thấp

Không

STT

Từ cây quyết định trên ta có các luật như:
- Nếu “Tuổi <= 30” và “ là học sinh = có” thì “mua máy tính” = ‘ không ’.
- Nếu “Tuổi <= 30” và “ là học sinh = không” thì “mua máy tính” = ‘ có mua’
Để sử dụng cây quyết định trong phân lớp ta đặt đối tượng đó vào cây, áp dụng các luật

để xác định nhãn lớp.
Ví dụ: xét cây quyết định trên và một đối tượng X(Tuổi = ‘32’, là học sinh = ‘không’,
thu nhập=’ cao’)
Như vậy theo cây quyết định trên ta có một luật:
Nếu “ Tuổi > 30 ” và “ thu nhập = cao ” thì mua máy tính = ‘ có mua’.
Vậy X có giá trị nhãn lớp “ mua máy tính ” = ‘ có mua’ theo luật trên.

16


2.3.2 Một số thuật toán xây dựng cây quyết định
Một số thuật toán thường được dùng để xây dựng cây quyết định như:
ID3 (Iterative Dichotomiser 3): đề xuất bởi Quinlan năm 1980, sử dụng Information

-

Gain để lựa chọn thuộc tính phân chia tại mỗi nút.
C4.5: mở rộng từ ID3 được Ross Quinlan đề xuất năm 1993, dùng Gain Ratio trong

-

phân chia cây.
CART: (Classification and Regression Trees): Sử dụng chỉ số Gini để phân chia cây.

-

Các số đo Information Gain, Gain Ratio và Gini là các số đo lựa chọn thuộc tính.
Thuật toán ID3 xây dựng cây quyết định:
Thuật toán ID3
A. Huấn luyện:










Cho tập huấn luyện S, thuộc tính nhãn lớp C, tập thuộc tính F
Tạo nút gốc cho cây
Nếu tất cả các bộ trong S có 1 giá trị tại C là P thì trả về nút gốc với giá trị P
Nếu F rỗng thì trả về nút gốc với giá trị chiếm đa số trong C
Chọn thuộc tính X có thông tin mong đợi tốt nhất
Đặt nút gốc là X
F=F-X (loại X khỏi tập F)
Với mỗi giá trị v trong X
- Thêm nhánh mới với nút gốc là v
- Xác định tập con Dv với X = v
- Nếu Dv rỗng thì thêm nhánh mới dưới nút gốc với một nút có giá trị phổ biến
nhất trong C ngược lại thêm nút mới dưới nút gốc và gọi đệ quy ID3(Dv, C, F)
Trả về nút gốc

B. Dự đoán: trả về nhãn lớp của một đối tượng không có nhãn lớp
-

Thực hiện đệ quy tại mỗi nút của cây với giá trị thuộc tính trên nút, đến giá trị nút
lá là giá trị nhãn lớp

2.3.3 Đặc điểm của Cây quyết định

Cây quyết định có một số đặc điểm sau:
-

Việc chuẩn bị dữ liệu cho một cây quyết định là đơn giản. 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ụ và loại bỏ các giá trị rỗng.

17


-

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ị phân
loại.

-

Có thể thẩm định một mô hình cây quyết định bằng các kiểm tra thống kê.

-

Cây quyết định có thể xử lý tốt một lượng dữ liệu lớn trong thời gian ngắn. Có thể
dùng máy tính cá nhân để phân tích các lượng dữ liệu lớn trong một thời gian đủ
ngắn để đưa ra quyết định dựa trên phân tích của cây quyết định.

-

Nhược điểm của cây quyết định là khó giải quyết được những vấn đề có dữ liệu phụ
thuộc thời gian liên tục, dễ xảy ra lỗi khi có quá nhiều tính toán để xây dựng mô
hình cây quyết định.


Quá trình xây dựng cây quyết định sẽ chọn thuộc tính tốt nhất để phân nhánh cây, một
thuộc tính gọi là tốt tùy vào số đo được sử dụng khi phân chia tập mẫu tại mỗi nút, các
số đo lựa chọn thuộc tính khi phân nhánh được trình bày trong mục 2.4.
2.4 Một số số đo chọn lựa thuộc tính
Trong quá trình xây dựng cây phân lớp, cần chọn thuộc tính tốt nhất để phân chia
cây. Tại mỗi nút của cây cần chọn giá trị của thuộc tính tốt nhất để phân chia cây thành
các nhánh.
Một số độ đo được dùng trong các thuật toán xây dựng cây quyết định:
2.4.1 Độ lợi thông tin( Information Gain )
Là đại lượng dùng để chọn thuộc tính phân chia tập dữ liệu. Thuộc tính chọn là thuộc
tính có độ lợi thông tin lớn nhất.
Cho D là tập dữ liệu N mẫu, mỗi mẫu có tập thuộc tính F, thuộc tính nhãn lớp C.
Thông tin mong đợi của tập D:
Info(D) = − ∑𝑚
𝑖=1 𝑝𝑖 𝑙𝑜𝑔2 (𝑝𝑖 )
Với pi là xác xuất một bộ trong D thuộc lớp Ci , m là số giá trị khác nhau trong C.
Thông tin mong đợi của thuộc tính A (A thuộc F) là:
InfoA(D) = ∑𝑣𝑗=1

|𝐷𝑗 |
|𝐷|

× 𝐼𝑛𝑓𝑜(𝐷𝑗 )

Trong đó |D| là số bộ dữ liệu trong D, v là số giá trị khác nhau của thuộc tính A, Dj là
tập con của D sao cho các mẫu trong Dj có giá trị tại A là v.
Độ lợi thông tin của A:
Gain(A) = Info(D) - InfoA(D)
18



Nếu A có giá trị liên tục thì sắp xếp các giá trị trong A tăng dần, lấy giá trị trung bình
của 2 giá trị liên tiếp trong A để tính Gain(A).
Ví dụ: Giả sử có tập dữ liệu D như bảng 2.3, tại nút đang xét cần chọn ra thuộc tính để
phân nhánh theo độ đo Information Gain
Bảng 2.3: Bảng dữ liệu ví dụ Information Gain
Thuộc tính

1

2

Nhãn lớp

2.5
1.0
1.5

1.0
1.0
2.0

1
2
1

STT
1
2
3


2

2

3

3

Info(D) = - [ 𝑙𝑜𝑔2

+

1
3

1

𝑙𝑜𝑔2 ] = - [(-0.38998) + (-0.52832)] = 0.9183
3

Tính Info(Thuộc tính 1):
Sắp xếp bảng tăng theo các giá trị của thuộc tính 1
Thuộc tính
STT
1
2
3

1


2

Nhãn lớp

1.0
1.5
2.5

1.0
2.0
1.0

2
1
1

Tính Info(Thuộc tính 1 theo giá trị 1.25)
Giá trị 1.25 chia D thành 2 nửa là:
D1

D2

1.0

1.0

2

1.5


2.0

1

2.5

1.0

1

19


1

2

3

3

Info(Thuộc tính 1 theo giá trị 1.25) = [ 𝐼𝑛𝑓𝑜(𝐷1 ) +
1

2

3

3


= [ . 1. 𝑙𝑜𝑔2 1 +

𝐼𝑛𝑓𝑜(𝐷2 )]

(1. 𝑙𝑜𝑔2 1)] = 0

Tương tự, Info(Thuộc tính 1 theo giá trị 2):
2

1

1

1

1

= [ . [− (( 𝑙𝑜𝑔2 ) + ( 𝑙𝑜𝑔2 )) ] +
3
2
2
2
2

1

1

1


[− ( 𝑙𝑜𝑔2 ) ]] = 0.67
3
1
1

Gain( thuộc tính 1 với 1.25) = 0.9183 – 0 = 0.9183
Gain( thuộc tính 1 với 2.0) = 0.9183 – 0.67= 0.2483
Chọn giá trị 1.25 làm giá trị phân chia cho thuộc tính 1, vì có Gain lớn hơn Gain của
giá trị 2. Cũng có thể nhận thấy giá trị 1.25 chia tập D thành 2 nửa mà 2 nửa này ổn
định hơn.
Tính Info(Thuộc tính 2):
Tương tự ta cũng sắp xếp tăng theo các giá trị của thuộc tính 2 rồi tính Gain theo các
giá trị trung bình hai giá trị liên tiếp
Info(Thuộc tính 2 theo giá trị 1.5)
2

1

1

1

1

3

2

2


2

2

= [ . [− (( 𝑙𝑜𝑔2 ) + ( 𝑙𝑜𝑔2 )) ] +

1

1

1

[− ( 𝑙𝑜𝑔2 ) ]] = 0.67
3
1
1

Lúc này chỉ tính giá trị 1.5 vì thuộc tính 2 chỉ có 2 giá trị phân biệt là 1.0 và 2.0
Gain(thuộc tính 2 với 1.5) = 0.9183 – 0.67= 0.2483
Nhận thấy Gain(Thuộc tính 1) lớn hơn Gain(Thuộc tính 2), nên chọn thuộc tính 1 làm
thuộc tính phân chia với giá trị phân chia là 1.25.
2.4.2 Tỉ lệ độ lợi( Gain Ratio )
Mở rộng từ Infomation Gain, tuy nhiên có đưa vào thông tin chia tách

SplitInfoA(D) = − ∑𝑣𝑗=1

|𝐷𝑗 |
|𝐷|


× 𝑙𝑜𝑔2 (

|𝐷𝑗 |
|𝐷|

)

Gain Ratio của thuộc tính A được tính :
GainRatio(A) =

𝐺𝑎𝑖𝑛(𝐴)
𝑆𝑝𝑙𝑖𝑡𝐼𝑛𝑓𝑜(𝐴)

Tương tự như Info Gain, nếu thuộc tính A liên tục thì sắp xếp tăng dần, chọn giá trị
trung bình làm giá trị phân chia rồi chọn giá trị tốt nhất.
20


Giống như Information Gain ta cần chọn thuộc tính có Gain Ratio lớn nhất để phân
nhánh cây.
Ví dụ: chọn giá trị thuộc tính có GainRatio lớn nhất để phân nhánh với dữ liệu tập D
như bảng 2.3
Tính GainRatio(Thuộc tính 1):
Do đã tính Gain theo các thuộc tính với giá trị trong ví dụ ở mục 4.1 nên ta chỉ tính
SplitInfo.
1
3

SplitInfo(Thuộc tính 1 với giá trị 1.25) = − [ 𝑙𝑜𝑔2
2

3

SplitInfo(Thuộc tính 1 với giá trị 2.0) = − [ 𝑙𝑜𝑔2

2
3

1
3

2

2

+ 3 𝑙𝑜𝑔2 3] = 0.9813
1

1

+ 3 𝑙𝑜𝑔2 3] = 0.9813

GainRatio( thuộc tính 1 với 1.25) = 0.9183/0.9813 = 0.935799
GainRatio( thuộc tính 1 với 2.0) = 0.2483/0.9813 = 0.253032
Chọn 1.25 làm giá trị phân chia tốt nhất đối với thuộc tính 1
Tính GainRatio(Thuộc tính 2):
Do đã tính Gain theo các thuộc tính với giá trị trong ví dụ ở mục 4.1 nên ta chỉ tính
SplitInfo.
2
3


SplitInfo(Thuộc tính 1 với giá trị 1.5) = − [ 𝑙𝑜𝑔2

2
3

1

1

+ 3 𝑙𝑜𝑔2 3] = 0.9813

GainRatio( thuộc tính 2 với 1.5) = 0.2483/0.9813 = 0.253032
Vậy chọn thuộc tính 1 với giá trị 1.25 làm điểm phân nhánh.
2.4.3 Gini Index( Gini )
Dùng đo độ không thuần khiết của một phép phân hoạch, khác với Gain và Gain
Ratio, khi chọn thuộc tính tốt nhất, ta sẽ chọn thuộc tính với Gini Index bé nhất.
Cho D là tập dữ liệu N mẫu, mỗi mẫu có tập thuộc tính F, thuộc tính nhãn lớp C.
Chỉ số Gini của tập D được tính bởi:
2
Gini(D) = 1 − ∑𝑚
𝑖=1 𝑝𝑖

Với pi là xác xuất một bộ trong D thuộc lớp Ci , m là số giá trị khác nhau trong C.
Chỉ số Gini của thuộc tính A(A thuộc F) :
Gini(A) =

|𝐷1 |
|𝐷|

𝐺𝑖𝑛𝑖 (𝐷1 ) +


|𝐷2 |
|𝐷|

𝐺𝑖𝑛𝑖 (𝐷2 )

21


Trong đó D1, D2 là từ tập D chia ra theo thuộc tính A, D1 là tập các bộ có giá trị tại A
bé hơn v, D2 là tập các bộ trong D có giá trị tại A lớn hơn hoặc bằng v, trong đó v là
một giá trị tại A. Cần tìm v sao cho khi chia tập D thành 2 nửa để ổn định nhất . Để tìm
v ta làm tương tự như Gain và Gain Ratio khi chọn điểm chia trên thuộc tính A là sắp
xếp và lấy giá trị trung bình 2 giá trị liên tiếp.
Ví dụ: dữ liệu tương tự như ví dụ mục 4.1, tìm thuộc tính với giá trị phân chia tốt nhất
với chỉ số Gini
Tính Gini(Thuộc tính 1):
1

2

3

3

Gini(Thuộc tính 1 với 1.25) = 𝐺𝑖𝑛𝑖 (𝐷1 ) +
1

2


3

3

= [1 − 12 ] +

𝐺𝑖𝑛𝑖 (𝐷2 )

[1 − 12 ] = 0
2

1

3

3

Gini(Thuộc tính 1 với 2.0) = 𝐺𝑖𝑛𝑖 (𝐷1 ) +
2

1

3

3

= [1 − (0.52 + 0.52 )] +

𝐺𝑖𝑛𝑖 (𝐷2 )


[1 − 12 ] = 0.33

Chọn 1.25 làm giá trị phân chia tốt nhất cho thuộc tính 1 vì 0 < 0.33
Tính Gini(Thuộc tính 2):
2

1

3

3

Gini(Thuộc tính 1 với 1.2) = 𝐺𝑖𝑛𝑖 (𝐷1 ) +
2

1

3

3

= [1 − (0.52 + 0.52 )] +

𝐺𝑖𝑛𝑖 (𝐷2 )

[1 − 12 ] = 0.33

Vậy chọn thuộc tính 1 với giá trị 1.25 làm giá trị phân chia tập D vì giá trị Gini trên
thuộc tính 1 với giá trị 1.25 là bé nhất.
2.4.4 Nhận xét

Ba số đo lựa chọn thuộc tính đều có điểm chung là chọn thuộc tính phân hoạch làm sao
cho mỗi tập phân hoạch thuần khiết nhất( chỉ có một giá trị nhãn lớp ).
Ưu điểm các số đo theo [7]:
-

Gini Index: thích hợp khi phân chia nhị phân, đối với dữ liệu liên tục

-

Infomaion Gain: thích hợp cho giá trị rời rạc, miền giá trị của thuộc tính ít, và có
thể phân chia thành 2 hay nhiều nhánh

-

Gain Ratio: thích hợp cho phân chia nhiều nhánh, giá trị rời rạc trên thuộc tính và
miền giá trị thuộc tính lớn.

22


Việc chọn cách tính nào để có hiệu quả 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 cho hiệu quả phân lớp rất cao đối với các trường dữ liệu rời rạc và số
trong khi đó các thuật toán như C4.5 có hiệu quả hơn đối với các dữ liệu nhị phân.

23


CHƯƠNG 3
TỐI ƯU THAM SỐ TRONG RANDOM FOREST

Như đề cập trong chương 1, việc tối ưu các tham số trong Random Forest là rất quan
trọng và cần thiết, một số tham số có ảnh hưởng rất lớn đến kết quả cũng như hiệu suất
khi huấn luyện thuật toán. Trong đồ án, tôi đã nghiên cứu tối ưu các tham số: số cây, số
đo lựa chọn thuộc tính và số thuộc tính lựa chọn phân chia. Các thực nghiệm cài đặt
trên môi trường Java trình bày trong mục 4 của chương.
3.1 Tối ưu số cây
Số cây là một trong các tham số quan trọng trong Random Forest. Việc chọn lựa số
cây trong rừng có ảnh hưởng rất lớn đến kết quả mô hình tạo ra từ thuật toán.
Qua quá trình nghiên cứu và thực nghiệm nhận dạng chữ viết tay rời rạc, tôi đưa ra
các nhận xét sau:
-

Không nên sử dụng số cây quá ít(1, 2 cây) vì làm giảm độ chính xác thuật toán

-

Số cây là tùy bộ dữ liệu

-

Số cây tăng không đảm bảo tăng độ chính xác thuật toán

-

Nên huấn luyện thuật toán nhiều lần với số cây khác nhau, sau đó kiểm tra và lựa
chọn số cây cho kết quả tốt nhất

Thực nghiệm thuật toán Random Forest nhận dạng chữ viết tay rời rạc với số cây khác
nhau
Mô tả thực nghiệm:

-

Huấn luyện trên bộ MNISTrain với 1,000 ảnh ký tự

-

Kiểm tra nhận dạng trên bộ MNISTTest gồm 200 ảnh ký tự

-

Vector thuộc tính bằng phương pháp zonning k = 2 khi lấy đặc trưng ảnh, vậy mỗi
ảnh 28x28 được rút ra 196 đặc trưng.

-

Thực hiện Bootstrap cho mỗi cây

-

Số thuộc tính lựa chọn phân chia là √196=14

-

Số đo lựa chọn thuộc tính Gini Index

24


Hình 3.1: Hình ảnh các ký tự trong tập MNISTrain
Kết quả: cho trong biểu đồ kết quả thực nghiệm 3.1

90
80

Độ chính xác(%)

70

73.5

74

60

78

77

77

77

60.5

50
40
30

33

20

10
0
0

100

200

300

400

500

600

700

800

900

1000

Số cây

Biểu đồ 3.1: Kết quả thực nghiệm số cây
Từ kết quả trên ta thấy:
-


Số cây 1 thì kết quả độ chính xác 33% trong khi với số cây 1,000 là 77%

-

Độ chính xác là 77% cho các số cây 500, 700 và 1,000

Do Random Forest tổng hợp kết quả các cây để đưa ra kết quả cuối cùng nên nếu số
cây ít không phản ánh được các ưu điểm thuật toán. Đồng thời việc mỗi cây chỉ sở hữu
khoảng 2/3 dữ liệu từ tập mẫu cho quá trình huấn luyện nên nếu số cây ít thì có khả
năng toàn bộ tập mẫu không được sử dụng trọn vẹn.

25


×