3.6.1 Thuật toán K-láng giềng gần
Thuật toán K-láng giềng gần nhất (hay K-Nearest Neighbor - KNN) là một thuật toán học có giám sát mà kết quả của một đối tƣợng dữ liệu mới đƣợc phân cụm dựa chủ yếu vào k phần tử láng giềng gần. Mục đích của thuật toán này là phân cụm các đối tƣợng mới dựa vào các thuộc tính và các ví dụ huấn luyện.
Thuật toán KNN sử dụng phân loại láng giềng nhƣ dự đoán giá trị của một đối tƣợng dữ liệu mớ1.
Ví dụ:
Giả sử chúng ta có dữ liệu từ một cuộc điều tra và mục tiêu là kiểm tra hai thuộc tính độ phù hợp và tiện ích của một sản phẩm Ngân hàng mới đƣa ra
(điểm cao sẽ tốt hơn) để phân loại sản phẩm đó thích hợp với thị trƣờng hay không (tốt hay xấu). Sau đây là ví dụ huấn luyện
X1 = thích hợp X2 = tiện lợi Phân loại
7 7 Tốt
7 4 Tốt
3 4 Xấu
1 4 Xấu
Với một kết quả X1 = 3 và X2 = 7, không cần lấy thêm ý kiến, hỏi có đánh giá đƣợc sản phẩm này phù hợp hay không? Với thuật toán KNN, điều này có thể thực hiện đƣợc.
3.6.2. Cách thức thực hiện thuật toán KNN
Thuật toán KNN tƣơng đối đơn giản, nó thực hiện dựa trên khoảng cách gần của dữ liệu mới với tập dữ liệu huấn luyện để xác định K láng giềng gần. Sau khi xác định đƣợc K láng giềng gần, chúng ta sẽ dựa vào các láng giềng này để dự đoán về đối tƣợng dữ liệu mớ1.
Dữ liệu trong thuật toán KNN có thể chứa một số thuộc tính có tên là
(i=1,2..) và sẽ đƣợc phân cụm theo . Dữ liệu có thể đƣợc đo theo tỷ lệ bất kỳ từ thứ tự, danh nghĩa tới tỷ lệ định lƣợng nhƣng hiện tại chúng ta sẽ tiến hành với số lƣợng và nhị phân (danh nghĩa) . Phần sau sẽ tiến hành với loại dữ liệu khác.
Giả sử chúng ta có tập dữ liệu nhƣ sau:
X1 X2 Y X1 X2 Y 4 3 + 4 6 - 1 3 + 4 4 - 3 3 + 5 8 - 3 7 + 7 8 - 7 4 + 5 6 - 4 1 + 10 5 - 6 5 + 7 6 - 5 6 + 4 10 - 3 7 + 9 7 - 6 2 + 5 4 - 8 5 - 6 6 - 7 4 - 8 8 - 6 5 ?
Dòng cuối cùng là dữ liệu mà chúng ta cần dự đoán phân cụm. Biểu diễn đồ hoạ của bài toán trên nhƣ hình vẽ 4.1 phía dƣớ1.
Giả sử chúng ta gán K = 8 (chúng ta sẽ thực hiện với 8 láng giềng gần nhất)
nhƣ là một biến của thuật toán. Tiến hành tính các khoảng cách giữa điểm mới và các dữ liệu huấn luyện. Bởi vì chúng ta chỉ sử dụng số lƣợng nên có thể dùng khoảng cách Ơclit. Giả thiết điểm mới có toạ độ ( , ) và toạ độ của điểm trong ví dụ huấn luyện là ( , ), khi đó khoảng cách bình phƣơng Ơclit là:
.
Bƣớc tiếp theo là tìm K-láng giềng gần. Chúng ta sẽ kết luận một điểm huấn luyện làng giềng gần nếu khoảng cách của điểm này tới điểm mới nhỏ hơn hoặc bằng khoảng cách nhỏ nhất thứ K. Nói cách khác, chúng ta sắp xếp khoảng cách của tất cả các ví dụ huấn luyện tới điểm cần dự đoán và xác định K giá trị nhỏ nhất.
Bảng tính khoảng cách nhƣ sau:
Khoảng cách Dấu láng giềng gần Khoảng cách Dấu láng giềng gần
29 10 13 2 - 13 16 2 + 2 - 20 29 0 + 13 2 + 2 - 13 4 9 1 - 5 2 - 5 13
Trƣờng hợp này, số lƣợng các láng giềng có dấu “-” (5) nhiều hơn láng giềng có dấu “+” (3), chúng ta sẽ dự đoán điểm cần dự đoán sẽ có dấu “-”.
Nhƣ vậy, có thể tổng kết các bƣớc thực hiện thuật toán KNN nhƣ sau:
1. Xác định số K = số láng giềng gần nhất
2. Tính cách khoảng cách từ đối tượng dữ liệu tới các điểm ví dụ huấn luyện. 3. Sắp xếp các khoảng cách tính được và xác định K láng giềng gần nhất dựa vào các khoảng cách đó.
4. Xem xét các thuộc tính của K láng giềng gần đó.
5. Dự đoán giá trị của đối tượng dựa trên giá trị của các láng giềng nêu trên.
3.6.3. Một ví dụ áp dụng thuật toán KNN
Trở lại ví dụ đã đƣợc nêu ở phần đầu thuật toán này,
X1 = thích hợp X2 = tiện lợi Phân loại
7 7 Tốt
7 4 Tốt
1 4 Xấu
Với một kết quả X1 = 3 và X2 = 7, không cần lấy thêm ý kiến, hỏi có đánh giá đƣợc sản phẩm này phù hợp hay không?
Áp dụng thuật toán nêu trên
1. Xác định K = số láng giềng gần
Giả sử chúng ta sử dụng K = 3
2. Tính cách khoảng cách từ điểm mới tới các ví dụ huấn luyện
X1 = thích hợp X2 = tiện lợi Khoảng cách
7 7 (7-3)2 + (7-7)2 = 16 7 4 (7-3)2 + (4-7)2 = 25 3 4 (3-3)2 + (4-7)2 = 9 1 4 (1-3)2 + (4-7)2 = 13 3. Sắp xếp khoảng cách và xác định 3 láng giềng gần X1 = thích hợp
X2 = tiện lợi Khoảng cách Độ khoảng
cách Có nằm trong 3 láng giềng ko 7 7 3 Yes 7 4 4 No 3 4 1 Yes 1 4 2 Yes
4. Xem xét các giá trị của các láng giềng
Chỉ có dòng thứ 2 là không thuộc 3 láng giềng vì có độ khoảng cách (thứ tự)
là 4 > 3 (=K). X1 = thích hợp X2 = tiện lợi Khoảng cách Độ khoảng cách Có nằm trong 3 láng giềng ko Y=giá trị của LG 7 7 3 Yes Tốt 7 4 4 No - 3 4 1 Yes Xấu
1 4 2 Yes Xấu
5. Sử dụng các giá trị của láng giềng gần để dự đoán giá trị của dữ liệu mới
Chúng ta có 2 xấu và 1 tốt, do 2>1 nên có thể kết luận rằng sản phẩm mới không phù hợp với nhu cầu của khách hàng.
3.6.4. Ƣu, nhƣợc điểm của thuật toán KNN
Ƣu điểm
- Có thể xử lý đƣợc dữ liệu nhiễu. - Hiệu quả nếu tập dữ liệu học lớn. Nhƣợc điểm
- Cần xác định trƣớc giá trị của K - số láng giềng gần nhất.
- Khoảng cách cơ sở dùng để học không rõ ràng nên không biết đƣợc khoảng loại cách nào và thuộc tính nào đƣợc sử dụng sẽ cho kết quả tốt nhất. Liệu chúng ta có thể sử dụng tất cả các thuộc tính hay chỉ một số thuộc tính nào đó mà thôi?.
- Yêu cầu về tính toán là rất lớn bởi vì chúng ta cần tính tất cả khoảng cách từ các dữ liệu học đến dữ liệu mới cần phân loạ1.
CHƢƠNG 4. XÂY DỰNG CHƢƠNG TRÌNH PHÂN CỤM 4.1 PHÂN TÍCH CÁC MODULE
4.1.1 Module chuẩn bị dữ liệu
Để thực hiện đƣợc các chƣơng trình phân cụm, cần chuẩn bị dữ liệu đầu vào Module chuyển đổi dữ liệu thực hiện các chức năng đảm bảo đầu vào cho các thuật toán phân cụm, đó là:
- Xác định các thuộc tính đầu vào của các thuật toán, ở đây chính là xác định các trƣờng dữ liệu trong File.
- Chuyển đổi các kiểu trƣờng thành các kiểu thuộc tính thích hợp cho các module tính khoảng cách giữa các phần tử thuật toán phân cụm. Từ các kiểu dữ liệu thông thƣờng nhƣ chuỗi (String), số thực (Real, Double), số nguyên (Interger), kiểu logic (Boolean)… thành các kiểu dữ liệu dùng cho các thuật toán phân cụm nhƣ sau:
+ Danh nghĩa (NORMINAL )
+ Quãng tỷ lệ (INTERVAL-SCALED)
+ Biến nhị phân (BINARY) đối xứng và bất đối xứng. + Biến thứ tự (ORDINAL)
+ Biến tỷ lệ không tuyến tính (RATIO-SCALED)
4.1.2 Tinh chỉnh dữ liệu
Module tinh chỉnh dữ liệu thực hiện các chức năng làm sạch dữ liệu trƣớc khi thực hiện thuật toán phân cụm. Nó cho phép ngƣời dùng lựa chọn chuyển đổi dữ liệu từ dạng tỷ lệ không tuyến tính sang tỷ lệ tuyến tính, có loại bỏ dữ liệu khuyết thiếu khi thực hiện phân cụm hay không.
Các lựa chọn tinh chỉnh dữ liệu sẽ ảnh hƣởng trực tiếp tới kết quả thực hiện các thuật toán phân cụm về sau.
4.1.3 Hàm tính khoảng cách
Nhƣ đã trình bày tại chƣơng 1, các độ đo gần gũi hay khác biệt giữa các phần tử/các cụm sẽ quyết định cho việc phần tử sẽ thuộc vào cụm nào, do đó có thể nói các giải thuật tính khoảng cách chính là cốt lõi của các thuật toán phân cụm.
Tuỳ theo loại dữ liệu và tính chất bài toán mà có thể áp dụng các công thức tính khoảng cách khác nhau. Chẳng hạn:
Công thức Manhattan và công thức Euclide (hay tổng quát hoá là công thức Minkowsky) thƣờng đƣợc áp dụng cho các bài toán phân cụm với dữ liệu dạng số (Interval Scaled hay Ratio Scaled). Còn với các bài toán phân cụm dữ liệu hỗn hợp sẽ áp dụng công thức tính khoảng cách hỗn hợp của Kaufman và Rousseeuw.
- Công thức tính theo Euclide giữa đối tƣợng i và đối tƣợng j đƣợc định nghĩa nhƣ sau: 2 2 1 1 ) ... ( ) ( ) , (i j xi xj xip xjp d
- Công thức tính theo Manhattan đƣợc định nghĩa nhƣ sau.
| | ... | | ) , (i j xi1 xj1 xip xjp d
- Tổng quát hoá từ hai công thức trên, ta có cách tính Minkowsky nhƣ sau q jp ip j i x x x x j i d( , )(| 1 1|...| |)1/
- Công thức kết hợp các biến khác nhau vào một ma trận khác biệt đƣợc đề xuất bởi Kaufman và Rousseeuw năm 1998. Giả sử dữ liệu có chứa p biến với các thuộc tính kết hợp. Định nghĩa độ khác biệt d(i,j) giữa đối tƣợng i và j đƣợc xác định nhƣ sau:
p f f ij p f f ij f ij d j i d 1 ) ( 1 ) ( ) ( ) , ( với + f ij
= 1 khi cả hai giá trị xif và xjf của biến f không bị khuyếm khuyết. 0 trong trƣờng hợp ngƣợc lại
+
f ij
= 0 khi biến f có thuộc tính nhị phân bất đối xứng và hai đối tƣợng i và
j đều bằng 0.
+ Số d(i,j) là sự khác biệt giữa i và j.
+ Nếu biến f hoặc là nhị phân hay định danh, khi đó dij(f)đƣợc định nghĩa:
) (f ij d = 1 0 jf if jf if x x x x
+ Nếu dữ liệu là các khoảng tỷ lệ, khi đó dij(f)đƣợc định nghĩa:
f jf if f ij R x x d( ) | |
Với Rf là phạm vi của biến f, đƣợc định nghĩa nhƣ sau: Rf = kf
k x
Max - kf
k x Min
Với k là biến chạy qua tất cả các đối tƣợng không khiếm khuyết đối với biến f.
Ba hàm tính khoảng cách sẽ đƣợc xây dựng tƣơng ứng với ba công thức nêu trên.
4.2 CHƢƠNG TRÌNH MÔ PHỎNG CÁC THUẬT TOÁN 4.2.1 Giới thiệu chƣơng trình 4.2.1 Giới thiệu chƣơng trình
4.2.2 Chuyển đổi và tinh chỉnh dữ liệu a. Chuyển đổi dữ liệu a. Chuyển đổi dữ liệu
Đầu vào: File dữ liệu cần phân cụm (MS Database SQL ..)
Đầu ra: 02 text file
- 01 file chứa các thuộc tính để thực hiện thuật toán phân cụm.
- 01 file chứa dữ liệu của các trƣờng đã chọn. Mỗi một dòng trong file dữ liệu đƣợc chuyển thành một dòng trong Text file, các thuộc tính trên mỗi dòng ngăn cách nhau bởi dấu &.
Giao diện:
b. Tinh chỉnh dữ liệu
Đầu vào:
02 text file của module chuyển đổi dữ liệu.
Đầu ra:
02 text file thoả mãn các điều kiện sau:
- Tên các thuộc tính đƣợc thay thế bởi tên kiểu dữ liệu dùng cho các thuật toán phân cụm (4.1.1).
- Dữ liệu sẽ đƣợc chuyển sang dạng Log nếu chọn option chuyển sang dạng Log khi thực hiện module.
- Nếu lựa chọn option loại bỏ dữ liệu khuyết thiếu, các dòng không đủ dữ kiện sẽ bị lọc trƣớc khi thực hiện thuật toán.
Giao diện:
Module thực hiện chương trình: Phụ lục 1.
4.2.3 Thuật toán K-means
Đầu vào:
Đầu vào của thuật toán là file dữ liệu dạng Text, file chứa định dạng thuộc tính phân cụm và các tham số.
- Cách tính ma trận khoảng cách: một trong ba cách đƣợc phân tích tại 4.1.3.
- Cách tính trung bình: sẽ có hai cách tính trung bình cụm + Trung bình của các giá trị các phần tử (means)
+ Tìm phần tử có tổng khoảng cách đến các phần tử còn lại của cụm là nhỏ nhất (medians).
- Số lần chạy tối đa: số lần thử để cho kết quả phân cụm tốt nhất. - Sử dụng trọng số hay không: khi sử dụng trọng số, các thuộc tính sẽ
đƣợc tính thêm hệ số của trọng số.
- Chọn tâm cụm: chƣơng trình có thể chọn ngẫu nhiên hoặc ngƣời sử dụng nhập các giá trị tâm cụm.
Đầu ra:
Text file chứa dữ liệu đƣợc phân cụm, mỗi dòng của file chứa hai giá trị - Số dòng của file dữ liệu
- Số thứ tự của cụm mà dữ liệu đƣợc phân vào
Giao diện:
4.2.4 Thuật toán phân cụm phân cấp (Hierachical)
Đầu vào:
Thuật toán phân cấp không cần xác định trƣớc số cụm, đầu vào chỉ cần xác định các tham số
- Phƣơng pháp tính khoảng cách: một trong ba phƣơng thức (3.5.1) + Single linkage: khoảng cách giữa một cụm tới cụm khác bằng với khoảng cách ngắn nhất giữa các phần tử thuộc hai cụm đó.
+ Complete linkage: khoảng cách giữa một cụm tới cụm khác bằng với khoảng cách lớn nhất giữa các phần tử thuộc hai cụm đó.
+ Everage linkage: khoảng cách giữa một cụm tới cụm khác bằng với khoảng cách trung bình giữa các phần tử thuộc hai cụm đó.
- Sử dụng trọng số hay không: khi sử dụng trọng số, các thuộc tính sẽ đƣợc tính thêm hệ số của trọng số.
Đầu ra:
File dữ liệu đƣợc phân cấp theo dạng cây.
4.2.5 Thuật toán Fuzzy K-means
Đầu vào:
Tƣơng tự nhƣ thuật toán K-means, tuy nhiên, thuật toán Fuzzy K-means có thêm hai tham số đầu vào đó là số mũ và hằng số dừng.
- Số mũ: là số mũ của hàm thuộc khi thực hiện thuật toán
- Hằng số dừng: điều kiện để dùng thuật toán khi giá trị của hàm thuộc ở hai bƣớc gần nhau nhỏ hơn hằng số dừng.
Đầu ra:
Text file chứa dữ liệu đƣợc phân cụm, mỗi dòng của file chứa hai giá trị - Số dòng của file dữ liệu
- Số thứ tự của cụm mà dữ liệu đƣợc phân vào
CHƢƠNG 5. ỨNG DỤNG PHÂN CỤM DỮ LIỆU GIAO DỊCH ATM 5.1 PHÁT BIỂU BÀI TOÁN
Hệ thống ATM của Ngân hàng Đầu tƣ và Phát triển Việt nam (BIDV) đƣợc triển khai từ năm 2000. Trong giai đoạn thử nghiệm, hệ thống chỉ triển khai tại một số thành phố lớn nhƣ Hà Nội, TP HCM và cung cấp một số giao dịch cơ bản nhƣ rút tiền, đổi pin, vấn tin với một loại thẻ ATM duy nhất. Tuy nhiên, cho đến thời điểm này, hệ thống ATM đã đƣợc triển khai trên toàn quốc với hơn 10 loại hình giao dịch và 8 loại thẻ ATM đƣợc phát hành. Dịch vụ cung cấp cho khách hàng qua kênh ATM cũng đƣợc tăng cƣờng.
Nhằm đánh giá dịch vụ ATM một cách đúng đắn và đẩy mạnh phát triển các dịch vụ thích hợp qua kênh ATM, ngoài các thông tin tƣờng minh nhƣ số lƣợng thẻ phát hành, số tiền giao dịch, loại thẻ giao dịch … BIDV cần tìm hiểu thêm các thuộc tính ẩn nhƣ liên hệ giữa các loại thẻ và thời gian, số tiền giao dịch ra sao, các loại hình giao dịch liên quan đến vùng miền nhƣ thế nào. Bài toán phân cụm dữ liệu đƣợc áp dụng nhằm khám phá các thuộc tính ẩn đó.
5.2. ÁP DỤNG VÀO CHƢƠNG TRÌNH ĐÃ XÂY DỰNG 5.2.1 Phƣơng pháp áp dụng 5.2.1 Phƣơng pháp áp dụng
Phƣơng pháp phân cụm K-means đã đƣợc trình bày tại chƣơng 2 và chƣơng trình đã xây dựng ở chƣơng 3 sẽ đƣợc áp dụng xử lý bài toán phân cụm giao dịch ATM.
Cụ thể, chƣơng trình phân cụm sẽ thực hiện trên các thuộc tính loại thẻ, loại giao dịch, số tiền giao dịch và thời gian giao dịch.
5.2.2 Đặc tả dữ liệu và cách thức thực hiện
File giao dịch ATM của Ngân hàng ĐT&PT Việt nam có định dạng nhƣ đƣợc nêu tại phụ lục 2.