CHƯƠNG 3. CHƯƠNG TRÌNH THỬ NGHIỆM
3.2. Cài đặt thử nghiệm thuật toán phân cụm dữ liệu trong phân loại Protein 55 1. Phát biểu bài toán
3.2.4. Môi trường cài đặt và thử nghiệm
Chương trình sử dụng ngôn ngữ R kết hợp với ngôn ngữ C# để thử nghiệm chương trình. Yêu cầu các phần mềm cần thiết bao gồm: bộ .Net Framework 4.0 trở nên, bộ cài đặt ngôn ngữ R và một số gói cài đặt mở rộng của R đƣợc đóng gói trong đĩa CD.
Giao diện tương tác với người dùng được phát triển trên bộ công cụ Visual Studio 2010 bằng ngôn ngữ C#. Phần thuật toán xử lý trên ngôn ngữ R. Để có thể kết nối giữa phần giao diện và phần xử lý thuật toán, chương trình sử dụng thƣ viện R.net đƣợc phân phối tại địa chỉ rdotnet.codeplex.com. Phần dưới đây sẽ mô tả một cách sơ lược về ngôn ngữ R và các gói mở rộng được sử dụng trong chương trình.
3.2.4.2. Ngôn ngữ R
R là ngôn ngữ lâp trình thống kê sáng lập bởi nhóm tác giả "R Development Core Team" tại đại học đại học Auckland, do Ross Ihaka và Robert Gentleman khởi xướng và phát triển từ ngôn ngữ lập trình thống kê S. Do đặc trƣng của phần mềm mã nguồn mở, R nhận đƣợc đóng góp xây dựng từ khắp các nơi trong cộng đồng khoa học. Thêm vào đó R kế thừa các ƣu điểm của ngôn ngữ lập trình bậc cao nên nhanh chóng trở thành ngôn ngữ rất phổ biến trong thống kê, xử lý số liệu nói chung và đặc biệt là tin sinh học nói riêng.
R hoàn toàn miễn phí và đƣợc cộng đồng các nhà phát triển về khai phá dữ liệu và học máy rất quan tâm. Rất nhiều thuật toán, công cụ xử lý đƣợc phát triển và phân phối trên kho của CRAN thông qua các gói
62
(package) tại địa chỉ cran.r-project.org. Trong luận văn, tác giả sử dụng ba gói là DMwR, Cluster và clValid đƣợc mô tả chi tiết ở phần sau.
3.2.4.3. Các gói mở rộng
Các gói mở rộng sử dụng trong chương trình:
Gói DMwR:
Gói này bao gồm các hàm sử dụng trong khai phá dữ liệu. Luận văn sử dụng hàm knnImputation để xử lý các giá trị thiếu trong bộ dữ liệu. Mô tả chi tiết hàm này nhƣ sau:
Sử dụng:
knnImputation(data, k= 10, scale = T, meth =
"weighAvg", distData = NULL) Các tham số của hàm:
data: là bộ dữ liệu đầu vào cần xử lý
k: là số hàng xóm gần nhất, mặc định là 10
scale: quyết định xem dữ liệu có được chia tỷ lệ trước khi tìm các hàm xóm gần nhất hay không. Mặc định là true
meth: là phương pháp để điền giá trị thiếu. Bao gồm hai phương pháp là “median” (phương pháp a) và “weighAvg” (phương pháp b) nhƣ đã mô tả ở mục 3.2.3.4. Mặc định là sử dụng weighAvg.
distData: tham số này đƣợc sử dụng khi tìm kiếm các hàng xóm trên bộ dữ liệu khác. Mặc định là NULL, khi đó thuật toán sẽ tìm hàng xóm trên chính bộ dữ liệu đầu vào.
Gói Cluster:
Gói này đƣợc phát triển bởi Peter Rousseeuw, Anja Struyf và Mia Hubert đƣợc công bố trên kho của CRAN vào ngày 30/1/2015. Phiên bản chương trình sử dụng là 2.0.1.
63
Hàm clara thuộc thƣ viện cluster cho phép tính toán phân cụm dữ liệu theo thuật toán Clara.
Mô tả chi tiết về hàm và các tham số nhƣ sau:
Sử dụng:
clara(x, k, metric = "euclidean", stand = FALSE, samples = 5,sampsize = min(n, 40 + 2 * k), trace = 0, medoids.x = TRUE,keep.data = medoids.x, rngR = FALSE, pamLike = FALSE)
Các tham số của hàm:
x: là dữ liệu đầu vào của hàm, dữ liệu này có cấu trúc dạng bảng nhƣ mô tả trong mục 3.2.2.
k: là một số nguyên chỉ số. Giá trị này phải nằm trong khoảng (0, n) trong đó n là số lƣợng các bản ghi.
metric: hàm khoảng cách, mặc định sẽ dùng khoảng cách euclid
stand: biến logic xác định xem cần chuẩn hóa các giá trị bị thiếu trong bộ dữ liệu. Các giá trị thiếu sẽ đƣợc thay thế bằng giá trị trung bình theo thuộc tính (cột). Mặc định là giá trị False
samples: là số nguyên chỉ giá trị các mẫu đƣợc xử lý trong bộ dữ liệu. Giá trị mặc định là 5
sampsize: số nguyên chỉ số lƣợng quan sát trên mỗi sample. Giá trị này sẽ lớn hơn số cụm và thường bằng số các bản ghi.
trace: số nguyên biểu thị vết theo dõi trong quá trình gỡ lỗi.
medoids.x: biến logic quyết định có trả về giá trị tâm cụm hay không. Mặc định là True
keep.data: biến logic xác định xem kết quả có được lưu lại trng bộ nhớ hay không. Biến này sẽ có giá trị tương ứng với biến medoids.x
64
rngR: biến logic xác định xem hàm có tạo ra một số ngẫu nhiên đƣợc sử dụng trong quá trình tính toán của hàm. Mặc định là False
pamLike: biến logic xác định hàm thực hiện theo thuật toán PAM hay không. Mặc định là False.
Gói clValid:
Gói clValid đƣợc phát triển bởi Guy Brock, Vasyl Pihur, Susmita Datta, và Somnath Datta đƣợc công bố vào ngày 25/3/2014. Gói này chứa các hàm xử lý về các thuật toán phân cụm dữ liệu đƣợc sử dụng trong thống kê và tin sinh. Để sử dụng đƣợc gói này, cần phải cài gói Cluster trước.
Hàm SoT thuộc thƣ việc clValid cho phép tính toán phân cụm dữ liệu theo thuật toán SoT.
Mô tả chi tiết về hàm và các tham số nhƣ sau:
sota(data, maxCycles, maxEpochs = 1000, distance =
"euclidean", wcell = 0.01,pcell = 0.005, scell = 0.001, delta = 1e-04, neighb.level = 0,
maxDiversity = 0.9, unrest.growth = TRUE, ...) Các tham số của hàm:
data: dữ liệu đầu vào của hàm tương tự hàm clara
maxCycles: số nguyên chỉ số vòng lặp tối đa. Khi đó kết quả số phân cụm trả về là maxCycles + 1
maxEpochs: số nguyên chỉ số lƣợng tối đa các đối tƣợng đƣợc xử lý trong mỗi vòng lặp. Giá trị mặc định là 1000
distance: hàm khoảng cách để tính toán độ đo sự khác nhau giữa các đối tƣợng. Hàm này hỗ trợ hai hàm khoảng cách là euclid và correlation.
wcell: giá trị trọng số của các đối tƣợng. Mặc định là 0,01
65
pcell: giá trị trọng số của đối tƣợng cha. Mặc định là 0.005
scell: giá trị trọng số của các đối tƣợng anh em. Mặc định là 0,001
delta: giá trị lỗi tối thiểu. Ngƣỡng này sẽ sử dụng để dừng vòng lặp.
neighb.level: số nguyên xác định các ứng viên sẽ di chuyển giữa các phân cụm.
maxDiversity: chỉ giá trị sai lệch cực đại của các đối tƣợng trong cùng một cụm.
unrest.growth: giá trị logic. Nếu là True thì số cụm sẽ tương ứng với maxCycles + 1. Nếu là False thì thuật toán sẽ dừng trước khi đạt đến maxCycles. Giá trị mặc định là True.
3.2.4.4. Thử nghiệm chương trình
Giao diện chương trình được chia thành bốn nhóm:
Nhóm 1 “Nhập dữ liệu”: cho phép người dùng nhập dữ liệu từ tập tin văn bản có cấu trúc như trong phần 3.2.2.1. Để nhập dữ liệu, người dùng nhấn vào nút “Chọn...” và duyệt đến tập tin dữ liệu..
Hình 3.5. Giao diện chọn bộ dữ liệu
66
Nhóm 2 “Thông tin dữ liệu và Chi tiết dữ liệu”: hiển thị thông tin về tên bộ dữ liệu, số dòng, số cột và chi tiết về nội dung của dữ liệu. Trong chi tiết dữ liệu, mỗi dòng tương ứng với giá trị của một gen, cột “Name” là tên của gen, các cột từ a1 đến a80 là giá trị số tương ứng của gen đó.
Hình 3.6. Thông tin về bộ dữ liệu
Nhóm 3 “Tham số phân cụm”: cho phép người dùng nhập các tham số điều khiển cho hai thuật toán Clara và SoT là số tâm cụm. Với thuật toán SoT, có thể hiển thị đƣợc biểu đồ phân cụm. Sau khi lựa chọn đầy đủ các tham số, người dùng nhấn nút “Thực hiện phân cụm” để chương trình xử lý tính toán.
Nhóm 4 “Kết quả phân cụm”: hiển thị kết quả khi thực hiện phân cụm dữ liệu. Kết quả phân cụm gồm ba phần:
Số phần tử thuộc mỗi cụm: phần này sẽ đếm xem mỗi cụm sẽ chứa bao nhiêu gen thuộc về cụm đó
Tâm cụm: hiển thị tâm của mỗi cụm
67
Sự phân bố trên các cụm: hiển thị chi tiết các cụm chứa tên gen tương ứng.
Hình 3.7. Kết quả phân cụm băng Clara với số tâm cụm bằng 10
Hình 3.8. Kết quả phân cụm bằng SoT với số tâm cụm bằng 10
68
Với thuật toán SoT, chương trình hiển thị chi tiết từng phân cụm.
Với tùy chọn xem tất cả các biểu đồ hoặc xem từng biểu đồ phân cụm.
Hình 3.9. Giao diện hiển thị 10 phân cụm trong thuật toán SoT
Hình 3.10. Chi tiết phân cụm thứ tám trong thuật toán SoT
69
Để lưu lại kết quả phân cụm, người dùng nhấn nút “Lưu kết quả” và nhập tên tệp cần lưu, chương trình sẽ lưu lại kết quả dưới dạng tệp text như sau:
Hình 3.11. Tập tin kết quả phân cụm clara
70