Báo cáo chuyên đề học phần khai phá dữ liệu đề ti ứng dụng thuật toán phân cụm kmeans clustering

22 19 0
Báo cáo chuyên đề học phần khai phá dữ liệu đề ti ứng dụng thuật toán phân cụm kmeans clustering

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN KHAI PHÁ DỮ LIỆU ĐỀ TI: ỨNG DỤNG THUẬT TOÁN PHÂN CỤM KMEANS CLUSTERING ĐỂ DỰ ĐOÁN TỶ LỆ SINH V TUỔI THỌ CÁC NƯỚC Sinh viên thực : NGUYỄN : NGUYỄN : NGUYỄN Giảng viên hướng : NGUYỄN dẫn TÂN TUẤN NHẬT ĐÌNH SANG ĐỨC HẢI THỊ THANH Ngành : CƠNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D14CNPM4 Khóa : 2019-2024 Hà Nội, tháng 12 năm 2020 PHIẾU CHẤM ĐIỂM Sinh viên thực Họ tên Chữ ký Ghi Chú Chữ ký Ghi Nguyễn Tuấn Nhật Nguyễn Đình Sang Nguyễn Đức Hải Giảng viên chấm Họ tên Giảng viên chấm Giảng viên chấm M'c l'c CHƯƠNG TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU CHƯƠNG THUẬT TOÁN K-MEANS CLUSTERING TRONG BI TOÁN PHÂN CỤM 2.1 Tổng quan thuật toán K-Means Clustering 2.2 Thuật toán K-Means Clustering: 2.2.1 Mô hình tốn học: 2.2.2 Độ xác thuật tốn: 2.2.3 Nghiệm thuật toán K-Means Clustering: 2.2.4 Tóm tắt thuật tốn: .8 CHƯƠNG ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING 10 3.1 Dữ liệu tỷ lệ sinh tuổi thọ .10 3.1.1 Phát biểu toán: 10 3.1.2 Yêu cầu: 10 3.1.3 Bộ liệu: 10 3.1.4 Tiến hành phân c'm 11 Thực hàm thuật tốn K có nghĩa 13 # Làm hoạt động: 13 # 1) chọn k điểm làm số c'm 13 # 2) tìm khoảng cách eucledian điểm (x, y) tập liệu với k điểm-tâm xác định 13 # 3) định điểm liệu cho tâm gần cách sử d'ng khoảng cách tìm thấy bước trước 13 # 4) tìm trọng tâm cách lấy giá trị trung bình (trung bình) nhóm c'm 13 # 5) lặp lại từ đến cho số lần lặp cố định trọng tâm không thay đổi 13 LỜI MỞ ĐẦU Công nghệ ngày phổ biến không phủ nhận tầm quan trọng hiệu mà đem lại cho sống Bất kỳ lĩnh vực nào, góp mặt trí tuệ nhân tạo giúp người làm việc hồn thành tốt cơng việc Và gần đây, thuật ngữ “Data Mining” nhiều người quan tâm.Thay phải code phần mềm với cách thức thủ công theo hướng dẫn c' thể nhằm hồn thành nhiệm v' đề máy tính tự “học hỏi” cách sử d'ng lượng lớn liệu thuật toán cho phép thực tác v' Đây lĩnh vực khoa học không mới, cho thấy lĩnh vực trí tuệ nhân tạo ngày phát triển tiến xa tương lai Đồng thời, thời điểm xem lĩnh vực “nóng” dành nhiều mối quan tâm để phát triển cách mạnh mẽ, bùng nổ Hiện nay, việc quan tâm machine learning ngày tăng lên nhờ có machine learning giúp gia tăng dung lượng lưu trữ loại liệu sẵn, việc xử lý tính tốn có chi phí thấp hiệu nhiều Những điều hiểu thực tự động, nhanh chóng để tạo mơ hình cho phép phân tích liệu có quy mơ lớn phức tạp đồng thời đưa kết cách nhanh xác Chính hiệu cơng việc lợi ích vượt bậc mà đem lại cho khiến machine learning ngày trọng quan tâm nhiều Vì chúng em chọn đề tài ”Ứng d'ng thuật toán K-Means để dự đoán tỷ lệ sinh tuổi thọ nước giới để làm báo cáo Chúng em xin chân thành gửi lời cảm ơn tới thầy cô giáo Trường Đại học Điện Lực nói chung thầy giáo Khoa Cơng nghệ thơng tin nói riêng tận tình giảng dạy, truyền đạt cho chúng em kiến thức kinh nghiệm quý báu suốt trình học Đặc biệt, em gửi lời cảm ơn đến Cô Trần Thị Thanh Tâm tận tình theo sát giúp đỡ, trực tiếp bảo, hướng dẫn suốt trình nghiên cứu học tập chúng em CHƯƠNG TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 1.1.1 Tại lại cần khai phá liệu (datamining) Khoảng thập kỷ trở lại đây, lượng thông tin lưu trữ thiết bị điện tử (đĩa cứng, CD-ROM, băng từ, v.v.) khơng ngừng tăng lên Sự tích lũy liệu xảy với tốc độ bùng nổ Người ta ước đốn lượng thơng tin tồn cầu tăng gấp đơi sau khoảng hai năm theo số lượng kích cỡ sở liệu (CSDL) tăng lên cách nhanh chóng Nói cách hình ảnh “ngập” liệu lại “đói” tri thức Câu hỏi đặt liệu khai thác từ “núi” liệu tưởng chừng “bỏ đi” không ? “Necessity is the mother of invention” - Data Mining đời hướng giải hữu hiệu cho câu hỏi vừa đặt [] Khá nhiều định nghĩa Data Mining đề cập phần sau, nhiên tạm hiểu Data Mining công nghệ tri thức giúp khai thác thông tin hữu ích từ kho liệu tích trữ suốt q trình hoạt động cơng ty, tổ chức 1.1.2 Khai phá liệu gì? Khai phá liệu (datamining) định nghĩa trình chắt lọc hay khai phá tri thức từ lượng lớn liệu Một ví d' hay sử d'ng là việc khai thác vàng từ đá cát, Dataming ví cơng việc "Đãi cát tìm vàng" tập hợp lớn liệu cho trước Thuật ngữ Dataming ám việc tìm kiếm tập hợp nhỏ có giá trị từ số lượng lớn liệu thơ Có nhiều thuật ngữ dùng có nghĩa tương tự với từ Datamining Knowledge Mining (khai phá tri thức), knowledge extraction(chắt lọc tri thức), data/patern analysis(phân tích liệu/mẫu), data archaeoloogy (khảo cổ liệu), datadredging(nạo vét liệu), Định nghĩa: Khai phá liệu tập hợp kỹ thuật sử d'ng để tự động khai thác tìm mối quan hệ lẫn liệu tập hợp liệu khổng lồ phức tạp, đồng thời tìm mẫu tiềm ẩn tập liệu Khai phá liệu bước bảy bước trình KDD (Knowleadge Discovery in Database) KDD xem trình khác theo thứ tự sau:s Làm liệu (data cleaning & preprocessing)s: Loại bỏ nhiễu liệu không cần thiết Tích hợp liệu: (data integration): q trình hợp liệu thành kho liệu (data warehouses & data marts) sau làm tiền xử lý (data cleaning & preprocessing) Trích chọn liệu (data selection): trích chọn liệu từ kho liệu sau chuyển đổi dạng thích hợp cho q trình khai thác tri thức Q trình bao gồm việc xử lý với liệu nhiễu (noisy data), liệu không đầy đủ (incomplete data), v.v Chuyển đổi liệu: Các liệu chuyển đổi sang dạng phù hợp cho trình xử lý Khai phá liệu(data mining): Là bước quan trọng nhất, sử d'ng phương pháp thông minh để chắt lọc mẫu liệu 6 Ước lượng mẫu (knowledge evaluation): Q trình đánh giá kết tìm thơng qua độ đo Biểu diễn tri thức (knowledge presentation): Quá trình sử d'ng kỹ thuật để biểu diễn thể trực quan cho người dùng 1.1.3 Các chức khai phá liệu Data Mining chia nhỏ thành số hướng sau: • Mơ tả khái niệm (concept description): thiên mơ tả, tổng hợp tóm tắt khái niệm Ví d': tóm tắt văn • Luật kết hợp (association rules): dạng luật biểu diễn tri thứ dạng đơn giản Ví d': “60 % nam giới vào siêu thị mua bia có tới 80% số họ mua thêm thịt bò khô” Luật kết hợp ứng d'ng nhiều lĩnh vực kính doanh, y học, tinsinh, tài & thị trường chứng khốn, v.v • Phân lớp dự đốn (classification & prediction): xếp đối tượng vào lớp biết trước Ví d': phân lớp vùng địa lý theo liệu thời tiết Hướng tiếp cận thường sử d'ng số kỹ thuật machine learning định (decision tree), mạng nơ ron nhân tạo (neural network), v.v Người ta gọi phân lớp học có giám sát (học có thầy) • Phân c'm (clustering): xếp đối tượng theo c'm (số lượng tên c'm chưa biết trước Người ta cịn gọi phân c'm học khơng giám sát (học khơng thầy) • Khai phá chuỗi (sequential/temporal patterns): tương tự khai phá luật kết hợp có thêm tính thứ tự tính thời gian Hướng tiếp cận ứng d'ng nhiều lĩnh vực tài thị trường chứng khốn có tính dự báo cao 1.1.4 Ứng dụng khai phá liệu Data Mining hướng tiếp cận thu hút nhiều quan tâm nhà nghiên cứu phát triển nhờ vào ứng d'ng thực tiễn Chúng ta liệt kê số ứng d'ng điển hình: • Phân tích liệu hỗ trợ định (data analysis & decision support) • Điều trị y học (medical treatment) • Text mining & Web mining • Tin-sinh (bio-informatics) • Tài thị trường chứng khốn (finance & stock market) • Bảo hiểm (insurance) • Nhận dạng (pattern recognition) • v.v CHƯƠNG THUẬT TỐN K-MEANS CLUSTERING TRONG BI TOÁN PHÂN CỤM 2.1 Tổng quan thuật toán K-Means Clustering Với thuật toán K-Means Clustering, nhãn (label) điểm liệu M'c đích làm thể để phân liệu thành c'm (cluster) khác cho liệu c'm có tính chất giống Ý tưởng đơn giản cluster (c'm) tập hợp điểm gần không gian (khơng gian có nhiều chiều trường hợp thông tin điểm liệu lớn) Hình bên ví d' c'm liệu (từ viết gọn cluster) Hình 2.1: Bài tốn với clusters Giả sử cluster có điểm đại diện (center) màu vàng Và điểm xung quanh center thuộc vào nhóm với center Một cách đơn giản nhất, xét điểm bất kỳ, ta xét xem điểm gần với center thuộc nhóm với center 2.2 Thuật tốn K-Means Clustering: 2.2.1 Mơ hình tốn học: Ta gọi điểm vị trí trung bình tất điểm liệu c'm trung tâm cụm Như vậy, có K c'm có K trung tâm c'm trung tâm c'm nằm gần điểm liệu c'm tương ứng trung tâm c'm khác Trong hình đây, K = ta có trung tâm c'm điểm màu vàng Hình 2.2: Mơ hình liệu phân cụm Để phân c'm liệu K-Means Clustering, trước hết ta chọn K số c'm để phân chia chọn ngẫu nhiên K số m liệu ban đầu làm trung tâm c'm μ1, μ2, …, μK Sau đó, với điểm liệu x(i) ta gán cho c'm c(i) c'm có trung tâm c'm gần Khi tất điểm liệu gán c'm, bước tính tốn lại vị trí trung tâm c'm trung bình tọa độ điểm liệu c'm với k1, k2, …, kn số liệu thuộc c'm thứ k Các bước lặp lại vị trí trung tâm c'm khơng đổi sau bước lặp 2.2.2 Độ xác thuật tốn: Hàm mát thuật tốn K-Means Clustering đặc trưng cho độ xác lớn khoảng cách từ điểm liệu tới trung tâm c'm lớn 2.2.3 Nghiệm thuật toán K-Means Clustering: Trong bước thuật toán, thực chất bước gán điểm liệu trung tâm c'm gần bước thay đổi trung tâm c'm vị trí trung bình điểm liệu c'm nhằm m'c đích giảm hàm mát Thuật tốn kết thúc vị trí trung tâm c'm không đổi sau bước lặp Khi hàm mát đạt giá trị nhỏ Khi K nhỏ so với m, thuật toán dễ đến kết chưa phải tối ưu Điều ph' thuộc vào cách chọn K trung tâm c'm ban đầu Để khắc ph'c điều này, ta cần lặp lại thuật toán nhiều lần chọn phương án có giá trị hàm mát nhỏ 2.2.4 Tóm tắt thuật tốn: Đầu vào: Dữ liệu XX số lượng cluster cần tìm KK Đầu ra: Các center MM label vector cho điểm liệu YY Chọn KK điểm làm center ban đầu Phân điểm liệu vào cluster có center gần Nếu việc gán liệu vào cluster bước không thay đổi so với vịng lặp trước ta dừng thuật tốn Cập nhật center cho cluster cách lấy trung bình cộng tất các điểm liệu gán vào cluster sau bước Quay lại bước CHƯƠNG ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING 3.1 Dữ liệu tỷ lệ sinh tuổi thọ 3.1.1 Phát biểu toán: Bài toán phân loại tuổi sinh tuổi thọ nước - Giá trị input: Thông tin quốc gia, tỷ lệ sinh tuổi thọ - Giá trị output: tên c'm chúng phân vào 3.1.2 Yêu cầu: - Lấy liệu mơ tả đặc tính tỷ lệ sinh tuổi thọ Trích chọn đặc trưng từ tập liệu lấy Xử lý, làm liệu Tiến hành phân c'm Dữ liệu hóa đồ thị 3.1.3 Bộ liệu: Bộ liệu bao gồm đặc trưng nồng độ thành phần ảnh hưởng đển tỷ lệ sinh tuổi thọ, bao gồm: - Countries: quốc gia - BirthRate): tỷ lệ sinh - LifeExpectancy(2008): tuổi thọ Hình 3.1: Dữ liệu cụ thể 3.1.4 Tiến hành phân cụm IMPORT THƯ VIỆN: import matplotlib.pyplot as plt import random import numpy as np import pandas as pd import math as sqrt ĐỌC FILE DỮ LIỆU CSV: data = pd.read_csv("data2008.csv") HÀM KHOẢNG CÁCH TÂM CỤM VÀ VẼ # Hàm khoảng cách Euclide def euclidean_distance(x1, x2): return np.sqrt(np.sum((x1 - x2)**2)) # trung bình def compute_mean(clusters, classification): return np.average(clusters[classification], axis=0) # def visualize_clusters(centroids, clusters): colors = 10*['b', 'g', 'c','r', 'k'] for centroid in centroids: # plot centroids plt.scatter(centroids[centroid][0], centroids[centroid][1], marker="x", s=15**2, linewidths=5, label="centroid") # vẽ điểm liệu tô màu chúng dựa c'm chúng for classification in clusters: color = colors[classification] for featureset in clusters[classification]: plt.scatter(featureset[0], featureset[1], color=color, s=30) plt.title('2008 demographics') plt.xlabel('BirthRate(Per1000 - 2008)') plt.ylabel('LifeExpectancy(2008)') plt.legend(loc='upper right') plt.show() Thực hàm thuật tốn K có nghĩa : # 1) chọn k điểm làm số cụm # 2) tìm khoảng cách eucledian điểm (x, y) tập liệu với k điểm-tâm xác định # 3) định điểm liệu cho tâm gần cách sử dụng khoảng cách tìm thấy bước trước # 4) tìm trọng tâm cách lấy giá trị trung bình (trung bình) nhóm cụm # 5) lặp lại từ đến cho số lần lặp cố định trọng tâm không thay đổi def k_Means(DataXy, k, max_iter, tolerance = 0.0001): # chọn centroid cách ngẫu nhiên centroids = {} # từ điển lưu trữ điểm (x, y) centroid for i in range(k): centroids[i] = random.choice(DataXy) # phân loại / tạo c'm #dist = khoảng cách (DataXy, centroid) for i in range(max_iter): clusters = {} # c'm tạm thời for i in range(k): clusters[i] = [] #chính giá trị centroid tập hợp tính (điểm liệu) for featureset in DataXy: # tìm khoảng cách điểm c'm (centroid) distances = [euclidean_distance(featureset, centroids[centroid]) for centroid in centroids] classification = distances.index(min(distances)) clusters[classification].append(featureset) prev_centroids = dict(centroids) # xác định lại centroid c'm # centroid trung bình tất # điểm liệu thuộc c'm for classification in clusters: centroids[classification] = compute_mean(clusters, classification) # tối ưu hóa # Thuật tốn hội t' # phần trăm thay đổi (cnvg) giá trị centroid thấp mức chấp nhận # giá trị dung sai (0,0001) optimized = True for c in centroids: original_centroid = prev_centroids[c] current_centroid = centroids[c] cnvg = np.sum((current_centroidoriginal_centroid)/original_centroid*100.00) print(f"Tính tổng lần lặp:: {cnvg}") if cnvg > tolerance: optimized = False if optimized: # c'm trực quan hóa visualize_clusters(centroids, clusters) # Một số thống kê kết phân nhóm # số quốc gia c'm # danh sách quốc gia c'm # Tuổi thọ trung bình Kỳ vọng Tỷ lệ sinh trung bình cho c'm cnt = data['Countries'] # sử d'ng để truy vấn quốc gia tập liệu i = # nhãn cho số culster vòng lặp for classification in clusters: count = # đếm số lượng c'm countries = [] # lưu trữ quốc gia c'm meanLifExp = [] # tuổi thọ trung bình c'm birthRate = [] # tỷ lệ sinh c'm for featureset in clusters[classification]: count +=1 countries.append(cnt[(data['BirthRate(Per1000 2008)']== featureset[0]) & (data['LifeExpectancy(2008)'] == featureset[1])]) # meanLifExp lưu trữ kỳ vọng tuổi thọ cho c'm để tính giá trị trung bình sau meanLifExp.append(featureset[1]) # Tỷ lệ sinh cho c'm birthRate.append(featureset[0]) print(f"\n\n=== Số quốc gia cho c'm {i} is {count} ===") print(f"Tuổi thọ trung bình {np.mean(meanLifExp):.3f}") print(f"Tỷ lệ sinh trung bình {np.mean(birthRate):.3f}") print(f"=== Danh sách quốc gia tỷ lệ sinh cho c'm {i} ===\n\n") i+=1 for country, br in zip(countries, birthRate): print(f"{country.to_string(index=False)} {br:.3f}") # kết thúc triển khai k_Means # Hỏi người dùng số lượng c'm # số lần lặp lại k = int(input("Nhập số lượng c'm bạn muốn tạo: ")) n_iter = int(input("Nhập số lần lặp lại tối đa: ")) # gọi hàm k-mean k_Means(DataXy,k, n_iter) Kết sau chạy Ở cho phép nhập số lượng c'm số lần lặp

Ngày đăng: 12/06/2023, 09:58

Tài liệu cùng người dùng

Tài liệu liên quan