1. Giới thiệu

Với thời đại tài liệu bùng nổ như ngày nay, dữ liệu ta tích lũy được rất lớn. Vào thực tế, cácvector sệt trưng(feature vectors) hoàn toàn có thể có số chiều cực kỳ lớn, cho tới vài nghìn. Đồng thời, lượng điểm dữ liệu cũng rất lớn. Điều đó sẽ gây trở ngại cho việc tàng trữ và tính toán. Bởi vì vậy, trong số những bước đặc biệt quan trọng trong nhiều câu hỏi học thứ là ta phảigiảm chiều dữ liệu(dimentionality reduction).

Bạn đang xem: Thuật toán pca là gì, phép phân tích thành phần chính, principal component analysis (pca)

Giảm chiều dữ liệucòn là phương pháp được áp dụng để bớt vấn đềquá khớp(overfitting),nó có hai phía là hướnglựa lựa chọn đặc trưng(feature selection) và hướngtrích xuất sệt trưng(feature extraction). Lúc này ta sẽ tìm hiểu về một thuật toán theo hướngtrích xuất đặc trưnglà Principal Component Analysis (PCA).

Xem thêm: Hướng Dẫn Cách Gấp Hạc Giấy Và Câu Chuyện Về 1000 Con Hạc Giấy Senbazuru

1.1 giới thiệu về PCA


*

1.2 Cở sở toán học

Kỳ vọng (mean)

Là giá chỉ trị ý muốn muốn, nó đơn giản và dễ dàng là trung bình cộng của tổng thể các giá bán trị

ChoNgiá trị

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

3. Demo đối chọi giản

*
*
*
*
*
*
*
*

Dữ liệu được trải rộng hơn ở trục PC 1 – yếu tố chính đầu tiên (the first principal component)Dữ liệu được trải rộng it hơn ở trục PC 2 – thành phần chính thứ nhị (the second principal component)Phần này ta áp dụng thư viện sklearn để giảm chiều tài liệu và training

from matplotlib.colors import ListedColormapdef plot_decision_regions(X, y, classifier, resolution=0.02): # thiết lập marker generator and màu sắc map markers = ("s", "x", "o", "^", "v") colors = ("red", "blue", "lightgreen", "gray", "cyan") cmap = ListedColormap(colors<:len(np.unique(y))>) # plot the decision surface x1_min, x1_max = X<:, 0>.min() - 1, X<:, 0>.max() + 1 x2_min, x2_max = X<:, 1>.min() - 1, X<:, 1>.max() + 1 xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution), np.arange(x2_min, x2_max, resolution)) Z = classifier.predict(np.array().T) Z = Z.reshape(xx1.shape) plt.contourf(xx1, xx2, Z, alpha=0.4, cmap=cmap) plt.xlim(xx1.min(), xx1.max()) plt.ylim(xx2.min(), xx2.max()) # plot examples by class for idx, cl in enumerate(np.unique(y)): plt.scatter(x=X, y=X, alpha=0.6, color=cmap(idx), edgecolor="black", marker=markers, label=cl)from sklearn.linear_model import LogisticRegressionfrom sklearn.decomposition import PCA# initializing the PCA transformer and# logistic regression estimator:pca = PCA(n_components=2)lr = LogisticRegression(multi_class="ovr", random_state=1, solver="lbfgs")# dimensionality reduction:X_train_pca = pca.fit_transform(X_train_std)X_test_pca = pca.transform(X_test_std)# fitting the logistic regression model on the reduced dataset:lr.fit(X_train_pca, y_train)#OutputLogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, max_iter=100, multi_class="ovr", n_jobs=None, penalty="l2", random_state=1, solver="lbfgs", tol=0.0001, verbose=0, warm_start=False)Phân loại tài liệu trên tập train chỉ với dữ liệu 2 chiều

plot_decision_regions(X_train_pca, y_train, classifier=lr)plt.xlabel("PC 1")plt.ylabel("PC 2")plt.legend(loc="lower left")plt.tight_layout()plt.show()
Phân loại dữ liệu trên tập demo chỉ với dữ liệu 2 chiều

plot_decision_regions(X_test_pca, y_test, classifier=lr)plt.xlabel("PC1")plt.ylabel("PC2")plt.legend(loc="lower left")plt.tight_layout()plt.show()
Ta hoàn toàn có thể thấy chỉ có một vài ba điểm bị phân một số loại sai, logistic regression hoạt động khá xuất sắc trên không gian hai chiều này.

4. Kết luận

4.1 Ưu điểm của PCA

Loại bỏ những đặc trưng đối sánh tương quan (giảm các đặc trưng)Cải thiện hiệu suất thuật toánGiảm thừa khớp (overfitting)Cải thiện trực quan hóa dữ liệu (dễ trực quan tiền hóa khi gồm ít chiều)

4.2 điểm yếu kém của PCA

Các biến tự do trở đề nghị khó gọi hơn (các đặc thù mới rất khó đọc và dễ nắm bắt như các đặc trưng ban đầu).Chuẩn hóa dữ liệu trước khi sử dụng PCA.Mất thông tin.

5. Tài liệu tham khảo

<1>Python machine learning book

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *