Bài giữa kỳ môn khai thác dữ liệu và ứng dụng

8 5 0
Bài giữa kỳ môn khai thác dữ liệu và ứng dụng

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

Thông tin tài liệu

Kmean clustering là một phương pháp để tìm các cụm và hạt nhân trung tâm của cụm trong một tập hợp dữ liệu không được gắn nhãn. Người ta chọn số lượng hạt nhân cụm mong muốn phân chẳng hạn như k cụm. Thuật toán Kmean di chuyển lặp đi lặp lại các hạt nhân để giảm thiểu tổng số trong phương sai cụm. Với một tập hợp các hạt nhân ban đầu, thuật toán Kmeans lặp lại hai bước:

Bài Kiểm Tra kì Khai thác Dữ liệu & Ứng dụng 1/ Mơ tả tốn K-mean clustering phương pháp để tìm cụm hạt nhân - trung tâm cụm tập hợp liệu không gắn nhãn Người ta chọn số lượng hạt nhân cụm mong muốn phân chẳng hạn k cụm Thuật toán K-mean di chuyển lặp lặp lại hạt nhân để giảm thiểu tổng số phương sai cụm Với tập hợp hạt nhân ban đầu, thuật toán Kmeans lặp lại hai bước: - Đối với hạt nhân, tính tốn khoảng cách training ponit với gần -> gán cụm hạt nhân Sau phân cụm bước trên, training point cụm tính tốn vector trung bình để vị trí hạt nhân lặp lại bước đến thay đổi vị trí hạt nhân Phân cụm có nhiều hữu ích đặc biệt phổ biến ngành khoa học liệu Trong : - - Phân tích cụm sử dụng rộng rãi nghiên cứu thị trường, nhận dạng mẫu, phân tích liệu xử lý ảnh Phân tích cụm giúp nhà khoa học liệu khám phá nhóm khác hàng họ Và họ mơ tả đặc điểm nhóm khách hàng dựa lịch sử mua hàng Trong lĩnh vực sinh học, sử dụng để xác định phân loại thực vật động vật, phân loại gen có chức tương tự hiểu sâu cấu trúc vốn có quần thể 2/ Mơ tả giải thuật 3/ Dựa vào thuật tốn (cơng thức, model), bước tính kết 3.1/ Model tổng quan 3.2/ Bài làm chi tiết 1/ Khởi tạo ngẫu nhiên k tâm cụm μ1,μ2,…,μk 2/ Lặp lại trình cập nhật tâm cụm dừng: a/ Xác định nhãn cho điểm liệu ci dựa vào khoảng cách tới tâm cụm: b/ Tính tốn lại tâm cho cụm theo trung bình tồn điểm liệu cụm: Trong công thức 2.a ‖x‖22 bình phương norm chuẩn bậc 2, kí hiệu L2, norm chuẩn bậc độ đo khoảng cách thường sử dụng machine learning Trong công thức 2.b sử dụng hàm 1(.), hàm có giá trị trả nhãn điểm liệu ci dự báo thuộc cụm j, trái lại trả giá trị Như tử số vế phải cơng thức 2.b tổng khoảng cách toàn điểm liệu nằm cụm j mẫu số số lượng điểm liệu thuộc cụm j μj vị trí tâm cụm j mà ta dự báo thời điểm Trong thuật tốn tham số mà cần lựa chọn số lượng cụm k Thời điểm ban đầu ta khởi tạo k điểm liệu cách ngẫu nhiên sau gán tâm giá trị k điểm liệu 4/ Nhận xét Thuật toán K-means có ưu điểm dễ dàng cài đặt cho kết dễ hiểu, lại có nhược điểm phải số lượng cluster yêu cầu CSDL cần phân nhóm phải xác định tâm Thuật tốn không phù hợp với việc khai phá liệu gồm cluster có hình dạng khơng lồi KMeans hay gặp lỗi với liệu có phần tử ngoại lai (outliers) Đối với tập liệu có số chiều lớn liệu có nhiều phần tử nhiễu tập liệu biểu gien giải thuật Kmeans thực không đạt hiệu cao Một nhược điểm k- có nghĩa phân cụm thực tế bạn phải xác định số lượng cụm đầu vào cho thuật tốn Theo thiết kế, thuật tốn khơng có khả xác định số cụm thích hợp phụ thuộc vào người dùng để xác định điều trước Ví dụ: bạn có nhóm người nhóm dựa nhận dạng giới tính nhị phân nam nữ, gọi thuật tốn k- có nghĩa sử dụng đầu vào k = buộc người thành ba cụm có hai đầu vào k = 2, cung cấp phù hợp tự nhiên Tương tự, nhóm cá nhân dễ dàng nhóm lại dựa trạng thái nhà bạn gọi thuật tốn k- có nghĩa với đầu vào k = 20, kết tổng quát để có hiệu 5/ Code mẫu Code Python chạy ứng dụng Colaboratory from google.colab import drive drive.mount('/content/gdrive') import numpy as np import matplotlib.pyplot as plt from future import print_function # tinh toan khoang cach cap diem tap hop hieu qua from scipy.spatial.distance import cdist #print(np.random.seed(11)) # center means = [[2,2], [8,3], [3,6]] # khoi tao ma tran hiep phuong sai la ma tran don vi cov = [[1,0], [0,1]] # so du lieu moi cluster N=500 # khoi tao cac cluster X0 = np.random.multivariate_normal(means[0], cov, N) X1 = np.random.multivariate_normal(means[1], cov, N) X2 = np.random.multivariate_normal(means[2], cov, N) # join X = np.concatenate((X0,X1,X2), axis = 0) K = original_label = np.asarray([0]*N + [1]*N + [2]*N).T print(original_label) def kmeans_display(X, label): K = np.amax(label) +1 X0 = X[label == 0,:] X1 = X[label == 1,:] X2 = X[label == 2, :] plt.plot(X0[:, 0], X0[:, 1], plt.plot(X1[:, 0], X1[:, 1], plt.plot(X2[:, 0], X2[:, 1], # thiet lap ti le cot bang plt.axis('equal') plt.plot() plt.show() 'b^', markersize=4, alpha =.8) 'go', markersize=4, alpha =.8) 'rs', markersize=4, alpha =.8) kmeans_display(X,original_label) Kết in ra: # khoi tao center ban dau def kmeans_init_centers(X, k): # randomly pick k rows of X as initial centers [chọn ngẫu nhiên k hàng X làm tâm ban đầu] x return X[np.random.choice(X.shape[0], k, replace=False)] # gan nhan moi cho cac diem biet conter def kmeans_assign_labels(X, centers): # calculate pairwise distances btw [tính tốn khoảng cách theo cặp btw ] x data and centers D = cdist(X, centers) # return index of the closest center [chỉ mục trả trung tâm gần nhất] x return np.argmin(D, axis = 1) # để cập nhật centers dua liệu vừa gán nhãn def kmeans_update_centers(X, labels, K): centers = np.zeros((K, X.shape[1])) for k in range(K): # collect all points assigned to the k-th cluster [thu thập tất điểm giao cho cụm thứ k] x Xk = X[labels == k, :] # take average [lấy trung bình] x centers[k,:] = np.mean(Xk, axis = 0) return centers # kiem tra dieu kiem dung cua thuat toan def has_converged(centers, new_centers): # return True if two sets of centers are the same [trả True hai tập trung tâm giống nhau] x return (set([tuple(a) for a in centers]) == set([tuple(a) for a in new_centers])) def kmeans(X,K): centers = [kmeans_init_centers(X,K)] labels = [] it =0 while True: labels.append(kmeans_assign_labels(X, centers[-1])) new_centers = kmeans_update_centers(X, labels[-1],K) if has_converged(centers[-1], new_centers): break centers.append(new_centers) it += return (centers, labels, it) def loss(label, original_label): l =0 for i in range(len(original_label)): if label[i] != original_label[i]: l +=1 return l (centers, labels, it) = kmeans(X,K) print('Centers found by our algorithm: ') print(centers[-1]) original_label = np.asarray([2]*N + [0]*N + [1]*N).T print(loss(labels[-1],original_label)) kmeans_display(X, labels[-1]) In kết : from sklearn.cluster import KMeans # khoi tao model va fit du lieu kmeans = KMeans(n_clusters=3, random_state=0).fit(X) print('Center found by sckit-learn:') print(kmeans.cluster_centers_) # prediction du lieu pred_label = kmeans.predict(X) kmeans_display(X, pred_label) Kết cuối cùng: ... với việc khai phá liệu gồm cluster có hình dạng khơng lồi KMeans hay gặp lỗi với liệu có phần tử ngoại lai (outliers) Đối với tập liệu có số chiều lớn liệu có nhiều phần tử nhiễu tập liệu biểu... sử dụng đầu vào k = buộc người thành ba cụm có hai đầu vào k = 2, cung cấp phù hợp tự nhiên Tương tự, nhóm cá nhân dễ dàng nhóm lại dựa trạng thái nhà bạn gọi thuật tốn k- có nghĩa với đầu vào... điểm liệu nằm cụm j mẫu số số lượng điểm liệu thuộc cụm j μj vị trí tâm cụm j mà ta dự báo thời điểm Trong thuật tốn tham số mà cần lựa chọn số lượng cụm k Thời điểm ban đầu ta khởi tạo k điểm liệu

Ngày đăng: 16/12/2022, 18:10

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

Tài liệu liên quan