PHỨC TẠP CỦA THUẬT TOÁN

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Một số thuật toán phân cụm dữ liệu Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 90 - 103)

CHƢƠNG 4 PHÂN CỤM DỮ LIỆU MỜ

4.3 THUẬT TOÁN PHÂN CỤM MỜ K-MEANS

4.3.2 PHỨC TẠP CỦA THUẬT TOÁN

Trong trƣờng hợp xấu nhất, thời gian thực hiện thuật toỏn nờu trờn nhƣ sau: - Để xỏc định khoảng cỏch giữa điểm tõm cỏc cụm đến cỏc phần tử, độ phức

tạp tớnh toỏn là O(nN).

- Với T vũng lặp, độ phức tạp tớnh toỏn là O(nKNT).

Độ phức tạp của thuật toỏn FCM tƣơng đƣơng với độ phức tạp của thuật toỏn k-means trong trƣờng hợp số đối tƣợng của tập dữ liệu cần phõn cụm là rất lớn.

Túm lại, thuật toỏn phõn cụm mờ FCM là một mở rộng của thuật toỏn k-means nhằm để khỏm phỏ ra cỏc cụm chồng lờn nhau.

KẾT LUẬN 1. Cỏc vấn đề đƣợc tỡm hiểu trong luận văn

Luận văn này tổng hợp những nột chớnh trong khai phỏ dữ liệu và đi sõu trỡnh bày về phõn cụm dữ liệu, một trong những kỹ thuật phổ biến nhất của khai phỏ dữ liệu. Trong lĩnh vực phõn cụm dữ liệu, chỳng ta đó cú đƣợc một số thành quả nhất định. Hiện nay, cỏc hệ thống cơ sở dữ liệu ngày càng phỏt triển đa dạng, nhu cầu về khỏm phỏ tri thức trong cơ sở dữ liệu ngày càng lớn, do đú việc nghiờn cứu cỏc mụ hỡnh dữ liệu mới và ỏp dụng đƣợc cỏc phƣơng phỏp phõn cụm dữ liệu mới là một xu thế tất yếu, vừa cú ý nghĩa trong khoa học cũng nhƣ trong thực tiễn.

Chƣơng 1, luận văn đó trỡnh bày những nột tổng quan về phõn cụm dữ liệu, bao gồm những vấn đề nhƣ khỏm phỏ tri thức, khai phỏ dữ liệu và phõn cụm dữ liệu. Trờn cơ sở đú, Chƣơng 2 đi sõu về giới thiệu về phõn cụm dữ liệu và giải thớch tại sao phõn cụm dữ liệu lại là một trong những phƣơng phỏp khai phỏ dữ liệu phổ biến nhất, cú nhiều ý nghĩa trong khoa học và thực tiễn. Luận văn cú túm lƣợc lại những kiến thức nền tảng của phõn cụm dữ liệu nhƣ cỏc kiểu dữ liệu, cỏc phộp đo và trờn cơ sở đú tổng hợp lại một số phƣơng phỏp tiếp cận trong phõn cụm dữ liệu. Đõy là chủ đề trọng tõm của nội dung luận văn. Trờn cơ sở đú, Chƣơng 3 tập trung giới thiệu tổng quỏt húa cỏc thuật toỏn phõn cụm dữ liệu, trong đú cú một số thuật toỏn là nền tảng của cỏc phƣơng phỏp tiếp cận, một số thuật toỏn là mở rộng, cải tiến của cỏc thuật toỏn cơ sở để giải quyết đƣợc đa dạng dữ liệu, xử lý cỏc vấn đề nhiễu hoặc ngoại lai. Cú chƣơng trỡnh thực nghiệm minh họa cho một số thuật toỏn phổ biến cú tớnh ứng dụng cao. Chƣơng 4 trỡnh bày về phõn cụm dữ liệu mờ. Phần Phụ lục trỡnh bày chƣơng trỡnh thực nghiệm mụ phỏng của thuật toỏn K- means, một trong những thuật toỏn cơ sở nhất của phõn cụm dữ liệu.

Túm lại, phõn cụm dữ liệu đang là một lĩnh vực đang đƣợc quan tõm nghiờn cứu nhiều, cú phạm vi ứng dụng rộng, liờn quan đến nhiều ngành khoa học khỏc nhau. Trong quỏ trỡnh làm luận văn, tỏc giả đó cố gắng nghiờn cứu, sƣu tầm, tập trung trỡnh bày cỏc vấn đề một cỏch tổng hợp nhất nhƣng do trỡnh độ và thời gian cú hạn, phạm vi trỡnh bày của lĩnh vực nghiờn cứu rộng, do vậy, luận văn này chắc chắn cũn cú nhiều hạn chế và thiếu sút, nhiều vấn đề cũn để mở cho những hƣớng nghiờn cứu tiếp theo. Tỏc giả rất mong nhận đƣợc cỏc ý kiến đỏnh giỏ, đúng gúp, chỉ bảo của cỏc thầy cụ giỏo và bạn bố.

2. Hƣớng nghiờn cứu tiếp theo

Trong thời gian tới, tụi sẽ tiếp tục tỡm hiểu cỏc mụ hỡnh dữ liệu đặc thự, lựa chọn kỹ thuật phõn cụm dữ liệu phự hợp nhằm xõy dựng đƣợc những ứng dụng trong thực tiễn. Hƣớng nghiờn cứu cụ thể nhƣ sau:

Tập trung nghiờn cứu phỏt triển những vấn đề cũn để mở dựa trờn những kiến thức cơ sở đó trỡnh bày.

Xõy dựng và phỏt triển cỏc kỹ thuật phõn cụm mờ.

Kết hợp cỏc kỹ thuật phõn cụm với cỏc kỹ thuật khỏc nhƣ luật kết hợp để giải quyết một số ứng dụng trong thực tế.

TÀI LIỆU THAM KHẢO Tiếng Việt

1. Bựi Cụng Cƣờng (2005): “Một số hướng mới trong cụng nghệ tri thức và khai phỏ dữ liệu. Viện toỏn học, Trƣờng thu “Hệ mờ và ứng dụng” lần thứ 4.

2. Bựi Cụng Cƣờng, Nguyễn Doón Phƣớc (2001): “Hệ mờ, hệ Nơron và ứng dụng”, Nhà xuất bản KHKT.

Tiếng Anh

3. K. Jain and R. C. Dubes (1988), Algorithms for Clustering Data, Printice Hall.

4. D. Fisher (1987), Knowledge acquisition via incremental conceptual clustering, Machine Learning.

5. D. Gibson, J. Kleinberg and P. Raghavan (1998), Clustering categorical data: An approach based on dynamic systems, In Proc, VLDB’98.

6. Douglass Cutting, David Karger, Jan Pedersen and John W. Tukey (1992), Scatter/Gather: A Cluster-based Approach to Browsing Large Document Collections, Proceedings of the 15th Annual International ACM/SIGIR Conference, Copenhagen.

7. Ho Tu Bao (2000), Knowledge Discovery And Data Mining, Institute of Information HiTechnology, National Center for Natural Science and Technology.

8. O. Zamir and O. Etzioni (1999), Groupera dynamic clustering interface to web search results, In Proceedings of the Eighth International World Wide Web Conference, Toronto, Canada, M. Steinbach, G.

9. L. Kaufman and P. J. Rousseeuw (1990), Finding Groups in Data: an Introduction to Cluster Analysis, John Wiley & Sons.

10. Spath H (1980): “Clustring Analysis Algorithms”, Ellis Horwood.

11. MacQuenn J.B: “Some methods for classification and Analysis of multivariate observations”. Processings of the Symposium on Mathematical Statistics and Probability, 5th Beckley, Vol. 1 University of California Press.

12. M. Ester, H.-P. Kriegel, J. Sander and X. Xu (1996), A density-based algorithm for discovering clusters in large spatial databases, KDD'96. 13. M. R. Anderberg (1973), Cluster Analysis for Applications, Academic

Press.

14. P. Arabie, L. J. Hubert and G. De Soete (1996), Clustering and Classification, World Scietific.

15. P. Michaud (1997), Clustering techniques, Future Generation Computer systems.

16. T. Zhang, R. Ramakrishnan and M. Livny (1996), BIRCH : an efficient data clustering method for very large databases, SIGMOD'96.

PHỤ LỤC

CHƢƠNG TRèNH THỬ NGHIỆM THUẬT TOÁN PHÂN CỤM K-MEANS Chƣơng trỡnh mụ phỏng thuật toỏn K-Means đƣợc viết ngụn ngữ Visual Basic, chạy trong mụi trƣờng Windows. Chƣơng trỡnh mụ phỏng việc phõn cụm thụng qua việc dịch chuyển trọng tõm của cụm. Mở đầu chƣơng trỡnh yờu cầu nhập số cụm và kớch chuột để nhập dữ liệu cho cụm. Trong quỏ trỡnh nhập liệu, điểm dữ liệu vừa nhập vào sẽ thuộc về một cụm nào đú dựa theo phộp đo khoảng cỏch của điểm đú với cỏc trọng tõm cụm. Khi điểm đú đƣợc sỏt nhập vào cụm nào đú để hỡnh thành cụm mới và trọng tõm của cụm sẽ thay đổi theo cho phự hợp. Giao diện của chƣơng trỡnh nhƣ hỡnh 5.1.

 Mó nguồn của chƣơng trỡnh:

Option Explicit

'---' ‘ Chương trình mô phỏng thuật toán K-MEANS’

' Khi ng-ời sử dụng nhập số l-ợng cụm và kích chuột để khởi tạo các cụm ban đầu ' Sau đó ng-ời sử dụng kích chuột để nhập các điểm dữ liệu thông qua tọa độ (X,Y). ' Ch-ơng trình sẽ tự động xác nhận điểm dữ liệu đó thuộc về cụm nào

' bằng cách so sánh khoảng cách của điểm vừa nhập với trọng tâm của cụm ' và các cụm mới đ-ợc thành lập thông qua việc di chuyển trọng tâm của cụm ' Giải thuật sử dụng thuộc loại học không giám sát của mạng nơron

'---' Private Data()

Private Centroid() As Single Private totalData As Integer Private numCluster As Integer Private Sub Form_Load() Dim i As Integer

Picture1.BackColor = &HFFFFFF Picture1.DrawWidth = 10

Picture1.ScaleMode = 3

lblExplanation.Caption = "Các cụm đ-ợc phân biệt bởi màu sắc và trọng tâm của cụm!"

numCluster = Int(txtNumCluster)

For i = 0 To numCluster - 1

If i > 0 Then Load lblCentroid(i) lblCentroid(i).Caption = i + 1 lblCentroid(i).Visible = False Next i

End Sub

Private Sub cmdReset_Click() Dim i As Integer Picture1.Cls Erase Data totalData = 0 For i = 0 To numCluster - 1 lblCentroid(i).Visible = False Next i txtNumCluster.Enabled = True End Sub

Private Sub txtNumCluster_Change() Dim i As Integer

For i = 1 To numCluster - 1 Unload lblCentroid(i) Next i

ReDim Centroid(1 To 2, 1 To numCluster) For i = 0 To numCluster - 1

If i > 0 Then Load lblCentroid(i) lblCentroid(i).Caption = i + 1 lblCentroid(i).Visible = False Next i

End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim colorCluster As Integer Dim i As Integer

txtNumCluster.Enabled = False totalData = totalData + 1

ReDim Preserve Data(0 To 2, 1 To totalData) Data(1, totalData) = X

Data(2, totalData) = Y

Call kMeanCluster(Data, numCluster)

Picture1.Cls

For i = 1 To totalData

colorCluster = Data(0, i) - 1

Y = Data(2, i)

Picture1.PSet (X, Y), QBColor(colorCluster) Next i

For i = 1 To min2(numCluster, totalData) lblCentroid(i - 1).Left = Centroid(1, i) lblCentroid(i - 1).Top = Centroid(2, i) lblCentroid(i - 1).Visible = True Next i

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

lblXYValue.Caption = X & "," & Y End Sub

'---' FUNCTIONS

' + kMeanCluster:

' + dist: Tính toán khoảng cách

' + min2: Trả lại giá trị nhỏ nhất giữa hai số

'---' Sub kMeanCluster(Data() As Variant, numCluster As Integer)

Dim i As Integer Dim j As Integer Dim X As Single

Dim min As Single Dim cluster As Integer Dim d As Single Dim sumXY()

Dim isStillMoving As Boolean

isStillMoving = True

If totalData <= numCluster Then Data(0, totalData) = totalData

Centroid(1, totalData) = Data(1, totalData) Centroid(2, totalData) = Data(2, totalData) Else

min = 10 ^ 10

X = Data(1, totalData) Y = Data(2, totalData) For i = 1 To numCluster

d = dist(X, Y, Centroid(1, i), Centroid(2, i)) If d < min Then

min = d cluster = i End If Next i

Data(0, totalData) = cluster

Do While isStillMoving

'Tính centroids mới

ReDim sumXY(1 To 3, 1 To numCluster) For i = 1 To totalData

sumXY(1, Data(0, i)) = Data(1, i) + sumXY(1, Data(0, i)) sumXY(2, Data(0, i)) = Data(2, i) + sumXY(2, Data(0, i)) sumXY(3, Data(0, i)) = 1 + sumXY(3, Data(0, i))

Next i

For i = 1 To numCluster

Centroid(1, i) = sumXY(1, i) / sumXY(3, i) Centroid(2, i) = sumXY(2, i) / sumXY(3, i) Next i

'Xác định tất cả dữ liệu theo centroids mới isStillMoving = False For i = 1 To totalData min = 10 ^ 10 X = Data(1, i) Y = Data(2, i) For j = 1 To numCluster

d = dist(X, Y, Centroid(1, j), Centroid(2, j)) If d < min Then

min = d cluster = j

End If Next j

If Data(0, i) <> cluster Then Data(0, i) = cluster isStillMoving = True End If Next i Loop End If End Sub

Function dist(X1 As Single, Y1 As Single, X2 As Single, Y2 As Single) As Single ' Tính toán khoảng cách Euclid

dist = Sqr((Y2 - Y1) ^ 2 + (X2 - X1) ^ 2) End Function

Private Function min2(num1, num2) ' Trả lại giá trị nhỏ nhất giữa 2 số If num1 < num2 Then

min2 = num1 Else

min2 = num2 End If

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Một số thuật toán phân cụm dữ liệu Luận văn ThS. Công nghệ thông tin 1 01 10 (Trang 90 - 103)

Tải bản đầy đủ (PDF)

(103 trang)