Thuật toán SPRINT

Một phần của tài liệu Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định (Trang 37 - 38)

Ngày nay dữ liệu cần khai phá có thể có tới hàng triệu bản ghi và khoảng 10 đến 10000 thuộc tính. Hàng Tetabyte (100 M bản ghi * 2000 trường * 5 bytes) dữ liệu cần được khai phá. Những thuật toán ra đời trước không thểđáp ứng được nhu cầu đó. Trước tình hình đó, SPRINT là sự cải tiến của thuật toán SLIQ (Mehta, 1996) ra đời. Các thuật toán SLIQ và SPRINT đều có những cải tiến để tăng khả năng mở rộng của thuật toán như:

• Khả năng xử lý tốt với những thuộc tính liên tục và thuộc tính rời rạc.

• Cả hai thuật toán này đều sử dụng kỹ thuật sắp xếp trước một lần dữ liệu, và

lưu trữ thường trú trên đĩa (disk – resident data) những dữ liệu quá lớn không thể chứa vừa trong bộ nhớ trong. Vì sắp xếp những dữ liệu lưu trữ trên đĩa là đắt [3], nên với cơ chế sắp xếp trước, dữ liệu phục vụ cho quá trình phát triển cây chỉ cần được sắp xếp một lần. Sau mỗi bước phân chia dữ liệu tại từng node, thứ tự của các bản ghi trong từng danh sách được duy trì, không cần phải sắp xếp lại như các thuật toán CART, và C4.5 [13][12]. Từ đó làm giảm tài nguyên tính toán khi sử dụng giải pháp lưu trữ dữ liệu thường trú trên đĩa. • Cả 2 thuật toán sử dụng những cấu trúc dữ liệu giúp cho việc xây dựng cây

quyết định dễ dàng hơn. Tuy nhiên cấu trúc dữ liệu lưu trữ của SLIQ và SPRINT khác nhau, dẫn đến những khả năng mở rộng, và song song hóa khác nhau giữa hai thuật toán này.

Mã giả của thuật toán SPRINT như sau:

Hình 11 - Mã giả thuật toán SPRINT

SPRINT algorithm: Partition(Data S) {

if (all points in S are of the same class) then

return;

for each attribute A do

evaluate splits on attribute A;

Use best split found to partition S into S1& S2 Partition(S1);

Partition(S2); }

Một phần của tài liệu Nghiên cứu các thuật toán phân lớp dữ liệu dựa trên cây quyết định (Trang 37 - 38)