ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Công Nghệ Tri Thức
và Ứng Dụng
Phân cụm dữ liệu và ứng dụng tìm
những website tương tự
Giáo viên hướng dẫn
GS.TSKH. Hoàng Kiếm
Học viên: Huỳnh Lê Quốc Vương MHV: CH1101158
06 - 2012
LỜI MỞ ĐẦU: 3
I.QUÁ TRÌNH KHAI MỎ DỮ LIỆU: 4
1. Các bước khai khá dữ liệu: 4
1.1. Trích chọn dữ liệu 4
1.2. Tiền xử lý dữ liệu 6
1.3. Biến đổi dữ liệu 6
1.4. Khai thác dữ liệu 8
1.5. Đánh giá và biểu diễn tri thức 8
2. Một số bài toán trong Data Mining 8
II.PHÂN CỤM DỮ LIỆU: 9
1. Khái niệm về phân cụm dữ liệu 9
2. Độ đo tương tự 10
3. Những kỹ thuật tiếp cận trong phân cụm dữ liệu 11
3.1. Phương pháp phân chia 11
3.2. Phương pháp phân cấp 12
3.3. Phương pháp dựa trên mật độ 13
3.4. Phương pháp dựa trên lưới 13
4. Phân cụm dữ liệu bán giám sát 14
4.1. Giải thuật K-Means 15
4.2. Giải thuật Seeded-Kmeans 16
4.3. Thuật toán cho chương trình 17
III.KẾT QUẢ CHƯƠNG TRÌNH VÀ ĐÁNH GIÁ 18
1. Một số kết quả của chương trình 18
1
1.1. Thu thập dữ liệu một website 19
1.2. Tìm các website tương tự 21
1.3. Tìm các website theo chủ đề 21
1.4. Phân cụm các website 22
2. Đánh giá 25
2
Lời mở đầu:
Mỗi buổi sáng, khi bạn thức dậy đọc báo điện tử. Bạn lướt qua các nội dung
chính của một website nào đó. Sau đó bạn tiếp tục lướt qua website khác để
tìm đọc. Khi đó sẽ có những bài báo có nội dung khá giống nhau, điều này rất
phổ biến. Điều này làm tốn thời gian của bạn. Bạn muốn mình chỉ đọc chúng
một lần ở một nơi.
Sau khi diễn ra một lễ hội, hội họp, … sự kiện đặc biệt nào đó. Thì sẽ có rất
nhiều bài báo về thông tin này, sẽ có những bài giống nhau, khác nhau. Và bạn
sẽ phải tốn thời gian để lọc và kết hợp những nội dung bài báo này lại để có cái
nhìn chính xác về sự kiện đó.
Khi bạn muốn tìm hiểu về một thông tin nào đó, với nhiều công cụ tìm
kiếm, điển hình là Google, bạn sẽ nhận được hàng loạt các website có nội dung
liên quan đến thông tin đó. Bạn phải đọc, duyệt từng website. Nếu chưa đáp
ứng đủ yêu cầu của bạn, bạn sẽ phải đọc sang website khác. Nhưng lại gặp
phải trường hợp website này có nội dung y hệt website kia hay website này chỉ
khác website kia một ít nội dung. Hoặc có vài nội dung xen kẻ không hữu ích
cho bạn sẽ dễ làm bạn phân tâm, mất tập trung.
Ngoài ra, hằng ngày bạn muốn có các thông tin về thời sự, hay an ninh, …
ở các trang như … Bạn không muốn
phải duyệt từng trang để có được thông tin đó. Bạn muốn có một chương trình
nào đó tổng hợp lại các thông tin đó cho mình.
Bằng cách gom lại các website, chủ đề tương tự nhau. Ta sẽ kết hợp các dữ
liệu đó lại với nhau, lọc loại bỏ các nội dung giống nhau để đưa cho người
dùng một kết quả đầy đủ và tốt nhất. Điều này thì liên quan khá chặt chẽ đến
khái niệm data mining. Do đó chúng ta cùng tìm hiểu xem data mining là gì,
chương trình sẽ ứng dụng chúng như thế nào để đạt được vấn đề đặt ra.
3
I. Quá trình khai mỏ dữ liệu:
Trong vài thập kỷ gần đây, số lượng dữ liệu lưu trữ trong các hệ thống cơ
sở dữ liệu cũng như các ứng dụng cơ sở dữ liệu trong các lĩnh vực kinh doanh và
khoa học đã tăng lên một cách không ngờ. Những cơ sở dữ liệu rất lớn ra đời lên
đến hàng trăm hàng ngàn Terabyte. Trong khi công nghệ cho việc lưu trữ dữ liệu
có những bước tiến mạnh mẽ để đáp ứng kịp với yêu cầu phát triển thì các kỹ
thuật để phân tích dữ liệu phát triển chậm chạp cho tới khi một số công ty nhận
ra rằng các tri thức tiềm ẩn trong các nguồn dữ liệu khổng lồ của họ là một mỏ
quý cần phải được khai thác nhằm hỗ trợ công việc kinh doanh vốn càng ngày
càng phải đối mặt với những điều kiện cạnh tranh khốc liệt. Họ nhận ra rằng dữ
liệu được lưu trữ trong cơ sở dữ liệu chỉ là phần nổi của một núi băng thông tin.
Kỹ thuật rút trích tri thức từ các kho, cơ sở dữ liệu lớn được gọi là Data Mining.
Các lợi ích thấy rõ của Data Mining đã thúc đẩy chúng phát triển nhanh chóng
và rộng lớn trong những năm gần đây. Quá trình khai phá dữ liệu có thể chia
thành các bước thực hiện như sau:
1. Các bước khai khá dữ liệu:
1.1. Trích chọn dữ liệu
- Ở bước này các dữ liệu liên quan trực tiếp đến nhiệm vụ của quá trình
KDD sẽ được thu thập từ các nguồn dữ liệu ban đầu.
- Với giao thức http ta sẽ kết nối tới các URL để thu thập nguồn dữ liệu
như (html, image, pdf, …).
- Ta sẽ có nhiều luồng kết nối tới nhiều URL để thu thập dữ liệu. Từ
nguồn dữ liệu này ta sẽ lấy được những URL khác, ta đưa những URL
đó vào hàng đợi để chờ kết nối đến. Giống như hình dưới đây
4
Ở đây ta duyệt các trang của một website bằng cách tìm sẽ tìm kiếm
theo chiều rộng
- Gọi W là danh sách các website ta cần duyệt.
- Gọi P là danh sách các trang cần duyệt của một website. P ban đầu chứa
địa chỉ website cần duyệt
- Ngừng duyệt webiste khi đã duyệt hết N trang của website hay website
không còn trang nào để duyệt
- Sau đây là các bước ta duyệt một website
While ( điều kiện duyệt )
{
Lấy trang đầu tiên trong P
Nếu chưa duyệt
Tìm các liên kết bên trong trang, đưa vào cuối danh sách P
Tìm các liên kết bên ngoài, đưa vào cuối danh sách W
5
Đánh dấu đã duyệt
}
- Ta làm tương tự với danh sách W
Trong phạm vi bài thu hoạch này chương trình chỉ xét duyệt với các
website có nội dung là tiếng việt. Các website không phải là tiếng việt thì
chương trình sẽ không duyệt.
1.2. Tiền xử lý dữ liệu
- Có nhiệm vụ làm sạch, loại bỏ nhiễu, rút gọn và rời rạc hóa dữ liệu.
- Với các trang html ta sẽ trích lấy văn bản.
- Sau đó loại các ký tự dư thừa như (~!@#$, …)
- Tiếp đến lọc thành các từ dựa vào từ điển hay bộ phân tích cú pháp.
- Loại bỏ các stop-word (dựa vào danh sách stop-word, danh sách này sẽ
được cập nhật theo thời gian bởi máy hay người)
- Đếm số lần xuất hiện của các từ
1.3. Biến đổi dữ liệu
- Nhằm chuẩn hóa và làm mịn dữ liệu để chuyển dữ liệu về dạng thuận
lợi nhất phục vụ cho việc khai phá.
- Lấy n từ xuất hiện nhiều nhất, chuyển số lần xuất hiện về %
Bước 2 và 3 có thể được tóm tắt như hình dưới đây
Lưu trữ thông tin của webiste
6
Các trang HTML
của một website
Chuyển về dạng văn bản
Kho lưu trữ các
trang dạng văn
bản
Vì sau này thuật toán phân tích câu, tách từ có thể thay đổi hay ta cần
phải chạy nhiều thuật toán một lúc để tìm kết quả tốt nhất, cho nên phải lưu
trữ lại các trang HTML (ở dạng văn bản)
Phân tích lấy các top-word của website
7
Từ điển / bộ phân
tích cú pháp câu
Tách văn bản thành các câu
Loại bỏ các câu thừa
Tách các câu thành các từ
Loại bỏ các stop-word
Danh sách các
stop-word
Đếm số lần xuất hiện của
các từ
Kho lưu trữ các
trang dạng văn bản
Lấy các từ xuất hiện nhiều
Chuyển số lần xuất hiện
thành phần trăm
Kho lưu trữ các
top-word
1.4. Khai thác dữ liệu
- Dùng các kỹ thuật phân tích để khai thác dữ liệu, trích chọn các mẫu
thông tin cần thiết,… công đoạn này được xem là mất thời gian nhất và
cũng là quan trọng nhất trong quá trình khai thác dữ liệu.
- Đối với chương trình này, ban đầu ta sử dụng thuật toán phân cụm bán
giám sát là Seed-KMeans để thử nghiệm với dữ liệu text. Sẽ được nói
kỹ hơn trong phần phân cụm dữ liệu
1.5. Đánh giá và biểu diễn tri thức
- Các thông tin và mối liên hệ giữa chúng vừa khám phá trong công
đoạn trước được biểu diễn dưới các dạng trực quan đồng thời được
đánh giá theo những tiêu chí nhất định.
2. Một số bài toán trong Data Mining
- Phân lớp và dự đoán (Classification and Prediction): đưa một đối
tượng vào một trong các lớp đã biết trước. Phân lớp và dự đoán còn
được gọi là học có giám sát. Ví dụ từ nguồn dữ liệu thu thập từ khách
hàng, sử dụng kỹ thuật phân lớp, ngân hàng có thể tìm ra các luật để
phân chia khách hàng ra làm hai loại: loại thứ nhất nên đầu tư và loại
thứ hai không nên đầu tư.
- Luật kết hợp (Association rules): là lớp bài toán để tìm ra sự liên kết
giữa một thuộc tính với các thuộc tính khác. Ví dụ: (tuổi < 25) và (thu
nhập > 3 triệu) thì (xe sử dụng = Dream)
- Phân tích chuỗi theo thời gian: giống như khai phá luật kết hợp nhưng
có thêm tính thứ tự và thời gian. Giả sử ta có một cơ sở dữ liệu chứa các
thông tin về các thảm họa tự nhiên. Từ dữ liệu này nếu ta có thể kết luận
là nếu có lụt ở Huế thì ngày tiếp theo sẽ có mưa lũ ở Đà Nẵng thì đây là
một luật có dạng nối tiếp. Những luật loại này rất có ích cho công việc
dự báo.
8
- Phân cụm (Clustering): Nhóm các đối tượng thành từng cụm dữ liệu.
Đây là phương pháp học không giám sát. Ví dụ trong lập quy hoạch đô
thị, phân cụm giúp cho việc nhận dạng cá nhóm nhà theo kiến trúc và vị
trí địa lý để lập quy hoạch đô thị hợp lý.
- Mô tả khái niệm: Mô tả, tổng hợp và tóm tắt khái niệm, ví dụ như tóm
tắt văn bản.
Ở đây ta quan tâm về phân cụm dữ liệu chứ không phải phân loại dữ
liệu bởi vì ta sẽ không biết xác định được các đặc tính chính xác của một
cụm dữ liệu là gì, bao nhiêu lớp, chủ đề được phân loại.
II. Phân cụm dữ liệu:
1. Khái niệm về phân cụm dữ liệu
Phân cụm dữ liệu là một kỹ thuật phát triển mạnh mẽ trong nhiều năm
trở lại đây do các ứng dụng và lợi ích to lớn của nó trong các lĩnh vực trong
thực tế. Ở một mức cơ bản nhất người ta định nghĩa phân cụm dữ liệu như
sau :
- Phân cụm dữ liệu là một kỹ thuật trong Data mining nhằm tìm kiếm,
phát hiện các cụm, các mẫu dữ liệu tự nhiên tiềm ẩn và quan trọng trong
tập dữ liệu lớn để từ đó cung cấp thông tin, tri thức cho việc ra quyết
định.
- Do đó, phân cụm dữ liệu là quá trình phân chia một tập dữ liệu ban đầu
thành các cụm dữ liệu sao cho các đối tượng trong một cụm thì “tương
tự” nhau và các đối tượng trong các cụm khác nhau thì “phi tương tự”
với nhau. Số cụm dữ liệu được xác định bằng kinh nghiệm hoặc bằng
một số phương pháp phân cụm.
9
Sau khi xác định các đặc tính của dữ liệu, người ta đi tìm cách thích hợp
để xác định "khoảng cách" giữa các đối tượng, hay là phép đo tương tự dữ
liệu. Đây chính là các hàm để đo sự giống nhau giữa các cặp đối tượng dữ
liệu, thông thường các hàm này hoặc là để tính độ tương tự (Similar) hoặc
là tính độ phi tương tự (Dissimilar) giữa các đối tượng dữ liệu. Giá trị của
hàm tính độ đo tương tự càng lớn thì sự giống nhau giữa đối tượng càng lớn
và ngược lại, còn hàm tính độ phi tương tự tỉ lệ nghịch với hàm tính độ
tương tự.
Trong quá trình phân cụm dữ liệu thì vấn đề trở ngại lớn nhất đó là
nhiễu (noise). Nhiễu xuất hiện do trong quá trình thu thập thông tin, dữ liệu
thiếu chính xác hoặc không đầy đủ. Vì vậy chúng ta cần phải khử nhiễu
trong quá trình tiến hành phân cụm dữ liệu.
Các bước của một bài toán phân cụm dữ liệu gồm:
- Xây dựng hàm tính độ tương tự
- Xây dựng các tiêu chuẩn phân cụm
- Xây dựng mô hình cho cấu trúc dữ liệu
- Xây dựng thuật toán phân cụm và xác lập các điều kiện khởi tạo
- Xây dựng các thủ tục biểu diễn và đánh giá kết quả phân cụm
2. Độ đo tương tự
Có nhiều kiểu dữ liệu như kiểu thuộc tính nhị phân, kiểu thuộc tính
khoảng, kiểu thuộc tính định danh, kiểu thuộc tính thứ tự, kiểu thuộc tính tỷ
lệ, … và ứng với mỗi kiểu dữ liệu thì có một hàm tính độ đo tương tự để
xác định khoảng cách giữa hai phân tử của cùng một kiểu dữ liệu. Tất cả
các độ đo đều được xác định trong không gian metric. Bất kỳ một metric
nào cũng là một độ đo nhưng ngược lại thì không đúng. Độ đo ở đây có thể
là tương tự hoặc phi tương tự. Một tập dữ liệu X là không gian metric nếu:
10
- Với mỗi cặp x,y thuộc X đều xác định được một số thực d(x,y) theo một
quy tắc nào đó và được gọi là khoảng cách của x,y.
- Quy tắc đó phải thoả mãn các tính chất sau:
o d(x,y) > 0 nếu x ≠ y
o d(x,y) = 0 nếu x = y
o d(x,y) = d(y,x)
o d(x,y) <= d(x,z) + d(z,y)
Ví dụ vài top-word của
Key = xã hội Value = 1.9525532
Key = bạn đọc Value = 1.5920393
Key = ý kiến Value = 1.4715848
Key = tài chính Value = 1.4375942
… …
Thì khoảng cách giữa 2 website dựa trên top-word được tính như sau:
d(x, y)
Với x là website A, y là website B. Gọi s là tổng top-word của x và y, n
là tổng số top-word của s, px
i
là phần trăm của từ thứ i của s trong x, py
i
là
phần trăm của từ thứ i của s trong y.
3. Những kỹ thuật tiếp cận trong phân cụm dữ liệu
3.1. Phương pháp phân chia
Cho trước một cơ sở dữ liệu với n đối tượng hay các bộ dữ liệu, một
phương pháp phân chia được xây dựng để chia dữ liệu thành k phần, mỗi
phần đại diện cho một cụm, k ≤ n. Đó là phân loại dữ liệu vào trong k
nhóm, chúng thoả các yêu cầu sau: Mỗi nhóm phải chứa ít nhất một đối
11
tượng, mỗi đối tượng phải thuộc về chính xác một nhóm. Cho trước k là số
lượng các phần chia cần xây dựng, phương pháp phân chia tạo lập phép
phân chia ban đầu. Sau đó nó dùng kỹ thuật lặp lại việc định vị, kỹ thuật
này cố gắng cải thiện sự phân chia bằng cách gỡ bỏ các đối tượng từ nhóm
này sang nhóm khác. Tiêu chuẩn chung của một phân chia tốt là các đối
tượng trong cùng cụm là "gần" hay có quan hệ với nhau, ngược lại, các đối
tượng của các cụm khác nhau lại "tách xa" hay rất khác nhau. Có nhiều tiêu
chuẩn khác nhau để đánh giá chất lượng các phép phân chia. Trong phân
cụm dựa trên phép phân chia, hầu hết các ứng dụng làm theo một trong hai
phương pháp heuristic phổ biến: (1) Giải thuật k-means với mỗi cụm được
đại diện bởi giá trị trung bình của các đối tượng trong cụm; (2) Giải thuật k-
medoids với mỗi cụm được đại diện bởi một trong số các đối tượng định vị
gần tâm của cụm. Các phương pháp phân cụm heuristic này làm việc tốt khi
tìm kiếm các cụm có hình cầu trong các cơ sở dữ liệu có kích thước từ nhỏ
tới trung bình. Để tìm ra các cụm với các hình dạng phức tạp và phân cụm
cho các tập dữ liệu rất lớn, các phương pháp dựa trên phân chia cần được
mở rộng. Ta sẽ xem xét kỹ hơn ở mục 4
3.2. Phương pháp phân cấp
Một phương pháp phân cấp tạo một phân tích phân cấp tập các đối
tượng dữ liệu đã cho. Một phương pháp phân cấp có thể được phân loại
như tích đống hay phân chia, dựa trên việc phân ly phân cấp được hình
thành như thế nào. Tiếp cận tích đống còn được gọi là tiếp cận "bottom-
up", lúc đầu mỗi đối tượng lập thành một nhóm riêng biệt. Nó hoà nhập lần
lượt các đối tượng hay các nhóm gần nhau với nhau cho tới khi tất cả các
nhóm được hoà nhập thành một (mức cao nhất của hệ thống phân cấp), hay
cho tới khi một gặp một điều kiện kết thúc.
Tiếp cận phân ly còn được gọi là tiếp cận "top - down", lúc đầu tất cả
các đối tượng trong cùng một cụm. Trong mỗi lần lặp kế tiếp, một cụm
12
được chia vào trong các cụm nhỏ hơn cho tới khi cuối cùng mỗi đối tượng
trong một cụm hay cho tới khi gặp một điều kiện kết thúc.
Sự kết hợp của việc lặp lại việc định vị và phân ly phân cấp sẽ thuận lợi
bởi trước tiên sử dụng giải thuật phân ly phân cấp và sau đó cải tiến kết quả
sử dụng định vị lặp. Nhiều giải thuật phân cụm mở rộng như BIRCH và
CURE được phát triển dựa trên một tiếp cận tích hợp như vậy.
3.3. Phương pháp dựa trên mật độ
Hầu hết các phương pháp phân chia cụm các đối tượng dựa trên khoảng
cách giữa các đối tượng. Các phương pháp như vậy có thể chỉ tìm được các
cụm có hình cầu và sẽ gặp khó khăn khi các cụm đang khám phá lại có hình
dạng tuỳ ý. Các phương pháp phân cụm được phát triển dựa trên khái niệm
mật độ. Ý tưởng chung đó là tiếp tục phát triển cụm cho trước với điều kiện
là mật độ (số các đối tượng hay các điểm dữ liệu) trong "lân cận" vượt quá
ngưỡng, tức là đối với mỗi điểm dữ liệu trong phạm vi một cụm cho trước
thì lân cận trong vòng bán kính đã cho chứa ít nhất một số lượng điểm tối
thiểu. Một phương pháp như vậy có thể được dùng để lọc ra nhiễu (các
outlier) và khám phá ra các cụm có hình dạng bất kỳ.
BSCAN là một phương pháp dựa trên mật độ điển hình, nó tăng trưởng
các cụm theo một ngưỡng mật độ. OPTICS là một phương pháp dựa trên
mật độ, nó tính toán một thứ tự phân cụm tăng dần cho phép phân tích cụm
tự động và tương tác.
3.4. Phương pháp dựa trên lưới
Một phương pháp dựa trên lưới lượng tử hoá không gian đối tượng vào
trong một số hữu hạn các ô hình thành nên một cấu trúc lưới. Sau đó nó
thực hiện tất cả các thao tác phân cụm trên cấu trúc lưới (tức là trên không
gian đã lượng tử hoá). Thuận lợi chính của tiếp cận này là thời gian xử lý
13
nhanh chóng của nó độc lập với số các đối tượng dữ liệu và chỉ tuỳ thuộc
vào số lượng các ô trong mỗi chiều của không gian lượng tử. STING là một
ví dụ điển hình của phương pháp dựa trên lưới. WaveCluster và CLIQUE là
hai giải thuật phân cụm dựa trên cả lưới và mật độ.
Nhiều giải thuật phân cụm tích hợp các ý tưởng của một vài phương
pháp phân cụm, bởi vậy việc phân loại giải thuật đó không dễ như loại giải
thuật chỉ phụ thuộc vào duy nhất một loại phương pháp phân cụm. Hơn
nữa, nhiều ứng dụng có thể có giới hạn phân cụm với yêu cầu tích hợp một
số kỹ thuật phân cụm.
4. Phân cụm dữ liệu bán giám sát
Trong những năm trở lại đây, do phương pháp phân cụm dữ liệu không
giám sát còn nhiều nhược điểm vì vậy dựa trên học không giám sát và học
có giám sát đã ra đời một phương pháp phân cụm dữ liệu mới đó là phương
pháp phân cụm dữ liệu nửa giám sát. Phương pháp phân cụm nửa giám sát
không phải là một phương pháp phân cụm hoàn thiện nhưng nó đã phần
nào khắc phục được những hạn chế và phát huy ưu điểm của phương pháp
phân cụm không giám sát.
Phân cụm nửa giám sát là phương pháp sử dụng các thông tin bổ trợ để
hướng dẫn cho quá trình phân cụm. Các thông tin bổ trợ có thể được cho
dưới dạng tập các cặp ràng buộc hoặc một tập nhỏ một số dữ liệu được dán
nhãn. Công việc xác định những tập ràng buộc hay những tập dữ liệu được
dán nhãn được thực hiện bởi người phân cụm. Việc xác định này tuỳ thuộc
vào kinh nghiệm của người phân cụm hoặc có thể dựa vào các tiêu chuẩn
khác nhau tuỳ theo mục đích của việc phân cụm.
Trong phần sau ta cùng xem thuật toán: Seeded-KMeans. Trước hết ta
hãy xem lại thuật toán k-means
14
4.1. Giải thuật K-Means
Giải thuật k-means lấy tham số đầu vào k và phân chia một tập n đối
tượng vào trong k cụm để cho kết quả độ tương đồng trong cụm là cao
trong khi độ tương đồng ngoài cụm là thấp. Độ tương đồng cụm được đo
khi đánh giá giá trị trung bình của các đối tượng trong cụm, nó có thể được
quan sát như là "trọng tâm" của cụm.
Giải thuật xử lý như sau: trước tiên nó lựa chọn ngẫu nhiên k đối tượng,
mỗi đối tượng đại diện cho một trung bình cụm hay tâm cụm. Đối với
những đối tượng còn lại, một đối tượng được ấn định vào một cụm mà nó
giống nhất dựa trên khoảng cách giữa đối tượng và trung bình cụm. Sau đó
cần tính giá trị trung bình mới cho mỗi cụm. Xử lý này được lặp lại cho tới
khi hàm tiêu chuẩn hội tụ. Bình phương sai số tiêu chuẩn thường được
dùng, định nghĩa như sau:
E = |x – m
i
|
2
với x là điểm trong không gian, đại diện cho đối tượng cho trước, mi là
trung bình cụm Ci (cả x và mi đều là nhiều chiều). Tiêu chuẩn này cố gắng
cho kết quả k cụm càng đặc, càng riêng biệt càng tốt.
Giải thuật xác định k phần phân chia thoả mãn tối thiểu hoá bình
phương hàm sai số. Nó làm việc tốt khi các cụm là các đám mây đặc tách
biệt so với những cụm khác. Phương pháp này có thể mở rộng có hiệu quả
khi xử lý các tập dữ liệu lớn bởi độ phức tạp tính toán của giải thuật là
O(nkt), với n là số đối tượng, k là số cụm, t là số lần lặp. Thông thường k
<< n và t << n. Phương pháp thường kết thúc tại một điểm tối ưu cục bộ.
Giải thuật k-means đối với việc phân chia dựa trên giá trị trung bình của
các đối tượng trong cụm.
Đầu vào: Số cụm k và một tập dữ liệu chứa n đối tượng
15
Đầu ra: Một tập k cụm - cụm tối thiểu hoá bình phương sai số tiêu
chuẩn.
Giải thuật:
o Chọn tuỳ ý k đối tượng với tư cách là các tâm cụm ban đầu
o Repeat
Ấn định (lại) mỗi đối tượng về một cụm mà đối tượng đó giống nhất,
dựa trên giá trị trung bình của các đối tượng trong cụm
Cập nhật các trung bình cụm, tức là tính giá trị trung bình của các
đối tượng trong cụm đó
o Until không có sự thay đổi nào
Tuy nhiên, phương pháp k-means chỉ áp dụng khi trung bình của một
cụm được xác định. Không phải ứng dụng nào cũng có thể áp dụng kỹ thuật
này, ví dụ những dữ liệu bao hàm các thuộc tính xác thực. Về phía các user,
họ phải chỉ rõ k - số cụm, cần sớm phát hiện ra sự bất lợi. Phương pháp k-
means không thích hợp với việc tìm các cụm có hình dáng không lồi hay
các cụm có kích thước khác xa nhau. Hơn nữa, nó nhạy cảm với các điểm
dữ liệu nhiễu và outlier, một số lượng nhỏ dữ liệu như vậy về căn bản có
ảnh hưởng tới giá trị trung bình.
4.2. Giải thuật Seeded-Kmeans
Với x là website A, y là website B. Gọi s là tổng top-word của x và y, n
là tổng số top-word của s, px
i
là phần trăm của từ thứ i của s trong x, py
i
là
phần trăm của từ thứ i của s trong y.
Giải thuật:
Đầu vào: Số cụm k, tập giống và một tập dữ liệu chứa n đối tượng
Đầu ra: Một tập k cụm - cụm tối thiểu hoá bình phương sai số tiêu
chuẩn.
o Khởi tạo k cụm từ tập giống
16
o Repeat
Ấn định (lại) mỗi đối tượng về một cụm mà đối tượng đó giống nhất,
dựa trên giá trị tâm cụm
Cập nhật các trung bình cụm, tức là tính giá trị trung bình của các
đối tượng trong cụm đó
o Until không có sự thay đổi nào
Thuật toán Seeded-Kmeans bằng cách khởi tạo K cụm từ tập giống đã
giúp cho người dùng có thể can thiệp và điều chỉnh quá trình phân cụm dữ
liệu nhằm đạt được một kết quả phân cụm theo ý muốn của mình một cách
nhanh nhất.
4.3. Thuật toán cho chương trình
Giải thuật k-means, seed-kMeans rất nhạy với các giá trị nhiễu, do vậy
thay vì lấy tất cả các đối tượng trong cụm để tính giá trị trung bình cụm thì
từ các đối tượng giống ban đầu ta chỉ chọn thêm một đối tượng mà làm
giảm hàm mục tiêu (là tổng các độ đo không tương đồng của tất cả các đối
tượng tới giá trị trung bình cụm). Ta có thể xét duyệt tất cả các đối tượng
của cụm để có được hàm mục tiêu tốt nhất
Giải thuật
Đầu vào: Số cụm k, tập giống và một tập dữ liệu chứa n đối tượng
Đầu ra: Một tập k cụm - cụm tối thiểu hoá bình phương sai số tiêu
chuẩn.
o Khởi tạo k cụm từ tập giống
o Repeat
Ấn định (lại) mỗi đối tượng về một cụm mà đối tượng đó giống nhất,
dựa trên giá trị tâm cụm
Tính hàm mục tiêu
17
Thêm một đối tượng vào tâm cụm nếu như việc này làm giảm hàm
mục tiêu
o Until không có sự thay đổi nào;
Tuy nhiên, vì để đạt được mục đích như phần mở đầu đặt ra thì tất nhiên
số k cụm không thể do người dùng xác định. Vì vậy, với mỗi website mà ta
thu thập dữ liệu ta sẽ xác định các chủ đề trong website và mỗi chủ đề sẽ
chiếm bao nhiêu phần trăm của website. Ví dụ website tuoitre.vn chủ đề
“thế giới” chiếm 20%, “kinh tế” chiếm 15%, … Như thế việc phân cụm
website sẽ được thực hiện trên những chủ đề này. Thông thường một
website sẽ có nhiều chủ đề, do đó các website nhiều chủ đề này sẽ không
được phân cụm vào một chủ đề cụ thể nào hết. Mà sẽ được phân cụm vào
nhiều chủ đề, mỗi chủ đề sẽ ứng với bao nhiêu phần trăm đó. Do đó người
dùng sẽ dễ dàng tìm được một website chuyên về chủ đề nào đó (có nghĩa
là phần trăm về chủ đề đó cao) hay một website tổng hợp.
Một phần vì thời gian gấp rút, một phần vì chưa tìm ra được dữ liệu từ
điển (từ vựng) Tiếng Việt nên chương trình chưa có chức năng này. Phần
dưới đây sẽ cho ta thấy một số kết quả cũng như đánh giá, nâng cao chất
lượng chương trình.
III. Kết quả chương trình và đánh giá
1. Một số kết quả của chương trình
Chương trình được thực hiện trên máy tính Pentium® Dual-Core CPU
E6300, RAM: 2GB. Hệ điều hành Windows 7 Professional 64 bit.
Yêu cầu máy cài JRE 7u4 hoặc phiên bản cao hơn.
Yêu cầu máy được kết nối với Internet.
Chương trình gồm 1 file jar (ClusteringSites.jar) và 1 thư mục
(DATA_STORAGE) chứa dữ liệu của chương trình
18
Số lượng website thu thập được chỉ là 1083 (chỉ thu thập trên các website
tiếng việt) do đó kết quả của chương trình sẽ không được chính xác nếu dữ
liệu ra không có hoặc có ít trong cơ sở dữ liệu.
Dưới đây sẽ trình bày một số thao tác với chương trình cũng như kết quả
chương trình đạt được.
1.1. Thu thập dữ liệu một website
Trong cmd của Windows ta nhập lệnh sau
java -jar file_jar folder -a website_name
File_jar: đường dẫn tới file ClusteringSites.jar
Folder: đường dẫn tới thư mục DATA_STORAGE
Ví dụ:
java -jar E:\ClusteringSites.jar E:\DATA_STORAGE -a
Trong quá trình thu thập chương trình sẽ hiển thị những link đang dò xét
(trong hình dưới đang thu thập trên )
19
Sau khi thu thập xong (chương trình báo “COMPLETED . . .”) dữ liệu sẽ
được lưu vào thư mục DATA_STORAGE\WEBSITE_DATA
Chú ý: Vì JRE mặc định bộ nhớ heap hơi nhỏ, nên trong quá trình thu
thập dữ liệu website dễ bị thông quá lỗi OutOfMemory (Java Heap
Space). Để khắc phục lỗi này thì ta tăng bộ nhớ heap cho JRE bằng cách
thêm tham số “Xmx1000m” vào sau từ khóa java.
Ví dụ:
20
java -Xmx1000m -jar E:\ClusteringSites.jar E:\DATA_STORAGE -a
Số 1000 ở đây là số Mb ta yêu cầu bộ nhớ heap cho JRE.
Khi chương trình gặp lỗi OutOfMemory (Java Heap Space) thì chương
trình vẫn tiếp tục thu thập dữ liệu, nhưng những dữ liệu thu thập được
trước đó sẽ bị mất.
1.2. Tìm các website tương tự
Trong cmd của Windows ta nhập lệnh sau
java -jar file_jar folder -fs website_name
Ví dụ:
java -jar E:\ClusteringSites.jar E:\DATA_STORAGE -fs
Ta tìm được các website tương tự như :
1.3. Tìm các website theo chủ đề
Ta mở file topic.txt trong thư mục DATA_STORAGE để nhập vào
chủ đề (một hay hai từ). Ví dụ ở đây ta nhập vào hai từ “nhạc trẻ”.
21
Chú ý: File topic.txt được lưu lại dưới bảng mã Unicode (Unicode 16)
Trong cmd của Windows ta nhập như sau
java -jar file_jar folder -ft
Ví dụ:
java -jar E:\ClusteringSites.jar E:\DATA_STORAGE -ft
Kết quả thu được cho các website liên quan đến “nhạc trẻ”
1.4. Phân cụm các website
Như đã nói trong phần Thuật toán của chương trình, việc phân
cụm các website bằng các thuật toán như k-means, seed-Kmeans, … như
đã bàn luận ở trên không phù hợp với mục tiêu yêu cầu. Vì vậy phần này
chỉ để ta nhìn nhận lại thuật toán seed-Kmeans tác động ra sao đối với dữ
liệu chương trình
22
Trong thư mục DATA_STORAGE ta mở file seeds.txt là tập hạt
giống. Nhập vào vế trái là tên cụm, vế phải là site hạt giống, hai vế cách
nhau bởi dấu bằng “=”
Trong cmd Windows ta nhập lệnh như sau
java -jar file_jar folder -c
Ví dụ:
java -jar E:\ClusteringSites.jar E:\DATA_STORAGE –c
Sau khi chương trình thực hiện xong
23
Ta vào xem kết quả trong tập tin output.txt nằm trong thư mục
DATA_STORAGE
24