Các toán tử của thuật toán GA

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu phương pháp tìm thuộc tính tối ưu nhằm tăng hiệu quả phân tích trong phân tích dữ liệu lớn (Trang 32)

toán Láng giềng gần nhất (NN) thì láng giềng nào gần nhất sẽ quyết định nhãn cho đối tượng quan sát mới. Thuật toán đơn giản nhưng cục bộ, kết quả sai khi

láng giềng đó là đối tượng kì dị. Vì vậy, thay vì một chúng ta sẽ xét đến k láng giềng gần nhất (kNN), láng giềng nào chiếm phần đông sẽ quyết định nhãn cho đối tượng quan sát mới. Thuật toán kNN có nhược điểm là kết quả phụ thuộc vào việc lựa chọn giá trị k. Nếu xác định giá trị k không phù hợp dẫn đến kết quả gán nhãn sai. Thuật toán Đánh trọng số k Láng giềng gần nhất (WkNN ) giảm bớt sự phụ thuộc vào giá trị k bằng cách đánh trọng số cho k láng giềng

dựa vào giá trị trả về của hàm tính khoảng cách, từ đó những láng giềng ở gần đối tượng quan sát mới sẽ có tầm ảnh hưởng cao hơn những láng giềng ở xa.

Thuật toán Hàm nhân k Láng giềng gần nhất (Kernel k-NN) áp dụng các thuật toán như NN, kNN và WkNN trên dữ liệu phi tuyến, về cơ bản dữ liệu sử dụng

ngoài thực tế là dữ liệu phi tuyến. GA là một thuật toán tìm kiếm tối ưu mô phỏng theo sự phát triển tiến hóa của sinh vật, phù hợp sự phát triển theo quy luật tự nhiên. Việc sử dụng thuật toán GA giúp tìm kiếm những tập thuộc tính tốt (ánh xạ tương ứng với các chuỗi Gen) trong quần thể khảo sát. Việc sử dụng

GA tối ưu dữ liệu đầu vào cho thuật toán Kernel k-NN, mang lại cơ hội nâng

cao độ chính xác phân lớp của thuật toán này. Việc kết hợp hai thuật toán GA

Chương 3. Mô hình GA_Kernel k-NN và kết quả thực

nghiệm

3.1. Giới thiệu

Hầu hết các kỹ thuật khai phá dữ liệu hiện nay đều không đạt hiệu quả cao với tập dữ liệu có số chiều lớn, độ chính xác và hiệu quả truy vấn giảm nhanh khi số chiều tăng lên. Ngoài ra việc thu thập dữ liệu cũng tốn rất nhiều thời gian, công sức và tiền bạc. Thực tế số thuộc tính (số chiều) trong dữ liệu cần sử dụng là nhỏ. Ví dụ : số lượng thuộc tính của Gen đặc trưng cho một loại bệnh là rất nhỏ. Việc lựa chọn chuẩn hóa dữ liệu làm đầu vào cho mô hình dự đoán giúp nâng cao tính chính xác và tối ưu thời gian công việc.

Dữ liệu luận văn sử dụng là một số bộ dữ liệu thông tin về Gen, được tổ chức dưới dạng ma trận, trong đó mỗi dòng là một Gen, mỗi cột là thuộc tính của Gen. Các thuộc tính có kiểu dữ liệu số thực, giá trị thuộc tính có thể là liên tục hoặc không, bao gồm cả giá trị rỗng hoặc bằng 0. Yêu cầu của bài toán là phân loại các Gen thành hai lớp, gồm Gen bị bệnh và Gen bình thường. Để nâng cao hiệu quả phân tích, dữ liệu cần được chuẩn hóa bằng một số bộ lọc trong mô đun tiền xử lý dữ liệu. Các bộ lọc được tải về và sử dụng từ bộ thư viện Caret, bộ thư viện mã nguồn mở rất mạnh dùng để phân lớp và hồi quy chạy trên môi trường R.

3.2. Mô hình GA_Kernel k-NN

3.2.1. Kiến trúc GA_Kernel k-NN

Hệ thống được xây dựng theo mô hình Wrapper bao gồm ba phần chính : tiền xử lý số liệu, quá trình học để tìm tập thuộc tính tối ưu, và cuối cùng là mô đun phân lớp dữ liệu sử dụng trong quá trình trước đó.

- Phần một : dữ liệu ban đầu lần lượt đi qua các các bộ lọc, dữ liệu trả về của bộ lọc trước là dữ liệu đầu vào của bộ lọc sau. Việc chuẩn hóa dữ liệu chỉ cần tiến hành một lần duy nhất, dữ liệu trả về sẽ được lưu lại và là tham số đầu

 nearZeroVar : được sử dụng xác định thuộc tính có giá trị phương sai gần bằng 0. NearZeroVar sẽ gắn cờ các vị trí thuộc tính thỏa mãn điều kiện trên. Từ danh sách cờ, tôi tiến hành loại bỏ thuộc tính

 findCorrelation : xác định một vector kiểu số nguyên tương ứng với các thuộc tính thông qua một ma trận tương quan. Xét theo từng cặp thuộc tính, thuộc tính nào có độ tương quan trung bình cao hơn sẽ bị loại bỏ.

 filterVarImp : bộ lọc đặc trưng với tham số quan trọng

predict : sử dụng hàm preProcess để tiền xử lý dữ liệu (áp dụng một số

chiến thuật như hướng tâm, mở rộng ...) ước lượng từ dữ liệu huấn luyện và áp dụng trên dữ liệu khác với các tham số tương tự. Bộ lọc predict có thể được chạy trên dữ liệu huấn luyện hoặc một số phần lặp lại của dữ liệu huấn luyện, qua đó dự đoán dữ liệu kiểm thử và tính xác suất phân lớp. - Phần hai : Dữ liệu sau khi chuẩn hóa được phân chia một cách ngẫu nhiên thành hai tập, gồm tập dữ liệu dùng để huấn luyện và tập dữ liệu kiểm chứng. Tiếp theo thuật toán GA sẽ liên tục tìm kiếm các tập con thuộc tính bằng các phương pháp như chọn lọc, lai tạo, đột biến. Việc tìm kiếm được giới hạn trong không gian tìm kiếm hữu hạn, tập hợp các tập con tạo thành quần thể.

- Phần ba : tôi dùng thuật toán Kernel k-NN tiến hành phân lớp, tỉ lệ phân

lớp đúng/sai (giá trị độ chính xác phân lớp) là kết quả trả về của hàm mục tiêu (hàm đánh giá) trong thuật toán GA. Quá trình lặp với số lần giới hạn được xác định qua tham số đầu vào của thuật toán GA sẽ tìm ra tập thuộc tính tốt nhất theo nghĩa, là tập thuộc tính mang lại kết quả phân lớp đúng cao nhất trong thuật

toán Kernel k-NN .

Các toán tử trong thuật toán GA đều mang tính ngẫu nhiên, thuật toán GA đòi hỏi phải xác định cỡ quần thể và khởi tạo ngẫu nhiên quần thể ban đầu, tính xác suất lai ghép và xác suất đột biến (trong đó xác suất xảy ra đột biến là thấp). Các bộ thuộc tính được sinh ra từ tập thuộc tính ban đầu bằng cách kết hợp việc chọn ngẫu nhiên với việc phân bố đồng đều các thuộc tính. Thuật toán học máy

( GA ) ( Kernel k-NN ) Dữ liệu kiểm chứng Dữ liệu huấn luyện Tạo quần thể gồm các chuỗi Gen Thế hệ = 0

Với mỗi quan sát trong tập kiểm chứng, tính khoảng cách giữa nó với tất cả các quan sát trong tập huấn luyện

Chọn k+1 láng giềng gần nhất (trong tập huấn

luyện) cho mỗi quan sát trong tập kiểm chứng

Chuẩn hóa khoảng cách

Dùng hàm trọng số ( ), 1 ≤ ≤ , gán trọng số cho k láng

giềng gần nhất của mỗi quan sát trong tập kiểm chứng

Phân lớp cho các quan sát trong tập kiểm chứng và tính độ chính xác

Xác định giá trị của hàm đánh giá với mỗi cá thể ( Chuẩn hóa dữ liệu ) Dữ liệu

ban đầu

Chọn thế hệ kế tiếp Thực hiện lai ghép

Thực hiện đột biến

nearZeroVar findCorrelation filterVarImp Predict

Chuỗi Gen tốt nhất > n thế hệ

Thế hệ tiếp theo

3.2.2. Môi trường thực nghiệm

Các thực nghiệm đều được thực hiện trên máy tính có cấu hình CPU Core i5 tốc độ 2.4GH, dung lượng bộ nhớ RAM 4G. Ngôn ngữ R rất mạnh và được dùng phổ biến trong ngành xác suất thống kê, phương pháp đề nghị được viết và thực thi trên môi trường R. Để sử dụng, tôi đã tải về và cài đặt tại địa chỉ

http://cran.r-project.org/bin/windows/base/. Trong quá trình viết thuật toán, chạy và kiểm thử, tôi sử dụng kết hợp với phần mềm Rstudio, đây cũng là phần mềm tiện ích, phổ biến có giao diện trực quan chạy trên nền môi trường R. Vì vậy, để Rstudio có thể chạy được có một lưu ý quan trọng là môi trường R phải được cài đặt và chạy thành công trước khi dùng phần mềm Rstudio. Tôi đã tải Rstudio và cài đặt tại địa chỉ : https://www.rstudio.com/products/rstudio/download/. Trong luận văn, tôi sử dụng hàm GA_RF trong gói thư viện Caret, được tải về từ địa chỉ : http://cran.r-project.org/web/packages/caret/index.html. Thuật toán Rừng ngẫu nhiên (RF) cũng được tải từ thư viện của R. Code nguồn thuật toán Kernel

k-NN được cung cấp tại tài liệu [6], tôi đã tải về và cài đặt trên môi trường R tại

địa chỉ : https://code.google.com/p/kernelmethods/downloads/list. Code nguồn

của thuật toán GA_Kernel k-NN, là sự kết hợp và cải tiến từ code nguồn GA_RF và code nguồn Kernel k-NN

3.2.3 Mô tả chương trình - Tổ chức dữ liệu : - Tổ chức dữ liệu :

Dữ liệu thực nghiệm bao gồm n cột được mô tả dưới dạng một vector nhị phân gồm các bít 0 và 1 (ví dụ : 01110...0010010) có độ dài tương ứng bằng n thuộc tính. Chuỗi bít này gọi là chuỗi Gen trong thuật toán GA. Chúng ta quy ước, bít 0 là cột không được chọn và bít 1 là cột được chọn, vị trí bít này ánh xạ tương ứng số thứ tự của thuộc tính. Cách biểu diễn này sẽ mô tả được bộ dữ liệu với số cột được chọn lựa theo thứ tự một cách ngẫu nhiên. Tiếp theo, việc tìm các chuỗi nhị phân này được thực hiện thông qua các phép toán của GA như chọn lọc, lai ghép và đột biến. Từ các chuỗi Gen, thuật toán xây dựng ma trận

dữ liệu là tham số đầu vào của thuật toán Kernel k-NN, kết quả trả về của thuật toán Kernel k-NN là kết quả hàm mục tiêu của thuật toán GA (tính toán giá trị

- Hoạt động của thuật toán GA_Kernel k-NN

Bước 1: Dữ liệu ban đầu lần lượt được giảm chiều (giảm nhiễu) thông qua bộ lọc nearZeroVar, findCorrelation, filterVarImp và predict

Bước 2 : Chia ngẫu nhiên tập dữ liệu thành hai tập: dữ liệu huấn luyện và dữ liệu kiểm chứng. Kích thước hai tập theo tỉ lệ 70/30.

Bước 3 : Tập huấn luyện là ma trận kích cỡ m x n, với n là số cột thuộc tính và m là số dòng (Gen). Tiến hành khởi tạo quần thể ban đầu, thuật toán GA lần lượt tạo ra các chuỗi Gen thế hệ đầu tiên.

Bước 4 : Từ các giá trị bít 1 (trong chuỗi Gen) xác định chỉ số thuộc tính được chọn. Xây dựng ma trận con là tham số đầu vào hàm mục tiêu của GA. Trong

thuật toán Kernel k-NN sẽ chia bộ thuộc tính mới thành hai tập dữ liệu huấn

luyện và và tập dữ liệu kiểm chứng, theo tỉ lệ 70/30

Bước 5 : Từ công thức ánh xạ phi tuyến 2.6. Dựa trên dữ liệu huấn luyện và tập dữ liệu kiểm chứng, Tính ma trận chuyển đổi dựa trên hàm nhân Radial Basis

( , ) = exp −‖ ‖ (2.9) Bước 6 : Tính khoảng cách chuẩn trong không gian mới giữa từng đối tượng quan sát trong tập dữ liệu kiểm chứng với mọi đối tượng quan sát trong tập dữ liệu huấn luyện. Sử dụng công thức:

( ), ( ) = ‖ ( ) − ( )‖

= 〈 ( ), ( )〉 − 2〈 ( ), ( )〉 + 〈 ( ), ( )〉 (2.8) = ( , ) − 2 ( , ) + ( , )

Bước 7 : Với mỗi quan sát trong tập kiểm chứng, ta chọn k+1 láng giềng gần

nhất trong tập huấn luyện.

Bước 8 : Thực hiện chuẩn hóa k khoảng cách của mỗi đối tượng quan sát trong tập kiểm chứng (ứng với k láng giềng gần nhất) sử dụng láng giếng gần nhất thứ

k+1 của nó. Ta có: ∈ [0,1), ( = 1, , = 1, ). Với m là kích thước tập

kiểm chứng.

= ố á ị ℎâ ớ

ổ ố á ậ ể ℎứ (2.10)

với 1 ≤ ≤ .

Tính độ chính xác = 1 -

Bước 10 : Ghi nhớ tập con thuộc tính và và độ chính xác phân lớp tương ứng Bước 11 : Sử dụng các thủ tục lại tạo, chọn lọc, đột biến để xây dựng các chuỗi Gen mới (bộ con thuộc tính). Thế hệ tiếp theo, thực hiện bước 4.

Bước 12 : Kết thúc, dựa vào danh sách ghi nhớ tại bước 10, xác định được tập con thuộc tính có độ chính xác phân lớp cao nhất và đây cũng là chuỗi Gen tốt nhất.

Tóm lại : thuật toán GA giúp tìm thuộc tính tối ưu (giảm chiều dữ liệu) để tăng

hiệu quả phân tích (phân lớp) của thuật toán Kernel k-NN.

- Cài đặt thuật toán

Tên hàm Diễn giải

gafs(x, y, iters = 3, popSize = 150 ...)

Hàm chính, nhận tham số là ma trận dữ liệu, vector lớp tương ứng, số lần khởi tạo quần thể, số lần các chuỗi Gen được tạo mới

createFolds (...), lapply (...) Một số hàm sử dụng từ thư viện R, thư viện Caret, chọn dữ liệu ngẫu nhiên theo tập dữ liêu huấn luyện và tập dữ liệu kiểm chứng

ga_select (x, y, iters = 3, popSize = 150 ... )

Hàm xây dựng chuỗi Gen thông qua phương thức chọn lọc, lai tạo và đột biến trong thuật toán GA

ga_wrapper (ind, x, y, funcs...) Sử dụng thuật toán Kernel k-NN làm

hàm mục tiêu của thuật toán GA.

print.gafs (x ...) Hiển thị thông tin các đối tượng trong thuật toán GA

kernelKNN.cv (xtr, ytr, cv.fold=5, kvalue, sigma=0.066, isweight)

Từ tập con thuộc tính :

- Phân chia ngẫu nhiên thành hai tập huấn luyện và kiểm chứng

- Xây dựng ma trận chuyển đổi (dùng công thức 2.6), sử dụng tham số sigma ( ) tính giá trị công thức Radial

Basis. – Thuật toán Kernel k-NN phân

lớp và trả về độ chính xác phân lớp

kernelKNN.predict (kxtrtr, kxtrte, kxtete, y, kvalue=5, ytr,

isweight=TRUE)

Từ ma trận chuyển đổi:

- Sử dụng công thức 2.8, tính khoảng cách từng đối tượng quan sát trong tập dữ liệu kiểm chứng với mọi đối tượng quan sát trong tập dữ liệu huấn luyện.

- Chuẩn hóa k khoảng cách (kvalue)

của mỗi đối tượng quan sát trong tập kiểm chứng (ứng với k láng giềng gần nhất) sử dụng láng giếng gần nhất thứ

k+1 của nó

Bảng 3.1: Danh sách tên hàm cài đặt thuật toán GA_Kernel k-NN

3.3. Kết quả thực nghiệm 3.3.1. Dữ liệu sử dụng 3.3.1. Dữ liệu sử dụng

Trong luận văn tôi sử dụng hai bộ dữ liệu về Gen thông dụng. Đặc điểm chung của hai bộ này là số thuộc tính rất lớn nhưng số mẫu tương đôi nhỏ. Dữ liệu DLBCL (Diffuse large B-cell lymphoma) là bộ dữ liệu mở trong nghiên cứu bệnh nhân ung thư [4]. Dữ liệu Arcene được lấy từ UCI Machine Learning Reposotory (https://archive.ics.uci.edu/ml). Hai bộ dữ liệu được phân làm hai lớp tương ứng với các Gen (có bệnh / bình thường)

Bảng 3.2 dưới đây mô tả tổng quan về các bộ dữ liệu sử dụng bao gồm tên, số thuộc tính, số mẫu (số lượng Gen), và số lớp

Dữ liệu Số thuộc tính Số mẫu Số lớp

Arcene 10000 100 2

DLBCL 5469 77 2

Bảng 3.2: Tổng quan các bộ dữ liệu sử dụng

Đầu tiên tôi thực hiện việc thu gọn dữ liệu thông qua các bộ lọc (trình bày chi tiết tại mục 3.2.1). Tổng số thuộc tính được rút gọn như sau :

- Bộ dữ liệu Arcene từ 10000 thuộc tính ban đầu giảm còn 451 thuộc tính - Bô dữ liệu DLBCL từ 5469 thuộc tính ban đầu giảm còn 2773 thuộc tính

Các bộ dữ liệu này là dữ liệu đầu của thuật toán GA_Kernel k-NN và thuật

toán GA_RF. Thuật toán Rừng ngẫu nhiên (RF) là một thuật toán điển hình, cho kết quả phân tích dữ liệu rất cao. Kết hợp giải thuật Di truyền và RF giúp nâng cao kết quả phân tích dữ liệu. Việc lấy kết quả của thuật toán GA_RF ra để đối chiếu, chứng tỏ tính hiệu quả cao từ thuật toán do tôi để xuất. Tôi sử dụng tổng số thuộc tính trích chọn được và độ chính xác phân lớp là tiêu trí để so sánh. Hai thuật toán được chạy 50 lần để kiểm tra độ ổn định.

3.3.2. Kết quả chạy trên bộ dữ liệu Arcene

- Bộ dữ liệu Arcene :

Bộ dữ liệu Arcene gồm 10000 thuộc tính và 100 mẫu Gen liên quan bệnh ung thư, bao gồm mẫu Gen bị bệnh và mẫu Gen bình thường. Giá trị các thuộc tính thu được từ việc đo độ tập trung phổ. Kiểu dữ liệu của các thuộc tính là kiểu số thực. Bộ dữ liệu Arcene luận văn sử dụng, là một trong năm bộ dữ liệu của tổ chức NIPS (Neural Information Processing Systems) cung cấp. Phân tích dữ liệu Arcene, cụ thể như việc phân lớp các mẫu Gen là một trong những thách thức được NIPS đưa ra trong năm 2003. Bộ dữ liệu Arcene là đối tượng nghiên cứu điển hình của nhiều nhà phân tích dữ liệu.

- Độ chính xác phân lớp GA_Kernel k-NN và GA_RF

Đầu tiên tôi thực hiện việc chuẩn hóa dữ liệu thông qua các bộ lọc

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu phương pháp tìm thuộc tính tối ưu nhằm tăng hiệu quả phân tích trong phân tích dữ liệu lớn (Trang 32)