Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 69 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
69
Dung lượng
2,52 MB
Nội dung
i LỜI CAM ĐOAN Tôi xin cam đoan luận văn “Phân cụm liệu ứng dụng phân loại cấu trúc protein" công trình nghiên cứu riêng Các số liệu luận văn sử dụng trung thực Kết nghiên cứu trình bày luận văn chưa công bố công trình khác Tôi xin chân thành cảm ơn thầy cô Viện Công nghệ Thông tin, thầy cô Trường Công Nghệ Thông Tin Truyền thông Thái Nguyên, thầy giáo Trần Đăng Hưng - Giảng viên Khoa Công nghệ thông tin Trung tâm khoa học tính toán, Đại học Sư phạm Hà Nội, bạn bè, đồng nghiệp Trung tâm Thông tin Công nghệ - Sở Khoa học Công nghệ Thái Nguyên, Cục Dự trữ Nhà nước khu vực Bắc Thái giúp đỡ nhiều trình học tập, sưu tầm, tìm tòi tài liệu công tác để hoàn thành luận văn Tôi xin bày tỏ lòng kính trọng, biết ơn sâu sắc tới PGS.TS Đoàn Văn Ban, người trực tiếp hướng dẫn, giúp đỡ suốt thời gian thực luận văn Thái Nguyên, tháng 08 năm 2012 Học viên Trần Đức Thuận ii MỤC LỤC LỜI CAM ĐOAN i MỤC LỤC ii BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT iii DANH MỤC BẢNG BIỂU v DANH MỤC CÁC HÌNH .v MỞ ĐẦU 1 LÝ DO CHỌN ĐỀ TÀI MỤC TIÊU NGHIÊN CỨU PHƯƠNG PHÁP NGHIÊN CỨU TỔNG QUAN LUẬN VĂN CHƯƠNG TỔNG QUAN LÝ THUYẾT VỀ PHÂN CỤM DỮ LIỆU 1.1 TỔNG QUAN VỀ PHÂN CỤM DỮ LIỆU 1.2 PHÂN CỤM TRONG PHÂN LOẠI DỮ LIỆU 1.3 CÁC YÊU CẦU CỦA PHÂN CỤM DỮ LIỆU 1.4 CÁC KIỂU DỮ LIỆU TRONG PHÂN CỤM 1.4.1 Phân loại kiểu liệu dựa kích thước miền 1.4.2 Phân loại kiểu liệu dựa hệ đo 1.5 CÁC PHÉP ĐO ĐỘ TƯƠNG TỰ VÀ KHOẢNG CÁCH ĐỐI VỚI CÁC KIỂU DỮ LIỆU 10 1.5.1 Khái niệm tương tự phi tương tự 10 1.5.2 Thuộc tính khoảng cách 11 1.5.3 Thuộc tính nhị phân 13 1.5.4 Thuộc tính định danh 15 1.5.5 Thuộc tính có thứ tự 16 1.5.6 Thuộc tính tỉ lệ 16 1.6 KẾT LUẬN CHƯƠNG 17 CHƯƠNG 18 KỸ THUẬT PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG 18 PHÂN LOẠI CẤU TRÚC PROTEIN 18 2.1 GIỚI THIỆU 18 2.2 THUẬT TOÁN K-MEANS 18 2.3 THUẬT TOÁN PAM 22 2.4 THUẬT TOÁN CLARA 24 2.5 THUẬT TOÁN CLARANS 26 2.6 KẾT LUẬN CHƯƠNG 28 CHƯƠNG 29 TIN SINH HỌC VÀ PHÂN LOẠI CẤU TRÚC PROTEIN .29 3.1 TỔNG QUAN VỀ TIN SINH HỌC 29 3.1.1 Chủ thuyết trung tâm sinh học phân tử 29 3.1.2 DNA (DesoxyriboNucleic Acid) 30 3.1.3 RNA (RiboNucleic Acid) 31 3.1.4 Protein .31 3.1.5 Các dạng protein .32 3.2 CÁC PHƯƠNG PHÁP PHÂN LOẠI CẤU TRÚC PROTEIN 34 3.2.1 Phân loại cấu trúc với SCOP 38 iii 3.2.2 Phân loại cấu trúc với CATH 39 3.2.3 Phân loại cấu trúc với phân loại miền Dali (DDD) 40 3.3 KẾT LUẬN CHƯƠNG 41 CHƯƠNG 42 CHƯƠNG TRÌNH DEMO VỚI PHẦN MỀM CLUSTERS 3.0 .42 4.1 PHẦN MỀM CLUSTERS 3.0 42 4.1.1 Yêu cầu phần cứng 42 4.1.2 Nguồn liệu demo chương trình 42 4.1.3 Sử dụng thư viện phân cụm 42 4.2 SỬ DỤNG THUẬT TOÁN K-MEANS, K-MEDIANS 43 4.2.1 Khởi tạo 43 4.2.2 Tìm trọng tâm cụm 44 4.2.3 Tìm trung bình cụm, trung vị cụm 44 4.2.4 Tìm giải pháp tối ưu với K-means K-medians .46 4.3 PHẦN MỀM DEMO .48 4.3.1 Đầu vào chương trình 48 4.3.2 Giao diện số chức chương trình .49 4.3.3 Tệp đầu chương trình .52 KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU 54 KẾT LUẬN 54 HƯỚNG NGHIÊN CỨU TRONG THỜI GIAN TỚI 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 57 BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT Chữ viết tắt Nghĩa tiếng anh Nghĩa tiếng việt DesoxyriboNucleic Acid Phân tử nucleic acid mang thông tin di truyền mã hóa cho hoạt động sinh trưởng phát triển dạng sống RNA RiboNucleic Acid Là hai loại axít nucleic, sở di truyền cấp độ phân PAM Partitioning Around Medoids Thuật toán phân cụm phân vùng xung quanh Medoids CLARA Clustering Large Application Thuật toán phân cụm ứng dụng lớn CLARANS Clustering Large Applications Thuật toán phân cụm với ứng based upon RANdomized dụng lớn sở tìm kiếm Search ngẫu nhiên rRNA ribosome RNA DNA Là ARN mã hóa mang thông tin từ ADN iv tRNA transfer RNA Là RNA vận chuyển mRNA messenger RNA RNA thông tin SCOP Structural Classification of Proteins Phân loại cấu trúc protein CATH Class Architecture Topology Homologous superfamily Phân loại cấu trúc protein với CATH DDD Dali Domain Dictionary Từ điển miền Dali PDB Protein Data Bank Ngân hàng liệu protein FSSP Families of Structurally Similar Proteins Dòng họ protein với cấu trúc tương tự v DANH MỤC BẢNG BIỂU Bảng 1.1 Bảng dự đoán cho hai đối tượng nhị phân x y…………… Bảng 1.2 Ví dụ độ phi tương tự thuộc tính nhị phân…………… Bảng 2.1 Bảng so sánh thuật toán phân cụm trung tâm…………… Bảng 3.1 Đưa số nguồn tài nguyên phân loại trình tự protein… Bảng 3.2 Nguồn tài nguyên cho phân loại cấu trúc protein…………… Bảng 3.3 Các cấp độ CATH………………………………… 14 15 28 35 36 39 DANH MỤC CÁC HÌNH Hình 1.1 Phân cụm vector truy vấn Hình 1.2 Hình thành cụm cha Hình 1.3 Các tỉ lệ khác dẫn tới cụm khác Hình 2.1 Sơ đồ phân loại phương pháp phân cụm………………… Hình 2.2 Các thiết lập để xác định danh giới cụm ban đầu Hình 2.3 Tính toán trọng tâm cụm Hình 2.4 Ví dụ minh họa thuật toán K-means Hình 2.5 Ví dụ minh họa thuật toán PAM Hình 3.1 Chủ thuyết trung tâm của sinh học phân tử Hình 3.2 Cấu trúc DNA Hình 3.3 Các kiểu cấu trúc Protein Hình 3.4 Cấu trúc bậc thường thấy protein Hình 3.5 Hai ví dụ protein màng Hình 3.6 Sự phát triển cấu trúc liệu protein Hình 4.1 Đầu vào liệu……………………………………………… Hình 4.2 Giao diện chọn tệp đầu vào…………………………………… Hình 4.3 Giao diện tab Lọc liệu…………………………………… Hình 4.4 Giao diện tab chỉnh sửa liệu……………………………… Hình 4.5 Giao diện Tab K-Means, sử dụng K-means K-medians để phân cụm………………………………………………………………… Hình 4.6 Đầu liệu………………………………………………… 12 18 19 20 21 24 30 30 32 33 34 35 48 49 49 50 51 52 MỞ ĐẦU LÝ DO CHỌN ĐỀ TÀI Với phát triển vượt bậc công nghệ thông tin, đặc biệt ứng dụng công nghệ thông tin vào ngành sinh học giúp ích nhiều cho việc tìm hiểu nghiên cứu sinh học phân tử Chính Tin sinh học, lĩnh vực mới, đời, sử dụng công nghệ ngành toán học ứng dụng, tin học, thống kê, khoa học máy tính, trí tuệ nhân tạo, hóa học, sinh học để giải vấn đề sinh học Như biết, sở phân tử sống dựa hoạt động phân tử sinh học, bao gồm axit nucleic (DNA RNA), carbohydrate, chất béo, protein Mặc dù loại đóng vai trò thiết yếu sống, protein có bật chúng thành phần biểu diễn chức tế bào Chính vậy, tìm hiểu nghiên cứu cấu trúc phân tử sinh học lên hướng với trải nghiệm hướng vào việc khám phá cấu trúc phân tử sinh học Hướng phát triển sinh học trải qua với phát triển cao thông qua nghiên cứu cấu trúc với mục đích có nhìn toàn diện không gian cấu trúc protein, thông tin lưu trữ liệu cấu trúc protein chìa khóa để thành công nằm khả để tổ chức, phân tích thông tin chứa sở liệu, tích hợp thông tin với nỗ lực khác nhằm giải bí ẩn chức tế bào Nhận thấy tính thiết thực vấn đề gợi ý giảng viên hướng dẫn, em chọn đề tài "Phân cụm liệu ứng dụng phân loại cấu trúc protein" MỤC TIÊU NGHIÊN CỨU - Tìm hiểu tổng quan lý thuyết phân cụm liệu - Nghiên cứu số kỹ thuật phân cụm liệu ứng dụng phân loại cấu trúc protein - Tìm hiểu Tin sinh học số vấn đề liên quan, nghiên cứu phương pháp phân loại cấu trúc protein - Tìm hiểu sử dụng phần mềm Cluster 3.0 ứng dụng vào phân loại cấu trúc protein PHƯƠNG PHÁP NGHIÊN CỨU - Nghiên cứu qua tài liệu như: sách, sách điện tử, báo, thông tin tài liệu website tài liệu liên quan - Phân tích, tổng hợp lý thuyết giới thiệu phân cụm liệu số thuật toán phân cụm liệu dựa vào cụm trung tâm ứng dụng phân loại cấu trúc protein - Tìm hiểu sử dụng phần mềm Cluster 3.0 ứng dụng thuật toán Kmeans để phân loại cấu trúc protein TỔNG QUAN LUẬN VĂN Luận văn trình bày chương phần kết luận, với nội dung trình bày từ việc tìm hiểu khái niệm đến nội dung cần sâu tìm hiểu, giúp người đọc có nhìn tổng quan vấn đề nghiên cứu: - Chương - Tổng quan: Giới thiệu tổng quan lý thuyết phân cụm liệu - Chương - Một số kỹ thuật phân cụm liệu ứng dụng phân loại cấu trúc protein - Chương - Tin sinh học Phân loại cấu trúc Protein - Chương - Chương trình Demo với phần mềm cluster 3.0 - Kết luận - Tóm tắt nội dung chính, kết đạt hướng nghiên cứu luận văn CHƯƠNG TỔNG QUAN LÝ THUYẾT VỀ PHÂN CỤM DỮ LIỆU 1.1 TỔNG QUAN VỀ PHÂN CỤM DỮ LIỆU Phân cụm chia liệu thành nhóm mà đối tượng nhóm giống theo nghĩa khác với đối tượng nhóm khác Mỗi nhóm gọi cluster Mỗi đối tượng mô tả tập độ đo mối quan hệ với đối tượng khác Cũng có nhiều định nghĩa cluster, định nghĩa sau sử dụng nhiều [4]: - "Một cluster tập đối tượng giống khác với đối tượng không cluster đó" - "Một cluster tập điểm không gian mà khoảng cách hai điểm nhỏ khoảng cách điểm điểm ngoài" - "Các cluster mô tả miền liên thông không gian đa chiều chứa mật độ tương đối cao điểm, phân biệt miền mật độ thấp điểm" Phân cụm có ý nghĩa quan trọng hoạt động người từ y tế, giáo dục, xử lý thông tin, nghiên cứu phân tích thị trường,… Phân cụm sử dụng rộng rãi nhiều ứng dụng, bao gồm nhận dạng mẫu, phân tích liệu, xử lý ảnh, nghiên cứu thị trường, phân loại tin sinh học,… Bằng phân cụm, thương mại giúp nhà phân tích thị trường tìm nhóm khách hàng có nhu cầu riêng dựa độ tuổi, sở thích tâm lý tiêu dùng Trong sinh học, sử dụng để phân loại thực vật, động vật, phân loại cấu trúc protein dựa cấu trúc tương đồng vốn có, từ xây dựng ngân hàng liệu protein Trong xử lý thông tin, phân cụm giúp phân loại tài liệu với dạng lưu trữ văn, đĩa mềm, ổ cứng, mạng internet thành giúp tạo lập hoàn chỉnh kho liệu khổng lồ tri thức loài người Là chức khai phá liệu, phân cụm sử dụng công cụ độc lập để quan sát đặc trưng cụm thu bên phân bố liệu tập trung vào tập riêng biệt cụm để phân tích Phân cụm dụng bước tiền xử lý cho thuật toán phân loại, mô tả đặc điểm, phát cụm với đặc trưng, tính chất khác 1.2 PHÂN CỤM TRONG PHÂN LOẠI DỮ LIỆU Các mục liệu tương tự nhóm lại để hình thành cụm sở độ đo mức tương tự Mỗi cụm biểu diễn trọng tâm vector đặc trưng cụm Trong truy vấn, ta tính toán độ tương tự vector truy vấn cụm (đại diện trọng tâm cụm) Các cụm mà độ tương tự với vector truy vấn mà lớn ngưỡng lựa chọn Sau đó, độ tương tự vector truy vấn với vector đặc trưng cụm tính toán k mục gần xếp hạng xem kết Ví dụ, vector đặc trưng hình 1.1 nhóm vào 11 cụm Trong truy tìm, vector truy vấn so sánh với 11 trọng tâm cụm Nếu tìm thấy trọng tâm cụm gần giống vector truy vấn ta tính khoảng cách vector truy vấn với vector đặc trưng cụm Tổng số tính toán khoảng cách đòi hỏi phải nhỏ nhiều tổng vector đặc trưng sở liệu Hình 1.1: Phân cụm vector truy vấn Trong phương pháp truy tìm sở cụm đây, mức độ tương tự tính toán câu truy vấn trọng tâm với vector đặc trưng cụm lựa chọn Khi tổng số cụm mà lớn, ta sử dụng cụm nhiều tầng để làm giảm tính toán mức độ tương tự truy vấn trọng tâm Các cụm tương tự nhóm để hình thành cụm lớn (super-cluster) Trong truy tìm, trước hết so sánh vector truy vấn với trọng tâm cụm cha sau so sánh với trọng tâm cụm bên cụm cha, cuối so sánh với vector đặc trưng cụm Hãy xem xét không gian đặc trưng hình 1.1, ta hình thành cụm cha hình 1.2 Trong truy vấn, so sánh vector truy vấn với trọng tâm cụm cha Nếu tìm thấy trọng tâm cụm cha gần vector truy vấn nhất, so sánh vector truy vấn với ba trọng tâm cụm cụm cha Trong thí dụ cụm hai mức này, tổng số khoảng cách tính toán đòi hỏi vector truy vấn trọng tâm (của cụm cha cụm con) (4+3), nhỏ 11 tính toán sử dụng cụm tầng 50 SW (Gene Vector)> = X - Điều loại bỏ tất gen có độ lệch chuẩn giá trị nhận xét X At least X observation with abs (Val)> = Y Điều loại bỏ tất gen X nhận xét với giá trị tuyệt đối lớn so với Y MaxVal - MinVal> = X Điều loại bỏ tất gene có giá trị tối đa trừ giá trị tối thiểu nhỏ so với X Ghi chú: Khi ta bấm nút Filter, lọc không áp dụng cho tập liệu Khi lần bấm Filter, có thông báo có gen thông qua lọc Nếu muốn chấp nhận kết lọc, bấm Accept, không thay đổi thực - Giao diện tab Chỉnh sửa liệu: Hình 4.4 Giao diện tab chỉnh sửa liệu Từ tab liệu Ajust data, ta thực số hoạt động thay đổi liệu từ liệu đầu vào Các hoạt động là: - Log Transform Data: thay tất liệu giá trị x cách đăng log2(x) 51 - Center genes [mean median]: Tùy chọn mean median từ giá trị hàng liệu, giá trị trung bình trung bình hàng - Center arrays [mean median]: Trừ cột mean median từ giá trị cột liệu, giá trị trung bình trung bình cột - Normalize genes: Nhân tất giá trị hàng liệu với hệ số tỷ lệ S để tổng bình phương giá trị hàng 1.0 (riêng S tính cho hàng) - Normalize genes: Nhân tất giá trị cột liệu với hệ số tỉ lệ S để tổng bình phương giá trị cột 1.0 (riêng S tính cho cột) Các hoạt động riêng rẽ, thứ tự hoạt động áp dụng quan trọng, nên xem xét cẩn thận trước áp dụng hoạt động Thứ tự hoạt động: + Log transform all values + Center rows by subtracting the mean or median + Normalize rows + Center columns by subtracting the mean or median + Normalize columns - Giao diện Tab k-Means, sử dụng K-means K-medians để phân cụm 52 Hình 4.5 Giao diện Tab k-Means, sử dụng K-means K-medians Với hai khung Genes Arrays, người dùng chọn trước số cụm k số lần chạy thuật toán hình vẽ Chương trình cho phép người dùng sử dụng loại K-means K-medians chọn độ đo tương tự với tùy chọn tính theo khoảng cách Euclide khoảng cách City-block 4.3.3 Tệp đầu chương trình Là file text (Có thể mở tệp đầu Excel) với gen có cấu trúc tương tự phân cụm xếp theo tham số đầu vào chương trình Hình 4.6 Đầu liệu 53 54 KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU KẾT LUẬN Trong luận văn tìm hiểu, nghiên cứu số vấn đề sau: - Luận văn trình bày lý thuyết phân cụm liệu, số thuật toán phân cụm liệu dựa vào cụm trung tâm để ứng dụng vào phân loại cấu trúc protein - Giới thiệu Protein, cấu trúc, chức protein, số phương pháp phân loại cấu trúc protein - Luận văn sử dụng chương trình Cluster 3.0 với mục đích biểu diễn phân cụm liệu sử dụng thuật toán K-means K-medians Chương trình có sử dụng thư viện phân cụm C áp dụng thuật toán K-means, Kmedians để tìm trung tâm cụm, trung vị cụm xử lý phân cụm dựa hai thuật toán Với nhiệm vụ nghiên cứu tìm hiểu việc áp dụng số thuật toán phân cụm để phân loại cấu trúc protein Tuy nhiên chương trình có nhiều hạn chế: - Chương trình sử dụng đầu vào tập tin txt (có thể mở với excel) chưa sử dụng định dạng protein từ ngân hàng liệu protein PDB để phân loại - Chương trình dừng việc sử dụng thuật toán K-means K-medians HƯỚNG NGHIÊN CỨU TRONG THỜI GIAN TỚI Trong tương lai đề tài phát triển theo hướng nghiên cứu phân loại Protein với phân loại trình tự, phân loại cấu trúc protein Tìm hiểu ngân hàng liệu protein sử dụng nguồn liệu chương trình Cơ sở liệu protein lớn đa dạng cho nhiều loài, cần sử dụng thuật toán có tốc độ xử lý tốt 55 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Lưu Thị Hải Yến (2008), Luận văn Thạc sỹ - Đề tài: Nghiên cứu phát triển hệ thống đa phương tiện sở phân cụm liệu, Đại học Thái Nguyên- Khoa công nghệ thông tin [2] Nguyễn Q.D., Trần Đ.H., Trần T.T.B., Phạm T.H (2011) Dự đoán chức protein phương pháp phân cụm liệu, Đặc san CNTT, Tạp chí Khoa học ĐHSPHN, 56, 3-16 Tiếng Anh [3] A.K Jain, M.N Murty and P,J Flyn (1999), Data Clustering: A Review, ACM Computing Survey [4] A.K Jain, Richard C Dubes (1988), Algorithms for Clustering Data, Prentice Hall, Englewood Cliffs, New Jersey 07632 [5] Patrice Koehl (2006), Protein Structure Classification, Department of Computer Science and Genome Center, University of California, Davis, California [6] Michiel Jan Laurens de Hoon (2010), The C Clustering Library for cDNA microarray data, The University of Tokyo, Institute of Medical Science, Human Genome Center, University of Tokyo, 4-6-1 Shirokanedai, Minato-ku, Tokyo 108-8639, Japan [7] Michael Eisen; updated by Michiel de Hoon (2002), Cluster 3.0 Manual, Human Genome Center, University of Tokyo, 4-6-1 Shirokanedai, Minato-ku, Tokyo 108-8639, Japan [8] Michelle Kamber and Jiawei Han (2001), Data Mining: Concepts and Techniques Morgan Kaufmann Publishers, University of Illinois at Urbana-Champaign, 500 Sansome Street, Suite 400, San Francisco, CA 94111 56 [9] Michael R Anderberg (1973), Cluster analysis for applications Academic Press [10] Periklis Andritsos (2002), Data Clustering Technique, University of Toronto, Department of Computer Science Nguồn internet: [11] http://bonsai.hgc.jp/~mdehoon/software/cluster/software.htm [12] http://en.wikipedia.org/wiki/Structural_Classification_of_Proteins_ database [13] http://en.wikipedia.org/wiki/CATH [14] http://rana.lbl.gov/EisenSoftware.htm [15] http://www.agbiotech.com.vn/vn/?mnu=preview&key=475 57 PHỤ LỤC /* ********HÀM GETCLUSTERCENTROIDS*******/ int getclustercentroids(int nclusters, int nrows, int ncolumns,double** data, int** mask, int clusterid[], double** cdata, int** cmask,int transpose, char method) { switch(method) { case 'm': { const int nelements = (transpose==0) ? nrows: ncolumns; double* cache = malloc(nelements*sizeof(double)); if (!cache) return 0; getclustermedians(nclusters, nrows, ncolumns, data, mask, clusterid, cdata, cmask, transpose, cache); free(cache); return 1; } case 'a': { getclustermeans(nclusters, nrows, ncolumns, data, mask, clusterid, cdata, cmask, transpose); return 1; } } return 0; } /* **********THỦ TỤC GETCLUSTERMEANS******* */ static void getclustermeans(int nclusters, int nrows, int ncolumns, double** data, int** mask, int clusterid[], double** cdata, int** cmask, int transpose) { int i, j, k; if (transpose==0) { for (i = 0; i < nclusters; i++) { for (j = 0; j < ncolumns; j++) { cmask[i][j] = 0; cdata[i][j] = 0.; } } for (k = 0; k < nrows; k++) { i = clusterid[k]; for (j = 0; j < ncolumns; j++) { if (mask[k][j] != 0) { cdata[i][j]+=data[k][j]; cmask[i][j]++; } } } for (i = 0; i < nclusters; i++) { for (j = 0; j < ncolumns; j++) { if (cmask[i][j]>0) { cdata[i][j] /= cmask[i][j]; cmask[i][j] = 1; } 58 } } } else { for (i = 0; i < nrows; i++) { for (j = 0; j < nclusters; j++) { cdata[i][j] = 0.; cmask[i][j] = 0; } } for (k = 0; k < ncolumns; k++) { i = clusterid[k]; for (j = 0; j < nrows; j++) { if (mask[j][k] != 0) { cdata[j][i]+=data[j][k]; cmask[j][i]++; } } } for (i = 0; i < nrows; i++) { for (j = 0; j < nclusters; j++) { if (cmask[i][j]>0) { cdata[i][j] /= cmask[i][j]; cmask[i][j] = 1; } } } } } /* ****************THỦ TỤC GETCLUSTERMEDIANS***********/ static void getclustermedians(int nclusters, int nrows, int ncolumns, double** data, int** mask, int clusterid[], double** cdata, int** cmask,int transpose, double cache[]) { int i, j, k; if (transpose==0) { for (i = 0; i < nclusters; i++) { for (j = 0; j < ncolumns; j++) { int count = 0; for (k = 0; k < nrows; k++) { if (i==clusterid[k] && mask[k][j]) { cache[count] = data[k][j]; count++; } } if (count>0) { cdata[i][j] = median(count,cache); cmask[i][j] = 1; } else { cdata[i][j] = 0.; cmask[i][j] = 0; } } } } 59 else { for (i = 0; i < nclusters; i++) { for (j = 0; j < nrows; j++) { int count = 0; for (k = 0; k < ncolumns; k++) { if (i==clusterid[k] && mask[j][k]) { cache[count] = data[j][k]; count++; } } if (count>0) { cdata[j][i] = median(count,cache); cmask[j][i] = 1; } else { cdata[j][i] = 0.; cmask[j][i] = 0; } } } } } /* *************THỦ TUC KCLUSTER********** */ void kcluster (int nclusters, int nrows, int ncolumns,double** data, int** mask, double weight[], int transpose,int npass, char method, char dist, int clusterid[], double* error, int* ifound) */ { const int nelements = (transpose==0) ? nrows: ncolumns; const int ndata = (transpose==0) ? ncolumns: nrows; int i; int ok; int* tclusterid; int* mapping = NULL; double** cdata; int** cmask; int* counts; if (nelements < nclusters) { *ifound = 0; return; } /* More clusters asked for than elements available */ *ifound = -1; /* This will contain the number of elements in each cluster, which is * needed to check for empty clusters */ counts = malloc(nclusters*sizeof(int)); if(!counts) return; /* Find out if the user specified an initial clustering */ if (npass1) { free(tclusterid); free(mapping); return; } } if (method=='m') { double* cache = malloc(nelements*sizeof(double)); if(cache) { *ifound = kmedians(nclusters, nrows, ncolumns, data, mask, weight, transpose, npass, dist, cdata, cmask, clusterid, error, tclusterid, counts, mapping, cache); free(cache); } } else *ifound = kmeans(nclusters, nrows, ncolumns, data, mask, weight, transpose, npass, dist, cdata, cmask, clusterid, error, tclusterid, counts, mapping); /* Deallocate temporarily used space */ if (npass > 1) { free(mapping); free(tclusterid); } if (transpose==0) freedatamask(nclusters, cdata, cmask); else freedatamask(ndata, cdata, cmask); free(counts); } /* ********************************************************************* */ 61 static int kmeans(int nclusters, int nrows, int ncolumns, double** data, int** mask, double weight[], int transpose, int npass, char dist, double** cdata, int** cmask, int clusterid[], double* error, int tclusterid[], int counts[], int mapping[]) { int i, j, k; const int nelements = (transpose==0) ? nrows: ncolumns; const int ndata = (transpose==0) ? ncolumns: nrows; int ifound = 1; int ipass = 0; /* Set the metric function as indicated by dist */ double (*metric) (int, double**, double**, int**, int**, const double[], int, int, int) = setmetric(dist); /* We save the clustering solution periodically and check if it reappears */ int* saved = malloc(nelements*sizeof(int)); if (saved==NULL) return -1; *error = DBL_MAX; { double total = DBL_MAX; int counter = 0; int period = 10; /* Perform the EM algorithm First, randomly assign elements to clusters */ if (npass!=0) randomassign (nclusters, nelements, tclusterid); for (i = 0; i < nclusters; i++) counts[i] = 0; for (i = 0; i < nelements; i++) counts[tclusterid[i]]++; /* Start the loop */ while(1) { double previous = total; total = 0.0; if (counter % period == 0) /* Save the current cluster assignments */ { for (i = 0; i < nelements; i++) saved[i] = tclusterid[i]; if (period < INT_MAX / 2) period *= 2; } counter++; /* Find the center */ getclustermeans(nclusters, nrows, ncolumns, data, mask, tclusterid, cdata, cmask, transpose); for (i = 0; i < nelements; i++) /* Calculate the distances */ { double distance; k = tclusterid[i]; if (counts[k]==1) continue; /* No reassignment if that would lead to an empty cluster */ 62 /* Treat the present cluster as a special case */ distance = metric(ndata,data,cdata,mask,cmask,weight,i,k,transpose); for (j = 0; j < nclusters; j++) { double tdistance; if (j==k) continue; tdistance = metric(ndata,data,cdata,mask,cmask,weight,i,j,transpose); if (tdistance < distance) { distance = tdistance; counts[tclusterid[i]] ; tclusterid[i] = j; counts[j]++; } } total += distance; } if (total>=previous) break; /* total>=previous is FALSE on some machines even if total and previous * are bitwise identical */ for (i = 0; i < nelements; i++) if (saved[i]!=tclusterid[i]) break; if (i==nelements) break; /* Identical solution found; break out of this loop */ } if (npass=previous) break; /* total>=previous is FALSE on some machines even if total and previous * are bitwise identical */ for (i = 0; i < nelements; i++) if (saved[i]!=tclusterid[i]) break; if (i==nelements) break; /* Identical solution found; break out of this loop */ } if (npass[...]... THUẬT PHÂN CỤM DỮ LIỆU ỨNG DỤNG TRONG PHÂN LOẠI CẤU TRÚC PROTEIN 2.1 GIỚI THIỆU Các kỹ thuật phân cụm có rất nhiều cách tiếp cận và các ứng dụng trong thực tế Các kỹ thuật phân cụm đều hướng tới hai mục tiêu chung: chất lượng của các cụm khám phá được và tốc độ thực hiện của thuật toán Dưới đây là sơ đồ phân loại các phương pháp phân cụm dữ liệu [3]: Hình 2.1 Sơ đồ phân loại các phương pháp phân cụm Trong. .. toán phân cụm trung tâm Thuật toán phân cụm trung tâm Thuật toán Tham số đầu vào Tối ưu hóa cho Cấu trúc phân cụm Độ phức tạp thuật toán Số các phân cụm Phân chia các phân cụm Hình cầu O(tkn) PAM Số các phân cụm Phân chia các phân cụm, Dữ liệu nhỏ Hình cầu O(tk(n-k)2) CLARA Số các phân cụm Dữ liệu lớn Hình cầu O(ks2+k(n-k)) Số các phân cụm, Số đối tượng hàng xóm Dữ liệu không gian, chất lượng phân cụm. .. phương pháp phân cụm Trong sơ đồ phân thành hai nhóm chính là phân cụm phân cấp và phân cụm dựa vào cụm trung tâm (K-means, PAM, CLARA, CLARANS) Trong giới hạn tìm hiểu, luận văn chỉ đi sâu vào một số thuật toán phân cụm dựa vào cụm trung tâm nhằm áp dụng phân loại cấu trúc protein 2.2 THUẬT TOÁN K-MEANS K-means là thuật toán phân cụm theo các phần tử bởi trung tâm của các cụm Phương pháp này dựa trên... thuật toán phân cụm dữ liệu có hiệu quả cao trong việc đảm bảo chất lượng cũng như chi phí tính toán 1.6 KẾT LUẬN CHƯƠNG Chương 1 nêu những kiến thức cơ bản về khái niệm phân cụm, các yêu cầu trong phân cụm dữ liệu đối với thực tế, các kiểu thuộc tính dữ liệu trong phân cụm, một số phép đo khoảng cách phổ biến cũng như một số thuộc tính phố biến áp dụng trong các thuật toán phân cụm dữ liệu 18 CHƯƠNG... tương tự được nhóm thành cụm Trọng tâm các cụm hoặc /và các mục trong mỗi cụm được tổ chức nhờ cấu trúc dữ liệu nào đó để tìm kiếm hiệu quả 1.3 CÁC YÊU CẦU CỦA PHÂN CỤM DỮ LIỆU Phân cụm là một thách thức trong lĩnh vực nghiên cứu ở chỗ những ứng dụng tiềm năng của chúng được đưa ra ngay chính trong những yêu cầu đặc biệt của chúng, sau đây là một số yêu cầu cơ bản của phân cụm dữ liệu [1]: - Có khả năng... nhóm dữ liệu có trạng thái phân cụm tốt và thỏa mãn các ràng buộc - Dễ hiểu và dễ sử dụng: Người sử dụng có thể chờ đợi những kết quả phân cụm dễ hiểu, dễ lý giải và dễ sử dụng Nghĩa là, sự phân cụm có thể cần được giải thích ý nghĩa và ứng dụng rõ ràng Việc nghiên cứu cách để một ứng dụng đạt được mục tiêu là rất quan trọng, có thể gây ảnh hưởng tới sự lựa chọn các phương pháp phân cụm 1.4 CÁC KIỂU DỮ... cho việc phân cụm dữ liệu có kiểu khoảng (kiểu số) Tuy nhiên, nhiều ứng dụng có thể đòi hỏi việc phân cụm với nhiều kiểu dữ liệu khác nhau, như kiểu nhị phân, kiểu tường minh (định danh - không thứ tự), và dữ liệu có thứ tự hay dạng hỗn hợp của những kiểu dữ liệu này - Khám phá các cụm với hình dạng bất kỳ: Nhiều thuật toán phân cụm xác định các cụm dựa trên các phép đo khoảng cách Euclide và khoảng... phân cụm 1.4 CÁC KIỂU DỮ LIỆU TRONG PHÂN CỤM Trong phân cụm, các đối tượng dữ liệu thường được biểu diễn dưới dạng các đặc tính hay còn gọi là thuộc tính (khái niệm “các kiểu dữ liệu và “các kiểu thuộc tính dữ liệu được xem là tương đương với nhau) [1] Các thuộc tính này là các tham số cho phép giải quyết vấn đề phân cụm và chúng có tác động đáng kể đến kết quả phân cụm Phân loại các kiểu thuộc tính... tượng dữ liệu trong tập đối tượng dữ liệu ban đầu Kết quả thực nghiệm chỉ ra rằng, 5 mẫu dữ liệu có kích thước 40 +2k cho kết quả tốt Các bước thực hiện của thuật toán CLARA: Input: Số đối tượng trong cơ sở dữ liệu( n), số phân cụm k, kích thước mẫu s, Output: k cụm dữ liệu với chất lượng tốt nhất BEGIN 1 For i = 1 to 5 do 2 Lấy một mẫu có 40 + 2k đối tượng dữ liệu ngẫu nhiên từ tập dữ liệu và áp dụng. .. với thứ tự vào của dữ liệu - Số chiều lớn: Một cơ sở dữ liệu hoặc một kho dữ liệu có thể chứa một số chiều hoặc một số các thuộc tính Nhiều thuật toán phân cụm áp dụng tốt cho dữ liệu với số chiều thấp, bao gồm chỉ từ hai đến 3 chiều Người ta đánh giá việc phân cụm là có chất lượng tốt nếu nó áp dụng được cho dữ liệu có từ 3 chiều trở lên Nó là sự thách thức với các đối tượng dữ liệu cụm trong không ... VỀ PHÂN CỤM DỮ LIỆU 1.1 TỔNG QUAN VỀ PHÂN CỤM DỮ LIỆU 1.2 PHÂN CỤM TRONG PHÂN LOẠI DỮ LIỆU 1.3 CÁC YÊU CẦU CỦA PHÂN CỤM DỮ LIỆU 1.4 CÁC KIỂU DỮ LIỆU TRONG PHÂN CỤM... tài "Phân cụm liệu ứng dụng phân loại cấu trúc protein" MỤC TIÊU NGHIÊN CỨU - Tìm hiểu tổng quan lý thuyết phân cụm liệu - Nghiên cứu số kỹ thuật phân cụm liệu ứng dụng phân loại cấu trúc protein. .. tài liệu website tài liệu liên quan - Phân tích, tổng hợp lý thuyết giới thiệu phân cụm liệu số thuật toán phân cụm liệu dựa vào cụm trung tâm ứng dụng phân loại cấu trúc protein - Tìm hiểu sử dụng