Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 20 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
20
Dung lượng
353,05 KB
Nội dung
Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng Chương I: Giới thiệu bài toán phân cụm và khai phá dữ liệu I.Giới thiệu II. Tách tuyến tính hoặc lồi 1.Tách tuyến tính. 2 .Tách toàn phương lồi. III. Côm theo tâm 1.Trường hợp .||),( 1 ∑ = −= n j jj xaxad 2.Trường hợp .||||),( 1 2 ∑ = −= n j jj xaxad 3.Tối ưu đơn điệu. IV. Côm theo siêu phẳng V.Phõn cụm trên mặt phẳng và mặt cầu 1. Biểu đồ Voronoi. 2. bài toán k-median liên tục. 3.Phân bổ k điểm trên hình cầu. Chương II: Ý tưởng thuật toán I. Cách giải quyết II. Trường hợp gặp phải II. Trường hợp gặp phải Chương III: Phân tích và thiết kế I. Các bươc thực hiện I. Các bươc thực hiện II.Xõy dùng lớp. 1.Các thuộc tính của đối tượng 2.Các phương thức của đối tượng. III. Giới thiệu chương trình Chương IV: Kết luận I. Nhõn xột và đánh giá kết quả 1.Sè điểm n=1000; Số cụm 10 2.Sè điểm n=2000; Số cụm 20 3.Sè điểm n=3000; Số cụm 30 4.Nhõn xét II. Kết luận Chương I: Giới thiệu bài toán phân cụm và khai phá dữ liệu 1 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng I.Giới thiệu Trong nhiều tình huống thực tế ta gặp vấn đề sau đây: ta có một tập hợp đối tượng nào đó và muốn chia tập đó ra thành một số cụm (nhóm), mỗi cụm gồm các phần tử gần nhau(giống nhau) thưo một nghĩa nhất định. Vấn đề này đã xuất hiện từ lâu, vào những năm 60 thế kỷ trước mới được chú ý và nghiên cứu bằng phương pháp toán học, bắt đầu ở hai lĩnh vực: phân loại trong sinh học và nhận dạng trong việc dạy máy. Ngày nay phạm vi ứng dụng của bài toán chia côm bao gồm nhiều lĩnh vực, từ sinh học, tâm lý học, y học, kỹ thuật, cho đến kinh tế tiếp thị, v.v… Vi dô: 1.(Y học) Bệnh nhân là các dữ liệu vật lý về những bệnh nhân bị nghi ung thu vú và ta muốn dùa và dữ liệu đú phõn cỏc đối tượng thành hai nhóm u lành và u ác. 2.(Kinh tế) Đối tượng là các dữ liệu tài chính về những doanh nghiệp đang hoạt động và ta muốn dùa vào các dữ liệu Êy phõn cỏc đối tượng thành hai nhóm: Doanh nghiệp trên đà thất bại và doanh nghiệp đang làm ăn bình thường. Có nhiều cách tiếp cận khác nhau đối với vấn đề đó nờu: thống kê, máy móc, tối ưu, trong đó cách tiếp cận tối ưu đã tỏ ra có hiệu quả hơn cả. Với bài toán này chúng ta tiếp cận bài toán dùng tối ưu toàn cục. II. Tách tuyến tính hoặc lồi Bài toán đặt ra như sau: cho hai tập A={ r aaa ,,, 21 } và B={ r bbb ,,, 21 }, hóy tìm một hàm )(xf thuộc một líp hàm cho trước F tách hai tập A,B, nghĩa là sao cho 1)( 1)( > < j i bf af .,,2,1 .,,2,1 sj ri = = Bài toán này có thể không có lời giải cho nên được thay bằng một bài toán khác như sau: Giả sử ta chon Fxf ∈ )( là hàm tách. Khi Êy, nếu 01)( <− i af thì i a được xếp đúng loại, còn nếu trái lại thì i a được xếp sai loại, với sai số được đo bằng hiệu )(1 i af − . Vậy trong mọi trường hợp, sai số xếp loại i a bởi )(xf có thể đo bằng biểu thức: { } 1)(,0max: −= i i afy . Tương tự như thế sai số xếp loại j b có thể đo bằng biểu thức: { } 1)(,0max: +−= j i bfz . Thành thử sai số xếp loại bởi hàm )(xf có thể đánh giá bởi sè ∑ ∑ = = += r i s j ji z s y r fe 1 1 . 11 )( Bài toán đặt ra bõy giờ là (P) tìm Fxf ∈ )( sao cho đạt cực tiểu của )( fe : }.:}1)(,0max{ 1 }1)(,0max{ 1 min{ 11 ∑∑ == ∈+−+− s j j r i i Ffbf s af r Thông thường người ta xét trường hợp F là họ hàm tuyến tính hoặc toàn phương. 1.Tách tuyến tính. Vì )(xf chỉ cần xác định xê xích một hằng số nên ta chỉ xét những hàm tuyến tính có dạng 0 ,)( wxwxf −= với + ∈∈ RwRw n 0 , và bài toán trở thành 2 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng 00 ,,11, ,,11, 11 min 0 0 11 ≥≥ =++−≥ =−−≥ + ∑∑ == zy sjwbwz riwawyts z s y r j j i i s j j r i i Đây là một quy hoach tuyến tính thưo các biến 0 ,,, wwyx (biến chính là 0 , ww ). Người ta đã áp dụng mô hình này để nghiên cứu việc chuẩn đoán ung thư vú (r+s=569, n ban đầu là 1 30 , sau sử lý sơ bộ rỳt cũn 3). Kết hợp với một số kỹ thuật tính toán phụ, kết quả đạt được cho thấy phù hợp thực tế đến 97.5%. Người ta cũng đã áp dụng mô hình này để nghiên cứu phân loại các foanh nghiệp thất bại và bình thường (n=6). Kết quả phù hợp với thực tế 92%(không kỹ thuật phụ nào khác). 2 .Tách toàn phương lồi. Họ F ở đây gồm những hàm có dạng 0,,)( 0 UwxwUxxf −+= (ký hiệu 0U có nghĩa U là ma trận xác đinh dương). Bài toán tương ứng là: sjwbwUbz riwawUayts z s y r jj j ii i s j j r i i ,,11, ,,11, 11 min 0 0 11 =+++−≥ =−−+≥ + ∑∑ == n BxxUx ∈∀≥ 0, (hình cầu đơn vị trong n R ) 00 ≥≥ zy Đây là một quy hoạch lồi, với hàm mục tiêu tuyến tính, và vô số rằng buộc tuyến tính. Rằng buộc 0U thường gọi là một bất đẳng thức ma trận tuyến tính (LMI). Người ta đã áp dụng mô hình này để nghiên cứu phân loại doanh nghiệp thất bại và tiến triển bình thường. Khi xét đến cả hàm mục tiêu lồi ∑∑ == −+ s j j r i i z s y r 11 1 )1( 1 λλ với )1,0( ∈ λ là biến mới biểu thị tầm quan trọng tương đối của sai số mỗi loại. Khi Êy bài toán trở thành cực tiểu một hàm lồi với một rằng buộc LMI: { } 0)(|)(min ≥ xQxF trong đó RRFRx nn →∈ :, là hàm lồi, ∑ = += N i ii QxQQ 1 0 , với ),,1,0( miRQ mm i =∈ × và ký hiệu 0 ≥ Q có nghĩa Q là ma trận nửa xác đinh dương. Phương pháp xấp xỉ ngoài đã đề xuất để giải bài toán trên tỏ ra hữu hiệu khi n<10 (trường hợp khá thường gặp trong một số ứng dụng, như đánh giá xác suất thất bại của các doanh nghiệp). Bài toán tách tuyến tính hoặc lồi cũng đã được áp dụng có kết quả trong nhiều nghiên cứu về viễn thông (xử lý tỡn hiệu). III. Côm theo tâm Bài toán đặt ra như sau: cho một tập hợp nm Raaa ⊆ },,,{ 21 , và số tự nhiên k, hãy xác định k điểm trong n R (gọi là “tõm”) k xxx ,,, 21 xao cho tổng “khoảng cỏch” từ mỗi i a đến tâm gần nó nhất đạt cực tiểu. Nếu ký hiệu khoảng cách từ a đến x là d(a,x) thì bài toán có thể phat biểu: 3 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng }.,,1,:),(minmin{ 1 ,,1 klRxxad nl m i kl li =∈ ∑ = = (P) Khi đã chọn cỏc tõm k xxx ,,, 21 thì tập },,,{ 21 m aaa được chia thành k côm k CC ,, 1 trong đó }.),(:{ lhxadaC hii l ≠∀= Nếu ta coi mỗi i a là trung tâm một khu dân cư còn mỗi l x là địa điểm xây dựng một cơ sở dịch vụ (bệnh viện, trường học, ….) thỡ đõy cũng là bài toán lùa chọn địa điểm xây dựng các cơ sở dịch vụ dao cho tỏng khoảng cách các đường đi từ mỗi khu dân cư đến cơ sở dịch vụ gần nhất là ngắn nhất có thể được. Đó là một trong những bài toán khó nhất của lý thuyết lùa chọn vị trí mang tên Weber, mặc dù đã được biết đến từ lâu nhưng trong nhiều năm trước đây được phát biểu dưới dạng quy hoạch nguyên hỗn hợp nên không có cách giải hữu hiệu. Mãi gần đây mới có những phương pháp giải tổng quát dùa trên lý thuyết tối ưu d.c (Cực tiểu một hàm lõm với rằng buộc lồi và lồi đảo) 1.Trường hợp .||),( 1 ∑ = −= n j jj xaxad Trong trường hợp này dùa vào hệ thức },|min{|| yxayyxa ≤−≤−=− (P1) bài toán (P) có thể viết dưới dạng ∑∑ ∑ ∑ == = = = =≥ ==≤−≤− k l ilil il k l il iliiil m i n j il jkl ttyt kjmiyxayts y 11 1 1 ,,1 .1,0, ,,1,,,1. )(minmin (BLP) sau đó giải (BLP) theo thuật toán: cố định biến t để giải quy hoạch tuyến tính theo y, rồi cố định biến y để giải quy hoạch tuyến tính theo t, cứ thế luân phiên cố định t và y để giải quy hoạch tuyến tính tương ứng, cho đến bao giê không cải tiến được lời giải nữa thì dừng. Vì bài toán (P) còn có tên goi là bài toán k_median nên người ta đã gọi thuật toán trên là k_median. Thật ra thuật toán này đã được biết đến từ lâu nhưng Ýt nhất được chú ý vì chỉ cho một lời giải tối ưu địa phương, chứ chưa phải toàn cục. Tuy vậy thì kết quả thủ nghiêm thu được cũng khá tốt. 2.Trường hợp .||||),( 1 2 ∑ = −= n j jj xaxad Khi ∑ = −= n j jj xaxad 1 2 )(),( thì bài toán không còn là quy hoạch lõm nữa, nhưng ta có thể đưa về một quy hoạch d.c như sau. Dựa trờn nhận xét ∑∑ ≠= = = −−−=− rl li k l kr lili kl xaxaxa ||||max||||||||min 1 ,,1 ,,1 bài toán (P) có thể viết lại thành }.,,1,:||||max||||{min 1 ,,1 11 ,,1 klRxxaxa nl rl li m i kr m i k l li kl =∈−−− ∑∑ ∑∑ ≠= = == = (P2 ) Ở đây hàm mục tiêu là hiệu của hai hàm lồi theo knk Rxxxx × ∈= ),,,( 21 Cho nên (P2) là một bài toàn tối ưu d.c. Khi n=2 (lùa chọn vị trí trong mặt phẳng) người ta đã giải bằng phương pháp này những bài toán với m=10000,k=2 hoặc m=1000,k=3. Để so sánh cần biết rằng cách tiếp cận truyền thống gặp khó khăn ngay cả với những bài toán cỡ 4 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng m=500,k=2 (phải giải quy hoạch phi tuyến hơn 1000 biến). Người ta cũng đã áp dụng tiếp cận d.c để xử lý cơ sở dữ liệu về dự báo ưng thư vú và thu được kết quả phù hợp 96%. 3.Tối ưu đơn điệu. Mét tiếp cận khác có thể dùng cho mọi hàm khoảng cách d(a,x) là dùa vào lý thuyết tối ưu đơn điệu mới xây dựng gần đây. Dĩ nhiên ∑∑ == −+= n j j n j j xxxadxad 11 )),((),( mà ∑ = += n j j xxadxau 1 ),(:),( và ∑ = n j j x 1 đều là hàm tăng theo x vì (nếu l xx ≥ ) 0),()( )()),(),((),(),( 1 1 ≥−−≥ −+−=− ∑ ∑ = = ll j n j j l j n j j ll xxdxx xxxadxadxauxau do đó d(a,x) là hàm d.m.(hiệu hai hàm tăng)và đễ dàng suy ra hàm mục tiêu của (P2) cũng là hàm d.m. Tóm lại (P2) có thể viết dưới dạng }:)(max)(min{ 1 ,,1 kn i m i kl i Rxxhxg × + = = ∈− ∑ trong đó ∑ = m i i xg 1 )( là hàm tuyến tính tăng, và )(max ,,1 xh i kl = là hàm lồi tăng. Thành thử bài toàn có thể giải hữu hiệu bằng một phương pháp nhánh cận, vừa loại dụng cả cấ trúc đơn điệu lẫn cấu trúc lồi. IV. Côm theo siêu phẳng Gần đây người ta đã đưa ra ý tưởng chia côm theo siêu phẳng. Dùa thưo ý tưởng đó ta có mô hình mới cho bài toán chia cụm như sau: cho một tập hợp nm Raaa ⊆ },,,{ 21 hóy tìm k siêu phẳng k HHH ,,, 21 Sao cho ),(min 1 ,,1 l i m i kl had ∑ = = đạt cực tiểu. Ở đây d(a,H) chỉ khoảng cách từ a đến siêu phẳng H. Khi đã chọn cỏc siờu phẳng k HHH ,,, 21 thì tập },,,{ 21 m aaa chia thành k côm k CC ,, 1 , trong đó l C gồm các i a gần l H hơn tõt cả h H với lh ≠ . Một siêu phẳng trong n R được mô tả bởi phương trình 0, 0 =− wxw với 1|||| = w và khoảng cách từ một điểm a đến siêu phẳng đó là |,| 0 wwa − . Do đó bài toán có thể phát biểu }.,1||||,|:,|minmin{ 00 1 ,,1 + = = ∈=∈− ∑ RwwRwwwa llnlli m i kl (Q) theo công thức ),0min(2|| ggg −= ta có ),,0min(2,|,| 000 llillilli wwawwawwa −−−=− . Đương nhiên có thể giả thiết ni Ra ++ ∈ cho nên lli wwa 0 , − và ),,0min( 0 lli wwa − . Đều là hàm tăng theo 0 ,ww . Vậy (Q) vừa là một bài toán d.c. vừa là một bài toán d.m. và có thể giải được đến tối ưu toàn cục bằng các phương pháp d.c. hoặc d.m. hoặc kết 5 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng hợp. Tuy nhiên, thay vì tìm cực tiểu tổng khoảng cách à ),( l i Had như trên người ta tìm cực tiểu tổng bình phương các khoảng cách, tức là xét bài toán }.,1||||,:|,|minmin{ 0 2 0 1 ,,1 + = = ∈=∈− ∑ RwwRwwwa llnlli m i kl (Q’) Phương pháp giải bài toán này dựa trờn sự kiện sau. (*) Cho A là ma trận có hàng i là ni i ReaA ∈== )1,,1(, . Lời giải tối ưu của bài toán }.1||||,),(:||min{|| 2 0 2 0 =×∈− wRRwwewAw nTT (3) đạt cực tiểu tại một vectơ riêng bất kỳ w của ma trận )( m ee IAB T T −= A ứng với giá trị riêng nhỏ nhất của B và ) 0 m eAw w T = . Cực tiểu của (3) là dương khi và chỉ khi 0B , điều này tương đương với rankA=n và phương trình )eAw T = vô nghiệm. Chó ý rằng lời giải tối ưu của bài toán (3) chẳng qua là siêu phẳng },|{ 0 wxwxP == đạt cực tiểu tổng các bình phương khoảng cách từ mỗi i a đến P(Tức là lời giải bài toán (Q’) khi k=1). Phương pháp giải bài toán (Q’) xuất phát từ tập k siêu phẳng k PPP ,,, 21 bất kỳ, dùa theo cỏc siờu phẳng đó chia },,,{ 21 m aaa ra k cụm, rồi với mỗi cụm Êy dùng (*) xác định siêu phẳng đạt cực tiểu tổng bình phương khoảng cách từ mỗi phần tử trong cụm đến nó. Như vậy được một tập k siêu phẳng mới , và với tập k siêu phẳng này lại lặp lại quá trình tính toán đó cho đến khi cải tiến hàm mục tiêu thêm nữa. Đương nhiên lời giải theo phương pháp này chỉ là tối ưu địa phương. Tuy vậy ưu điểm của phương pháp này là dễ tính toán. Thử nghiệm trên cơ sở dữ liệu dự báo ung thu vó cho pháp xác định các đướng sống sót tách biệt hơn hẳn phương pháp tuyến tính trước đây. V.Phõn cụm trên mặt phẳng và mặt cầu Trở lại bài toán k-median (P) (Phân cụm theo k tâm) trong đó tập hợp cần phân cụm là một tập hợp hữu hạn A= nm Raaa ⊆ },,,{ 21 . Mét câu hỏi nẩy ra: sẽ xẩy ra điều gì nẩu tập A vô hạn chẳng hạn A là tập hợp các điểm trong một hình chữ nhật trong 2 R và k rất lớn? Thật vậy tưởng tượng ta cần chọn địa điểm đặt k thùng thu hay trạm điện thoại công cộng trong một thành phố lớn, mà dân cư dải đều trên một địa bàn a rất rộng. Khi Êy dân ở đâu sẽ dùng thùng thư gần đó nhất, cho nên muốn tiết kiệm đường đi của dân ta phải giải một bài toán k-median cho tập hợp A. Vì A vô hạn và k rất lớn nờn cỏc phương pháp trỡnh bỏy ở trên không thích hợp và bài toán trở nên phức tạp. 1. Biểu đồ Voronoi. Giả sử k điểm k xxx ,,, 21 đã được chọn. Khi Êy tập A được phân thành k côm k VVV ,,, 21 như sau: ||}||||:||{ ji jii xxxxAxV −≤−∈∩= ≠ nghĩa là: i V gồm tất cả những điểm của A mà khoảng cách từ đó đến i x gần hơn mọi j x khác. Rõ ràng i V là một đa giác, có tên là ô Voronoi (hay ô Dirichlet). Sự phân cụm chữ nhật A thành những ô Voronoi như vậy cũng gọi là biểu đồ Voronoi theo 6 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng k xxx ,,, 21 . Có nhiều thuật toán hữu hiệu đã được đề cập tới trong hình học toán học để xõy dựng biểu đồ Voronoi. 2. bài toán k-median liên tục. Ký hiệu kk Axxxx ∈= ),,,( 21 thì hàm mục tiêu ta muốn tìm cực tiểu ở đây là ∑ ∑ ∫ = = =−= k i k i i v i FdxxxxF i 1 1 ||||min)( . Để giải bài toán này người ta đề nghị phương pháp như sau: 1. Bắt đầu với mét k Ax ∈ 0 , bất kỳ; 2. 2. Lập biểu đồ Voronoi theo 0 x ; 3. 3. Tính )( 0 xF ; tìm phương tụt 0 d của hàm F tai 0 x ; 4. 4. Phương tụt 0 d tụt từ 0 x xuống 1 x ; 5. 5 Dõng nếu 01 xx − dủ nhỏ, nều khụn thỡ lặp lại 6. Phương pháp này chỉ cho một lời giải tối ưu địa phương, có thể chưa phải tối ưu toàn cục, nhưng hiện nay chưa có phương pháp nào tụt hơn. 3.Phân bổ k điểm trên hình cầu. Sự kiện vừa rồi cho thấy mối liên hệ giữa vấn đề phân cụm với bài toán phân bổ đều đặn một số lớn điểm trên một mặt cầu là một bài toán đăng tạo nguồn cảm hứng không chỉ cho nhiều nhà toán học mà còn cho rất đông chuyên gia vật lý, hoá học, sinh học làm việc trong những lĩnh vực rất khác nhau của khoa học hiện đại Số là trước đây mười lăm năm người ta phát hiện ra những phân tử ổn định cacbon- 60 với các nguyên tử sắp xếp trên một mặt cầu tựa như một quả bóng đá. Điều này đã dẫn đến một loạt suy diễn thó vị trong khoa học. Trong tĩnh điện học, bài toán phân bổ vị trí những điểm tích điện trên một mặt cầu sao cho đạt cân bằng theo định luật thế vị của Coulomb là một bài toán khó được gọi là đối ngẫu với bài toán phân tử ổn định. Một bài toán khác, cùng loại là xác định vị trí k điểm trên mặt cầu sao cho tớch cỏc khoảng cách từng đôi là lớn nhất. Một sự lạ đỏng chú ý là khi bố chí k điểm trên mặt cầu thưo một tiểu chuẩn tối ưu nào đó thì chỉ trừ một Ýt đặc biệt của k (như k=2,3,6,12,24) cũn núi chung, bất kờt tiêu chuẩn tối ưu nào, các cấu hình tối ưu cũng luôn theo đúng một kiểu như sau: k điểm Êy được bố trí để tất cả cỏc ụ Voronoi lập thành đều là lục giác, chỉ trừ đúng 12 ô là ngũ giỏc. Bài toán nói trên có quan hệ với bài toán các định k điểm k xxx ,,, 21 trên mặt cầu sao cho đạt ∑ ≤≤ − − kji ji xx 1 1 ||||min . 7. Những điểm như thế gọi là những điểm Fekete. Việc xác định các điểm Fekete có thể quy về bài toán 8. },,1,1||||||,||:min{ 1 ∑ < − =≤−≤ ji iji ijij kixxxtt . 9. Đây là một bài toán tối ưu d.c. nhưng cực khú vỡ cỡ quá lớn. Việc tìm ra một thuật giải hữu hiệu là một thách thức lớn với các nhà toán học thế kỷ 21. Với các phương pháp hiện có vẫn có thể có ý nghĩa là thử giải bài toán với những giá trị k nhá. 7 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng Chương II: Ý tưởng thuật toán Bài toán đặt ra là cho n điểm trên mặt phẳng toạ độ hóy phõn n điểm đo ra thành các cụm sao cho tổng các khoảng cách từ các điểm đến tâm cụm của nó nhỏ nhất là có thể. Với bài toán đặt ra như trên có rất nhiều cách giải quyết khác nhau. Ở đây ta đề xuất một thuật toán giải để quyết bài toán này, cách giải quyết này mang chỉ đem lại kết quả tối ưu cục bộ nhưng nó có thể chạy được với dữ liệu lớn. I. Cách giải quyết Với tập hợp m điểm đã cho },,,{ 21 m aaa ta tỡm tõm của các điểm đó như sau (Toạ độ tâm cum): m Y Y m x X m i i m i i ∑ ∑ = = = = 1 1 Với ),( iii yxa = Ta muốn chia tập hợp m điểm trên thành k cum khac nhau. 1. Với k=1 ta chỉ việc tỡm tõm cụm của m điểm như trên. 2. Với k côm ta tối ưu k cụm đó bằng cách: a.Với điểm nào gõn tõm cum nào thì ta xếp điểm đó thuộc cum đó b.Xỏc định lại tâm của k côm c.Kiểm tra tối ưu nếu còn tối ưu được nữa thì lai quay lai bước a. Cho đến khi nào ta không tối ưu được nữa thi thôi. 3. Với k>1 giả sử ta đã chia m điểm đó thành n cụm tối ưu bõy giờ cần chia cum đo thành n+1 cum. Ở đây ta cần bổ xung thêm một cum nữa, dĩ nhiên ta bổ xung thêm một cum nữa thì tổng khoảng cách từ các điểm đến tâm cụm của nó sẽ nhỏ hơn và ta cần bổ xung sao cho nó càng nhỏ hơn càng tụt. Ta chon cum nào có tổng khoảng cách từ các điểm thuộc cum đó đến tâm cụm đó là lớn nhất để chia cum đó làm hai cụm (Giả sử cụm đó là k). Ta tối ưu hai cum đó với tập hợp các điểm thuộc cụm k ban đầu. Giả sử các điểm thụục cum k là },,,{ 21 pkkk aaa (gồm p điểm) 8 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng a. Tìm cạnh lớn nhất trong tập hợp các điểm },,,{ 21 pkkk aaa . Giả sử là cạnh },{ jkik aa b. Cho hai điểm đó làm hai tâm cum c. Bắt đầu tối ưu hai cum đó như bước 2 Sau khi tối ưu hai cụm đó ta sẽ tiếp tục tối ưu n+1 cụm như bước 2. Ta chon cạnh lớn nhất để chia tập hợp },,,{ 21 pkkk aaa thành hai phần xa nhau nhõt, để rút ngắn được tối đa khoảng cách. Như vậy ở đây chúng ta cần tối ưu n cụm thì trước hết ta cần tối ưu n-1 cum đã. Với 1 cụm thì ta chỉ cầm tỡm tõm cụm. II. Trường hợp gặp phải 1.Trong bước hai khi ta tối ưu k cụm có thể có cụm không có điểm nào khi Êy ta sẽ tìm được k’ côm (k’<k) với kết quả vẫn tối ưu hơn. Vấn đề này sẽ được giải quyết vi sau đó ta sẽ thực hiện tối ưu với k’+1 cụm như bước 3 chon đến khi k’=k thì thôi. Bài toán luôn dừng vì mỗi lần ta sẽ thu được một kết quả tối ưu hơn kết quả trước đó mà tổng khoảng cách từ các điểm tới tâm của nó luôn là số dương nờn nú không thể giảm mó quỏ 0 được. 2.Sau mỗi lần tối ưu thì cụm không có điểm nào có thể là điểm bất kỳ trong sè k cụm vây la không thể giải quyết lần lượt tụớ ưu n côm sau đó tối ưu n+1 cum được. Ở đây sau khi tối không giảm tổng quát nếu ta sắp xếp lại cỏc tõm cụm đó theo thứ tự tăng dần (vì ta có thể đổi tên cum được mà không ảnh hưởng đến kết quả của bài toán). Ở đây ta sắp xếp và đổi tên cụm theo thứ tự tăng của các điểm },,,{ 21 m aaa để tiện cho việc xử lý bài toán mà không làm ảnh hưởng tới kết quả tối ưu. 9 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng Chương III: Phân tích và thiết kế Với ý tưởng trên để mô phỏng việc phân cụm ta có thể chọn bất kỳ ngụn ngũ nào. Nhưng ở đây chúng ta dùng ++ C vì để làm quen hơn với ++ C . I. Các bươc thực hiện Thuật toán có thể mô tả bởi các bước sau: Bước 1: Khởi tạo và tớnh tõm cụm thứ nhất Bước 2: tớnh tõm cụm tiếp theo - Tỡm côm co tổng khoảng cách lớn nhất - Tối ưu cụm đó làm hai côm a. Tìm cạnh lớn nhõt thuộc cụm đó b. Khởi tạo tâm hai cum là hai điểm thuộc cạnh cạnh max đó c. Xác định điểm nào gần tâm cụm nào cho vào cụm đó d. Tính lại tâm cụm e. Kiểm tra nếu còn tối ưu được thì quay lại bước c. - Tỗi ưu tập hợp tâm cụm thu được a . Xác định điểm nào gần tâm cụm nào cho vào cụm đó b. Tính lại tâm cụm c. Kiểm tra nếu còn tối ưu được thì quay lại bước a. Bước 3: sắp xếp Bước 4: Kiểm tra kết thúc nếu chưa kết thúc quay lại bước 2 II.Xõy dùng lớp. Vì bài toán là mô phỏng thuật toán nên ta chỉ cần xây dựng một líp “PhanCum” như sau: 1.Các thuộc tính của đối tượng - Ta có n điểm vậy cần có một mảng để lưu trữ các điểm. Với mỗi điểm cần xác định tạo độ điểm đó và tâm cụm mà điểm đó thuộc vào. - Ta có k tâm vậy cần một mảng tâm để lưu trữ cỏc tõm. với mỗi tâm ta cần xác định toạ độ của tâm và những điểm thuộc tõm đú. Vỡ ở đây ta sắp xếp tăng dần mảng điểm theo tâm cụm nên ta chỉ cần xác định điểm đầu và điểm cuụi trong mảng điểm thuộc tâm Cụ thể: // Toạ độ điểm 10 [...]... SV: Nguyễn Quang Thắng 3:Sè điểm n=3000; Số cụm 30; 4.Nhõn xét Với số điểm bố trí đều thỡ cỏc cụm phân bố rất đều giống như các tổ ong II Kết luận Bài toán phân cụm và khai phá dữ liệu là một bài toán hay và có nhiều cách giải quết khác nhau, ở đây là một cách giải quyết mang tớnh chõt tham lam nửa đệ quy nhiều hơn để mong đưa đến một kết quả tối ưu nhất Bài toán ngày càng tối ưu hơn sau mỗi bước lặp... một số hữu han lần Cách giải quyết bài toán này chỉ mang lại kết quả tối ưu cô bé nhưng nó chạy được dữ liệu rất lớn Chương trình chạy ổn định Với các dữ liệu nhỏ thỡ nú rất chính xác Chóng ta so thể cải tiến một số đoạn chương trình để chương trình chạy nhanh hơn như việc sắp xếp chúng ta có thể dùng quicksort hay dùng sắp xếp vun đống… Ta có thể áp dụng bài toán này vào một số trường hợp tối ưu về... Chương trình mô phỏng thuật toán có một menu chính để cho bạn chọn cỏc cỏch nhập dư liệu khác nhau gồm: - 1.Xem trợ giúp: ở chức năng chúng ta sẽ xem cách nhập dư liệu cho từng trường hợp - 2.Chọn nhẫu nhiên: nều chọn chức năng này thì chỉ cần nhập số điểm và số cụm cần phân - 3.Nhập từ bàn phím với chức năng này bạn có thể nhập toạ độ các điểm để kểim tra bằng tay - 4,.Nhập dữ liệu từ file, với chức năng... file, với chức năng này bạn phải chỉ đường đẫn tới file dữ liệu cự thể - 5 Thoát Chương trình minh hoạ từng bước tối ưu, sau mỗi bước bạn Ên một phím bất kỳ để xem bước tiếp theo 18 Báo cáo thực tập SV: Nguyễn Quang Thắng Chương IV: Kết luận I Nhõn xột và đánh giá kết quả Vơi các dữ liệu ngẫu nhiên: 1.Sè điểm n=1000; Số cụm 10 2.Sè điểm n=2000; Số cụm 20; 19 SV: Nguyễn Quang Thắng Báo cáo thực tập SV:... cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng struct TD { int x,y; }; //Phần tử điểm gồm toạ độ và điểm đó thuộc tâm cụm thứ mấy struct DIEM { TD td; int c; }; //Phần tử tâm bao gồm toạ độ, tổng khoảng cách các điểm thuộc cụm đó tới //tâm, điểm đầu và cuối của tập các diểm thuộc cụm đó struct TAM { TD td; double e; int d,c;//Dau Cuoi Trong Mang Diem }; private: struct TAM *c;//mảng tâm... c[x].td=d[p].td; c[nx].td=d[q].td; } //Xác định lại nhóm cho các cum x và nx để tối ưu hai cụm này void PhanCum::XDNhom(int x) { for (int i=c[x].d;iKC(d[i].td,c[nx].td)) d[i].c=nx; } } //Xác định lại tâm cụm x và nx sau đó lai lạp lại XDNhúm đến khi chóng ta //thu được tối ưu nhất với hai cum x và nx void PhanCum::XDLaiTam(int x) { long x2=0,y2=0,x1=0,y1=0;... SapXep();//Sắp xếp lại mảng diểm và cỏc tõm int KTKT();//kiểm tra kết thúc hay chưa void KQ();//In kết quả ra file //Tìm cụm có tổng khoảng cách từ các điểm thuộc cum tới tâm của nó là //max int PhanCum::Tim() { int j=0; for (int i=1;ic[j].e) || ((c[i].e==c[j].e)&&(c[i].c-c[i].d>c[j].c-c[j].d))) j=i; return j; } //tìm cạnh max ở cụm x sau đó khởi tạo tâm x và nx để chia côm x thành //hai... c[nx].td.x=int(x1/k1); c[nx].td.y=int(y1/k1); } } //Tính kết qủa sau mỗi lần tối ưu cum x thành hai cum x và nx 14 Báo cáo thực tập SV: Nguyễn Quang Thắng SV: Nguyễn Quang Thắng double PhanCum::Tinh(int x) { double E=0; for (int i=c[x].d;i . điểm n=3000; Số cụm 30; 4.Nhõn xét Với số điểm bố trí đều thỡ cỏc cụm phân bố rất đều giống như các tổ ong. II. Kết luận Bài toán phân cụm và khai phá dữ liệu là một bài toán hay và có nhiều cách. xột và đánh giá kết quả 1.Sè điểm n=1000; Số cụm 10 2.Sè điểm n=2000; Số cụm 20 3.Sè điểm n=3000; Số cụm 30 4.Nhõn xét II. Kết luận Chương I: Giới thiệu bài toán phân cụm và khai phá dữ liệu 1 Báo. Bệnh nhân là các dữ liệu vật lý về những bệnh nhân bị nghi ung thu vú và ta muốn dùa và dữ liệu đú phõn cỏc đối tượng thành hai nhóm u lành và u ác. 2.(Kinh tế) Đối tượng là các dữ liệu tài chính