Hướng dẫn hierarchical in python - phân cấp trong python
Giới thiệu
Sự kết luận
Các chiến lược phân cụm kết tụ và gây chia rẽ là gì và cách chúng hoạt động You can download the notebook containing all of the code in this guide here. Động lựcPhân tích dữ liệu khám phá ngắn gọn
Mã hóa một lần cũng thêm 0 vào dữ liệu của chúng tôi, làm cho nó trở nên thưa thớt hơn, đây có thể là một vấn đề đối với một số thuật toán nhạy cảm với sự thưa thớt dữ liệu.clustering algorithm, such as K-Means, DBSCAN, Hierarchical Clustering, etc. In general terms, clustering algorithms find similarities between data points and group them. Hình dung cấu trúc phân cấp với dendrograms Thực hiện phân cụm phân cấp kết tụ, we can leverage Hierarchical Clustering to solve this problem. This process is also known as Hierarchical Clustering Analysis (HCA).
Sự kết luậnunsupervised algorithm. When grouping data, we won't have a way to verify that we are correctly identifying that a user belongs to a specific group (we don't know the groups). There are no labels for us to compare our results to. If we identified the groups correctly, it will be later confirmed by the marketing department on a day-to-day basis (as measured by metrics such as ROI, conversion rates, etc.). Nội phân chính Phân tích dữ liệu khám phá ngắn gọnMã hóa các biến và kỹ thuật tính năng You can download the dataset used in this guide here. Cấu trúc cơ bản và giảm kích thước
Hình dung cấu trúc phân cấp với dendrograms
Thực hiện phân cụm phân cấp kết tụ
Đi xa hơn-Dự án đầu cuối cầm tay Sau khi đọc hướng dẫn, bạn sẽ hiểu:
Khi nào nên áp dụng phân cụm phân cấp Chúng ta hãy xem nhanh phân phối điểm số này để kiểm tra thói quen chi tiêu của người dùng trong bộ dữ liệu của chúng tôi. Đó là nơi phương pháp gấu trúc 4 xuất hiện để giúp đỡ:
Bằng cách nhìn vào biểu đồ, chúng tôi thấy rằng hơn 35 khách hàng có điểm từ 5 đến 6, sau đó ít hơn 25 có điểm từ 7 đến 8. Vì vậy, hầu hết khách hàng của chúng tôi là những người chi tiêu cân bằng, tiếp theo là những người chi tiêu từ trung bình đến cao. Chúng ta cũng có thể thấy rằng có một dòng sau 9, ở bên trái của phân phối và một dòng khác trước 100, ở bên phải của phân phối. Những không gian trống này có thể có nghĩa là phân phối không chứa những người không phải là người chi tiêu, sẽ có điểm 9 và cũng không có người chi tiêu cao với số điểm 1.Để xác minh xem điều đó có đúng không, chúng ta có thể xem xét các giá trị tối thiểu và tối đa của phân phối. Những giá trị đó có thể dễ dàng tìm thấy như là một phần của thống kê mô tả, vì vậy chúng ta có thể sử dụng phương pháp 2 để hiểu về các phân phối giá trị số khác: 5Điều này sẽ cung cấp cho chúng tôi một bảng từ nơi chúng tôi có thể đọc các phân phối của các giá trị khác của bộ dữ liệu của chúng tôi: 6Giả thuyết của chúng tôi được xác nhận. Giá trị 3 của 2 là 5 và tối đa là 6. Vì vậy, chúng tôi không có người chi tiêu 9 hoặc 1. Sau đó, hãy xem các cột khác của bảng 9 được chuyển đổi. Khi nhìn vào các cột 50 và 51, chúng ta có thể thấy rằng với 0 50 là 54 và 51 xấp xỉ 56. Điều tương tự cũng xảy ra đối với 1, với 50 là 59 và 51 61, và đối với 2 với 50 của 64 và 51 của 66. Đối với tất cả các tính năng, 50 khác xa với độ lệch chuẩn, cho thấy dữ liệu của chúng tôi có độ biến thiên cao.Để hiểu rõ hơn về cách dữ liệu của chúng tôi thay đổi, hãy vẽ phân phối 1: 3Điều này sẽ cung cấp cho chúng tôi: Lưu ý trong Biểu đồ rằng hầu hết dữ liệu của chúng tôi, hơn 35 khách hàng, tập trung gần số 6, trên 50 của chúng tôi, trong trục ngang. Nhưng điều gì xảy ra khi chúng ta di chuyển về phía cuối của phân phối? Khi đi về phía bên trái, từ giá trị trung bình $ 60,560, giá trị tiếp theo chúng ta sẽ gặp là $ 34,300 - giá trị trung bình ($ 60.560) trừ đi biến thể tiêu chuẩn ($ 26,260). Nếu chúng tôi đi xa hơn bên trái phân phối dữ liệu của chúng tôi, một quy tắc tương tự được áp dụng, chúng tôi sẽ trừ biến thể tiêu chuẩn ($ 26,260) từ giá trị hiện tại ($ 34,300). Do đó, chúng tôi sẽ gặp phải giá trị $ 8,040. Lưu ý cách dữ liệu của chúng tôi đã đi từ $ 60k đến $ 8k một cách nhanh chóng. Đó là "nhảy" $ 26,260 mỗi lần - thay đổi rất nhiều, và đó là lý do tại sao chúng ta có sự thay đổi cao như vậy.
Cho đến nay, chúng tôi đã thấy hình dạng của dữ liệu của chúng tôi, một số phân phối của nó và thống kê mô tả. Với gấu trúc, chúng tôi cũng có thể liệt kê các loại dữ liệu của mình và xem tất cả 200 hàng của chúng tôi được lấp đầy hoặc có một số giá trị 31: 7Kết quả này trong: 0Ở đây, chúng ta có thể thấy rằng không có giá trị 31 trong dữ liệu và chúng ta chỉ có một cột phân loại - 9. Ở giai đoạn này, điều quan trọng là chúng ta có trong tâm trí những tính năng có vẻ thú vị khi được thêm vào mô hình phân cụm. Nếu chúng tôi muốn thêm cột thể loại vào mô hình của chúng tôi, chúng tôi sẽ cần chuyển đổi các giá trị của nó từ phân loại sang số.Hãy xem làm thế nào 9 được lấp đầy bằng cách xem nhanh ở 5 giá trị đầu tiên của dữ liệu của chúng tôi: 1Kết quả này trong: 2Ở đây, chúng ta có thể thấy rằng không có giá trị 31 trong dữ liệu và chúng ta chỉ có một cột phân loại - 9. Ở giai đoạn này, điều quan trọng là chúng ta có trong tâm trí những tính năng có vẻ thú vị khi được thêm vào mô hình phân cụm. Nếu chúng tôi muốn thêm cột thể loại vào mô hình của chúng tôi, chúng tôi sẽ cần chuyển đổi các giá trị của nó từ phân loại sang số.Có vẻ như nó chỉ có các danh mục 35 và 36. Chúng ta có thể chắc chắn về điều đó bằng cách xem xét các giá trị độc đáo của nó với 37: 4 3 5Điều này xác nhận giả định của chúng tôi: 6Cho đến nay, chúng tôi biết rằng chúng tôi chỉ có hai thể loại, nếu chúng tôi dự định sử dụng tính năng này trên mô hình của chúng tôi, 36 có thể được chuyển đổi thành 9 và 35 sang 5. Nó cũng quan trọng để kiểm tra tỷ lệ giữa các thể loại, để xem chúng có cân bằng không. Chúng ta có thể làm điều đó với phương thức 72 và đối số của nó 73 để hiển thị tỷ lệ phần trăm giữa 36 và 35:Cho đến bây giờ, tất cả các tính năng nhưng 0, đã được khám phá ngắn gọn. Trong những gì mối quan tâm 0, thường rất thú vị khi chia nó thành các thùng để có thể phân chia khách hàng dựa trên các nhóm tuổi của họ. Nếu chúng ta làm điều đó, chúng ta sẽ cần chuyển đổi các loại tuổi thành một số trước khi thêm chúng vào mô hình của chúng ta. Bằng cách đó, thay vì sử dụng danh mục 15-20 năm, chúng tôi sẽ đếm số lượng khách hàng trong danh mục 78 và đó sẽ là một số trong một cột mới có tên là 78.Lời khuyên: Trong hướng dẫn này, chúng tôi chỉ trình bày phân tích dữ liệu khám phá ngắn gọn. Nhưng bạn có thể đi xa hơn và bạn nên đi xa hơn. Bạn có thể thấy nếu có sự khác biệt về thu nhập và sự khác biệt về điểm dựa trên thể loại và tuổi tác. Điều này không chỉ làm phong phú các phân tích mà còn dẫn đến kết quả mô hình tốt hơn. Để đi sâu hơn vào phân tích dữ liệu khám phá, hãy xem chương EDA trong dự án "dự đoán giá nhà thực hành - học máy trong dự án hướng dẫn Python". In this guide, we present only brief exploratory data analysis. But you can go further and you should go further. You can see if there are income differences and scoring differences based on genre and age. This not only enriches the analysis but leads to better model results. To go deeper into Exploratory Data Analysis, check out the EDA chapter in the "Hands-On House Price Prediction - Machine Learning in Python" Guided Project. In this guide, we present only brief exploratory data analysis. But you can go further and you should go further. You can see if there are income differences and scoring differences based on genre and age. This not only enriches the analysis but leads to better model results. To go deeper into Exploratory Data Analysis, check out the EDA chapter in the "Hands-On House Price Prediction - Machine Learning in Python" Guided Project. Sau khi phỏng đoán về những gì có thể được thực hiện với cả hai cột phân loại - hoặc phân loại là - 9 và 0, hãy áp dụng những gì đã được thảo luận.Mã hóa các biến và kỹ thuật tính năngHãy bắt đầu bằng cách chia 0 thành các nhóm thay đổi trong 10, để chúng tôi có 20-30, 30-40, 40-50, v.v. Vì khách hàng trẻ nhất của chúng tôi là 15, chúng tôi có thể bắt đầu ở tuổi 15 và kết thúc ở 70, đó là tuổi của khách hàng lâu đời nhất trong dữ liệu. Bắt đầu từ 15, và kết thúc ở 70, chúng tôi sẽ có các khoảng 15-20, 20-30, 30-40, 40-50, 50-60 và 60-70.Để nhóm hoặc các giá trị 0 vào các khoảng này, chúng ta có thể sử dụng phương thức PANDAS 04 để cắt chúng thành các thùng và sau đó gán các thùng cho cột ____105 mới: 7Kết quả này trong: 8Lưu ý rằng khi nhìn vào các giá trị cột, cũng có một dòng chỉ định chúng tôi có 6 loại và hiển thị tất cả các khoảng dữ liệu bị hỏng. Bằng cách này, chúng tôi đã phân loại dữ liệu số trước đây của chúng tôi và tạo một tính năng 05 mới.Và chúng tôi có bao nhiêu khách hàng trong mỗi danh mục? Chúng ta có thể nhanh chóng biết rằng bằng cách nhóm cột và đếm các giá trị với 07 và 08: 9Kết quả này trong: 0Lưu ý rằng khi nhìn vào các giá trị cột, cũng có một dòng chỉ định chúng tôi có 6 loại và hiển thị tất cả các khoảng dữ liệu bị hỏng. Bằng cách này, chúng tôi đã phân loại dữ liệu số trước đây của chúng tôi và tạo một tính năng 05 mới.Và chúng tôi có bao nhiêu khách hàng trong mỗi danh mục? Chúng ta có thể nhanh chóng biết rằng bằng cách nhóm cột và đếm các giá trị với 07 và 08: 9 07 và 08: 1Thật dễ dàng để nhận ra rằng hầu hết khách hàng đều từ 30 đến 40 tuổi, tiếp theo là khách hàng từ 20 đến 30 đến sau đó là khách hàng từ 40 đến 50. Đây cũng là thông tin tốt cho bộ phận tiếp thị. Hiện tại, chúng tôi có hai biến phân loại, 0 và 9, mà chúng tôi cần chuyển đổi thành các số để có thể sử dụng trong mô hình của chúng tôi. Có nhiều cách khác nhau để tạo ra sự biến đổi đó- chúng tôi sẽ sử dụng phương pháp Pandas 11 tạo ra một cột mới cho mỗi khoảng và thể loại và sau đó điền vào các giá trị của nó bằng 0 và 1- loại hoạt động này được gọi là mã hóa một lần nóng. Hãy xem nó trông như thế nào:Điều này sẽ cung cấp cho chúng tôi một cái nhìn trước của bảng kết quả: 9 được chia thành các cột - 13 và 14. Khi khách hàng là nữ, 13 bằng 5 và khi khách hàng là nam, nó tương đương với
9.Ngoài ra, cột 0105 được chia thành 6 cột, một cột cho mỗi khoảng, chẳng hạn như 19, 20, v.v. Theo cách tương tự như 9, khi khách hàng 18 tuổi, giá trị 19 là 5 và giá trị của tất cả các cột khác là 9.: If you have a dataset in which the number of one-hot encoded columns exceeds the number of rows, it is best to employ another encoding method to avoid data dimensionality issues.Ưu điểm của mã hóa một lần là sự đơn giản trong việc thể hiện các giá trị cột, thật đơn giản để hiểu những gì đang xảy ra - trong khi nhược điểm là chúng tôi hiện đã tạo thêm 8 cột, để tổng hợp với các cột chúng tôi đã có. CẢNH BÁO: Nếu bạn có một bộ dữ liệu trong đó số lượng các cột được mã hóa một lần nóng vượt quá số lượng hàng, tốt nhất là sử dụng một phương thức mã hóa khác để tránh các vấn đề về kích thước dữ liệu. Mã hóa một lần cũng thêm 0 vào dữ liệu của chúng tôi, làm cho nó trở nên thưa thớt hơn, đây có thể là một vấn đề đối với một số thuật toán nhạy cảm với sự thưa thớt dữ liệu.Đối với nhu cầu phân cụm của chúng tôi, mã hóa một lần nóng dường như hoạt động. Nhưng chúng ta có thể vẽ dữ liệu để xem liệu thực sự có các nhóm khác biệt để chúng ta phân cụm. Cấu trúc cơ bản và giảm kích thướcVì vẽ 10 chiều là một chút không thể, chúng tôi sẽ chọn cách tiếp cận thứ hai - chúng tôi sẽ vẽ đồ thị các tính năng ban đầu của chúng tôi. Chúng tôi có thể chọn hai trong số chúng cho phân tích phân cụm của chúng tôi. Một cách chúng ta có thể thấy tất cả các cặp dữ liệu của mình được kết hợp là với Seaborn 26: 2Hiển thị nào: Trong nháy mắt, chúng ta có thể phát hiện ra các biểu đồ phân tán dường như có các nhóm dữ liệu. Một điều có vẻ thú vị là phân tán kết hợp 1 và 2. Lưu ý rằng không có sự tách biệt rõ ràng giữa các biểu đồ phân tán biến khác. Nhiều nhất, chúng ta có thể nói rằng có hai nồng độ điểm riêng biệt trong phân tán 2 so với 0.Cả hai biểu đồ phân tán bao gồm 1 và 2 về cơ bản là giống nhau. Chúng ta có thể thấy nó hai lần vì trục X và Y đã được trao đổi. Bằng cách xem xét bất kỳ ai trong số họ, chúng ta có thể
thấy những gì dường như là năm nhóm khác nhau. Chúng ta hãy vẽ chỉ hai tính năng đó với Seaborn 33 để xem xét kỹ hơn: 3Bằng cách nhìn gần hơn, chúng tôi chắc chắn có thể phân biệt 5 nhóm dữ liệu khác nhau. Có vẻ như khách hàng của chúng tôi có thể được phân cụm dựa trên số tiền họ kiếm được trong một năm và họ chi bao nhiêu. Đây là một điểm liên quan khác trong phân tích của chúng tôi. Điều quan trọng là chúng tôi chỉ xem xét hai tính năng để nhóm khách hàng của chúng tôi. Bất kỳ thông tin nào khác chúng tôi có về chúng không phải vào phương trình. Điều này mang lại ý nghĩa phân tích - nếu chúng ta biết khách hàng kiếm được bao nhiêu và chi tiêu, chúng ta có thể dễ dàng tìm thấy những điểm tương đồng mà chúng ta cần. Thật tuyệt! Cho đến nay, chúng tôi đã có hai biến để xây dựng mô hình của chúng tôi. Bên cạnh những gì điều này đại diện, nó cũng làm cho mô hình đơn giản hơn, không thể giải thích được hơn. Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó! Lưu ý: Khoa học dữ liệu thường ủng hộ cách tiếp cận đơn giản nhất có thể. Không chỉ bởi vì nó dễ dàng hơn để giải thích cho doanh nghiệp, mà còn bởi vì nó trực tiếp hơn - với 2 tính năng và một mô hình có thể giải thích được, rõ ràng mô hình đang làm gì và nó hoạt động như thế nào. Data Science usually favors as simple approaches as possible. Not only because it is easier to explain for the business, but also because it is more direct - with 2 features and an explainable model, it is clear what the model is doing and how it is working. Vẽ dữ liệu sau khi sử dụng PCACó vẻ như cách tiếp cận thứ hai của chúng tôi có lẽ là tốt nhất, nhưng chúng ta cũng hãy xem cách tiếp cận thứ ba của chúng tôi. Nó có thể hữu ích khi chúng ta không thể vẽ dữ liệu vì nó có quá nhiều kích thước hoặc khi không có nồng độ dữ liệu hoặc phân tách rõ ràng theo nhóm. Khi các tình huống đó xảy ra, nên thử giảm kích thước dữ liệu bằng một phương pháp gọi là phân tích thành phần chính (PCA). Lưu ý: Hầu hết mọi người sử dụng PCA để giảm kích thước trước khi trực quan hóa. Có các phương pháp khác giúp trực quan hóa dữ liệu trước khi phân cụm, chẳng hạn như phân cụm không gian dựa trên mật độ của các ứng dụng với nhiễu (DBSCAN) và bản đồ tự tổ chức (SOM). Cả hai đều là thuật toán phân cụm, nhưng cũng có thể được sử dụng để trực quan hóa dữ liệu. Vì phân tích phân cụm không có tiêu chuẩn vàng, điều quan trọng là so sánh các hình ảnh trực quan khác nhau và các thuật toán khác nhau. Most people use PCA for dimensionality reduction before visualization. There are other methods that help in data visualization prior to clustering, such as Density-Based Spatial Clustering of Applications with Noise (DBSCAN) and Self-Organizing Maps (SOM) clustering. Both are clustering algorithms, but can also be used for data visualization. Since clustering analysis has no golden standard, it is important to compare different visualizations and different algorithms. PCA sẽ giảm kích thước dữ liệu của chúng tôi trong khi cố gắng lưu giữ càng nhiều thông tin càng tốt. Trước tiên chúng ta hãy có ý tưởng về cách PCA hoạt động và sau đó chúng ta có thể chọn số lượng kích thước dữ liệu chúng ta sẽ giảm dữ liệu của mình. Đối với mỗi cặp tính năng, PCA thấy nếu các giá trị lớn hơn của một biến tương ứng với các giá trị lớn hơn của biến khác và nó hoạt động tương tự cho các giá trị nhỏ hơn. Vì vậy, về cơ bản nó tính toán mức độ các giá trị tính năng thay đổi với nhau - chúng tôi gọi đó là hiệp phương sai của chúng. Những kết quả đó sau đó được tổ chức thành một ma trận, có được một ma trận hiệp phương sai. Sau khi nhận được ma trận hiệp phương sai, PCA cố gắng tìm kết hợp tuyến tính các tính năng giải thích tốt nhất cho nó - nó phù hợp với các mô hình tuyến tính cho đến khi nó xác định được giải thích lượng phương sai tối đa.maximum amount of variance.maximum amount of variance. Lưu ý: PCA là một chuyển đổi tuyến tính và tính tuyến tính rất nhạy cảm với quy mô của dữ liệu. Do đó, PCA hoạt động tốt nhất khi tất cả các giá trị dữ liệu ở cùng một tỷ lệ. Điều này có thể được thực hiện bằng cách trừ cột có nghĩa là từ các giá trị của nó và chia kết quả cho độ lệch chuẩn của nó. Đó được gọi là tiêu chuẩn hóa dữ liệu. Trước khi sử dụng PCA, hãy đảm bảo dữ liệu được chia tỷ lệ! Nếu bạn không chắc chắn làm thế nào, hãy đọc "Dữ liệu tỷ lệ tính năng của chúng tôi với Scikit-LEARN cho việc học máy ở Python"!: PCA is a linear transformation, and linearity is sensitive to the scale of data. Therefore, PCA works best when all data values are on the same scale. This can be done by subtracting the column mean from its values and dividing the result by its standard deviation. That is called data standardization. Prior to using PCA, make sure the data is scaled! If you're not sure how, read our "Feature Scaling Data with Scikit-Learn for Machine Learning in Python"!: PCA is a linear transformation, and linearity is sensitive to the scale of data. Therefore, PCA works best when all data values are on the same scale. This can be done by subtracting the column mean from its values and dividing the result by its standard deviation. That is called data standardization. Prior to using PCA, make sure the data is scaled! If you're not sure how, read our "Feature Scaling Data with Scikit-Learn for Machine Learning in Python"! Với dòng tốt nhất (kết hợp tuyến tính) được tìm thấy, PCA có được hướng của các trục của nó, được gọi là hàm riêng và các hệ số tuyến tính của nó, các giá trị riêng. Sự kết hợp của các hàm riêng và giá trị riêng - hoặc các hướng và hệ số trục - là các thành phần chính của PCA. Và đó là khi chúng ta có thể chọn số lượng kích thước của mình dựa trên phương sai được giải thích của từng tính năng, bằng cách hiểu các thành phần chính nào chúng ta muốn giữ hoặc loại bỏ dựa trên mức độ phương sai mà chúng giải thích. Sau khi có được các thành phần chính, PCA sử dụng các hàm riêng để tạo thành một vectơ các tính năng định hướng lại dữ liệu từ các trục gốc đến các phần được biểu thị bởi các thành phần chính - đó là cách giảm kích thước dữ liệu. Lưu ý: Một chi tiết quan trọng cần xem xét ở đây là, do tính chất tuyến tính của nó, PCA sẽ tập trung hầu hết các phương sai được giải thích trong các thành phần chính đầu tiên. Vì vậy, khi nhìn vào phương sai được giải thích, thông thường hai thành phần đầu tiên của chúng tôi sẽ đủ. Nhưng điều đó có thể gây hiểu lầm trong một số trường hợp - vì vậy hãy cố gắng tiếp tục so sánh các ô và thuật toán khác nhau khi phân cụm để xem chúng có giữ kết quả tương tự không. One important detail to take into consideration here is that, due to its linear nature, PCA will concentrate most of the explained variance in the first principal components. So, when looking at the explained variance, usually our first two components will suffice. But that might be misleading in some cases - so try to keep comparing different plots and algorithms when clustering to see if they hold similar results. One important detail to take into consideration here is that, due to its linear nature, PCA will concentrate most of the explained variance in the first principal components. So, when looking at the explained variance, usually our first two components will suffice. But that might be misleading in some cases - so try to keep comparing different plots and algorithms when clustering to see if they hold similar results. Trước khi áp dụng PCA, chúng tôi cần chọn giữa cột 0 hoặc các cột 05 trong dữ liệu được mã hóa một lần nóng trước đây của chúng tôi. Vì cả hai cột đại diện cho cùng một thông tin, giới thiệu nó hai lần ảnh hưởng đến phương sai dữ liệu của chúng tôi. Nếu cột 05 được chọn, chỉ cần xóa cột 0 bằng phương pháp Pandas 38 và gán lại nó thành biến 39: 4Bây giờ dữ liệu của chúng tôi có 10 cột, có nghĩa là chúng tôi có thể có được một thành phần chính theo cột và chọn số lượng chúng tôi sẽ sử dụng bằng cách đo số lượng giới thiệu một chiều mới giải thích nhiều hơn về phương sai dữ liệu của chúng tôi. Hãy làm điều đó với Scikit-Learn 40. Chúng tôi sẽ tính toán phương sai được giải thích của từng chiều, được đưa ra bởi 41, và sau đó nhìn vào tổng tích lũy của chúng với 42: 5Phương sai được giải thích tích lũy của chúng tôi là: 6Chúng ta có thể thấy rằng kích thước đầu tiên giải thích 50% dữ liệu và khi kết hợp với chiều thứ hai, họ giải thích 99% phần trăm. Điều này có nghĩa là 2 chiều đầu tiên đã giải thích 99% dữ liệu của chúng tôi. Vì vậy, chúng tôi có thể áp dụng PCA với 2 thành phần, lấy các thành phần chính của chúng tôi và vẽ chúng: 7Biểu đồ dữ liệu sau PCA rất giống với biểu đồ chỉ sử dụng hai cột của dữ liệu không có PCA. Lưu ý rằng các điểm hình thành các nhóm gần hơn và tập trung hơn một chút sau PCA so với trước đây. Hình dung cấu trúc phân cấp với dendrogramsCho đến nay, chúng tôi đã khám phá dữ liệu, các cột phân loại được mã hóa một lần nóng, đã quyết định các cột nào phù hợp để phân cụm và giảm kích thước dữ liệu. Các sơ đồ cho thấy chúng tôi có 5 cụm trong dữ liệu của mình, nhưng cũng có một cách khác để hình dung mối quan hệ giữa các điểm của chúng tôi và giúp xác định số lượng cụm - bằng cách tạo một dendrogram (thường được viết sai là dendogram). Dendro có nghĩa là cây bằng tiếng Latin.dendrogram (commonly misspelled as dendogram). Dendro means tree in Latin.dendrogram (commonly misspelled as dendogram). Dendro means tree in Latin. Dendrogram là kết quả của việc liên kết các điểm trong bộ dữ liệu. Nó là một đại diện trực quan của quá trình phân cụm phân cấp. Và quá trình phân cụm phân cấp hoạt động như thế nào? Chà ... nó phụ thuộc - có lẽ là một câu trả lời bạn đã nghe rất nhiều trong khoa học dữ liệu. Hiểu phân cụm phân cấpKhi thuật toán phân cụm phân cấp (HCA) bắt đầu liên kết các điểm và tìm cụm, trước tiên nó có thể chia các điểm thành 2 nhóm lớn, và sau đó chia mỗi nhóm trong hai nhóm nhỏ hơn, có tổng cộng 4 nhóm và cách tiếp cận từ trên xuống.Hierarchical Clustering Algorithm (HCA) starts to link the points and find clusters, it can first split points into 2 large groups, and then split each of those two groups into smaller 2 groups, having 4 groups in total, which is the divisive and top-down approach.Hierarchical Clustering Algorithm (HCA) starts to link the points and find clusters, it can first split points into 2 large groups, and then split each of those two groups into smaller 2 groups, having 4 groups in total, which is the divisive and top-down approach. Ngoài ra, nó có thể làm ngược lại - nó có thể nhìn vào tất cả các điểm dữ liệu, tìm thấy 2 điểm gần nhau hơn, liên kết chúng và sau đó tìm các điểm khác là những điểm gần nhất với các điểm được liên kết đó và tiếp tục xây dựng 2 nhóm từ dưới lên. Đó là cách tiếp cận kết tụ mà chúng tôi sẽ phát triển.bottom-up. Which is the agglomerative approach we will develop.bottom-up. Which is the agglomerative approach we will develop. Các bước để thực hiện phân cụm phân cấp kết tụĐể làm cho phương pháp kết tụ thậm chí còn rõ ràng, có các bước của thuật toán phân cụm phân cấp (AHC) kết tụ: thuật toán:
Lưu ý: Để đơn giản hóa, chúng tôi đang nói "hai điểm dữ liệu gần nhất" trong các bước 2 và 3. Nhưng có nhiều cách liên kết hơn như chúng tôi sẽ thấy một chút.: For simplification, we are saying "two closest" data points in steps 2 and 3. But there are more ways of linking points as we will see in a bit.: For simplification, we are saying "two closest" data points in steps 2 and 3. But there are more ways of linking points as we will see in a bit.
Lưu ý rằng HCA có thể gây chia rẽ và từ trên xuống, hoặc kết tụ và từ dưới lên. Cách tiếp cận DHC từ trên xuống hoạt động tốt nhất khi bạn có ít hơn, nhưng các cụm lớn hơn, do đó nó tốn kém hơn về mặt tính toán. Mặt khác, cách tiếp cận AHC từ dưới lên được trang bị khi bạn có nhiều cụm nhỏ hơn. Nó là tính toán đơn giản hơn, được sử dụng nhiều hơn và có sẵn hơn. Lưu ý: Hoặc từ trên xuống hoặc từ dưới lên, biểu diễn dendrogram của quá trình phân cụm sẽ luôn bắt đầu với một phân chia thành hai và kết thúc với mỗi điểm riêng lẻ được phân biệt đối xử, một khi cấu trúc cơ bản của nó là của một cây nhị phân. Either top-down or bottom-up, the dendrogram representation of the clustering process will always start with a division in two and end up with each individual point discriminated, once its underlying structure is of a binary tree. Either top-down or bottom-up, the dendrogram representation of the clustering process will always start with a division in two and end up with each individual point discriminated, once its underlying structure is of a binary tree. Chúng ta hãy vẽ bản đồ dữ liệu khách hàng của chúng tôi để trực quan hóa các mối quan hệ phân cấp của dữ liệu. Lần này, chúng tôi sẽ sử dụng thư viện 43 để tạo dendrogram cho bộ dữ liệu của chúng tôi: 8Đầu ra của tập lệnh trông như thế này: Trong tập lệnh ở trên, chúng tôi đã tạo các cụm và trình phân phối theo điểm của chúng tôi, xác định cách các điểm của chúng tôi sẽ liên kết (bằng cách áp dụng phương pháp 44) và cách đo khoảng cách giữa các điểm (bằng cách sử dụng số liệu 45).Với cốt truyện của dendrogram, các quá trình được mô tả của DHC và AHC có thể được hình dung. Để hình dung cách tiếp cận từ trên xuống bắt đầu từ đầu dendrogram và đi xuống, và làm điều ngược lại, bắt đầu xuống và di chuyển lên trên để hình dung cách tiếp cận từ dưới lên. Phương pháp liên kếtCó nhiều phương pháp liên kết khác, bằng cách hiểu thêm về cách chúng hoạt động, bạn sẽ có thể chọn phương pháp thích hợp cho nhu cầu của bạn. Bên cạnh đó, mỗi người trong số họ sẽ mang lại kết quả khác nhau khi áp dụng. Không có một quy tắc cố định trong phân tích phân cụm, nếu có thể, nghiên cứu bản chất của vấn đề để xem cái nào phù hợp nhất, kiểm tra các phương pháp khác nhau và kiểm tra kết quả. Một số phương thức liên kết là:
Số liệu khoảng cáchBên cạnh liên kết, chúng tôi cũng có thể chỉ định một số số liệu khoảng cách được sử dụng nhiều nhất:
$$ C^2 = A^2 + B^2 $$
$$ d \ left (x, y \ right) = \ left (\ sum_ {i = 1}^n | x_i-y_i |^p \ right)^{\ frac {1} {p}} $$ $$ D\left(X,Y\right) = \left(\sum_{i=1}^n |x_i-y_i|^p\right)^{\frac{1}{p}} $$
Chúng tôi đã chọn Ward và Euclide cho dendrogram vì chúng là phương pháp và số liệu được sử dụng phổ biến nhất. Họ thường đưa ra kết quả tốt vì các điểm liên kết Ward dựa trên việc giảm thiểu các lỗi và Euclide hoạt động tốt ở các kích thước thấp hơn. Trong ví dụ này, chúng tôi đang làm việc với hai tính năng (cột) của dữ liệu tiếp thị và 200 quan sát hoặc hàng. Vì số lượng quan sát lớn hơn số lượng tính năng (200> 2), chúng tôi đang làm việc trong một không gian chiều thấp.
Nếu chúng ta bao gồm nhiều thuộc tính hơn, vì vậy chúng ta có hơn 200 tính năng, khoảng cách Euclide có thể không hoạt động tốt, vì nó sẽ gặp khó khăn trong việc đo tất cả các khoảng cách nhỏ trong một không gian rất lớn chỉ lớn hơn. Nói cách khác, cách tiếp cận khoảng cách Euclide gặp khó khăn khi làm việc với độ thưa thớt dữ liệu. Đây là một vấn đề được gọi là lời nguyền của chiều. Các giá trị khoảng cách sẽ trở nên quá nhỏ, như thể chúng trở nên "pha loãng" trong không gian rộng hơn, bị biến dạng cho đến khi chúng trở thành 0.sparsity. This is an issue that is called the curse of dimensionality. The distance values would get so small, as if they became "diluted" in the larger space, distorted until they became 0.sparsity. This is an issue that is called the curse of dimensionality. The distance values would get so small, as if they became "diluted" in the larger space, distorted until they became 0. Lưu ý: Nếu bạn từng gặp phải một bộ dữ liệu với f >> p, có lẽ bạn sẽ sử dụng các số liệu khoảng cách khác, chẳng hạn như khoảng cách Mahalanobis. Ngoài ra, bạn cũng có thể giảm kích thước bộ dữ liệu, bằng cách sử dụng phân tích thành phần chính (PCA). Vấn đề này là thường xuyên, đặc biệt là khi phân cụm dữ liệu giải trình tự sinh học. If you ever encounter a dataset with f >> p, you will probably use other distance metrics, such as the Mahalanobis distance. Alternatively, you can also reduce the dataset dimensions, by using Principal Component Analysis (PCA). This problem is frequent especially when clustering biological sequencing data. If you ever encounter a dataset with f >> p, you will probably use other distance metrics, such as the Mahalanobis distance. Alternatively, you can also reduce the dataset dimensions, by using Principal Component Analysis (PCA). This problem is frequent especially when clustering biological sequencing data. Chúng tôi đã thảo luận về các số liệu, liên kết và cách mỗi người trong số chúng có thể tác động đến kết quả của chúng tôi. Bây giờ chúng ta hãy tiếp tục phân tích dendrogram và xem làm thế nào nó có thể cung cấp cho chúng ta một dấu hiệu về số lượng cụm trong bộ dữ liệu của chúng ta. Tìm một số cụm thú vị trong dendrogram giống như tìm không gian ngang lớn nhất không có bất kỳ đường thẳng đứng nào (không gian có các đường thẳng đứng dài nhất). Điều này có nghĩa là có nhiều sự tách biệt hơn giữa các cụm. Chúng ta có thể vẽ một đường ngang đi qua khoảng cách dài nhất đó: 9Sau khi định vị đường ngang, chúng tôi đếm số lần các đường thẳng đứng của chúng tôi đã bị vượt qua bởi nó - trong ví dụ này, 5 lần. Vì vậy, 5 có vẻ là một dấu hiệu tốt về số lượng cụm có khoảng cách nhiều nhất giữa chúng. Lưu ý: Dendrogram chỉ nên được coi là một tham chiếu khi được sử dụng để chọn số lượng cụm. Nó có thể dễ dàng có được số đó tắt và bị ảnh hưởng hoàn toàn bởi loại liên kết và số liệu khoảng cách. Khi tiến hành phân tích cụm chuyên sâu, nên xem xét các dendrogram với các liên kết và số liệu khác nhau và xem xét kết quả được tạo ra với ba dòng đầu tiên trong đó các cụm có khoảng cách nhất giữa chúng.: The dendrogram should be considered only as a reference when used to choose the number of clusters. It can easily get that number way off and is completely influenced by the type of linkage and distance metrics. When conducting an in-depth cluster analysis, it is advised to look at dendrograms with different linkages and metrics and to look at the results generated with the first three lines in which the clusters have the most distance between them.: The dendrogram should be considered only as a reference when used to choose the number of clusters. It can easily get that number way off and is completely influenced by the type of linkage and distance metrics. When conducting an in-depth cluster analysis, it is advised to look at dendrograms with different linkages and metrics and to look at the results generated with the first three lines in which the clusters have the most distance between them. Thực hiện phân cụm phân cấp kết tụSử dụng dữ liệu gốcCho đến nay, chúng tôi đã tính toán số lượng cụm được đề xuất cho bộ dữ liệu của chúng tôi chứng thực bằng phân tích ban đầu và phân tích PCA của chúng tôi. Bây giờ chúng ta có thể tạo mô hình phân cụm phân cấp kết tụ của mình bằng cách sử dụng Scikit-Learn 46 và tìm hiểu các nhãn của các điểm tiếp thị với 47: 0Kết quả này trong: 1Chúng tôi đã điều tra rất nhiều để đi đến điểm này. Và những nhãn này có nghĩa là gì? Ở đây, chúng tôi có từng điểm dữ liệu của chúng tôi được gắn nhãn là một nhóm từ 0 đến 4: 2Đây là dữ liệu phân cụm cuối cùng của chúng tôi. Bạn có thể thấy các điểm dữ liệu được mã hóa màu dưới dạng năm cụm. Các điểm dữ liệu ở phía dưới bên phải (nhãn: 9, điểm dữ liệu màu tím) thuộc về khách hàng có mức lương cao nhưng chi tiêu thấp. Đây là những khách hàng tiêu tiền của họ một cách cẩn thận.Tương tự, các khách hàng ở trên cùng bên phải (nhãn: 49, điểm dữ liệu xanh), là những khách hàng có mức lương cao và chi tiêu cao. Đây là loại khách hàng mà các công ty nhắm đến.Các khách hàng ở giữa (nhãn: 5, điểm dữ liệu màu xanh) là những khách hàng có thu nhập trung bình và chi tiêu trung bình. Số lượng khách hàng cao nhất thuộc loại này. Các công ty cũng có thể nhắm mục tiêu những khách hàng này với thực tế là họ có số lượng rất lớn.Các khách hàng ở phía dưới bên trái (nhãn: 51, màu đỏ) là những khách hàng có mức lương thấp và chi tiêu thấp, họ có thể bị thu hút bằng cách cung cấp các chương trình khuyến mãi.Và cuối cùng, các khách hàng ở phía trên bên trái (nhãn: 52, điểm dữ liệu màu cam) là những khách hàng có thu nhập cao và chi tiêu thấp, được nhắm mục tiêu lý tưởng bởi tiếp thị.Sử dụng kết quả từ PCANếu chúng ta ở trong một kịch bản khác, trong đó chúng ta phải giảm tính chiều của dữ liệu. Chúng tôi cũng có thể dễ dàng vẽ các kết quả PCA được phân cụm. Có thể được thực hiện bằng cách tạo một mô hình phân cụm kết tụ khác và lấy nhãn dữ liệu cho từng thành phần chính: 3Quan sát rằng cả hai kết quả đều rất giống nhau. Sự khác biệt chính là kết quả đầu tiên với dữ liệu gốc dễ giải thích hơn nhiều. Rõ ràng để thấy rằng khách hàng có thể được chia thành năm nhóm theo thu nhập và điểm chi tiêu hàng năm của họ. Trong khi, theo cách tiếp cận PCA, chúng tôi đang xem xét tất cả các tính năng của mình, nhiều như chúng tôi có thể xem xét phương sai được giải thích bởi mỗi người trong số họ, đây là một khái niệm khó nắm bắt hơn, đặc biệt là khi báo cáo với một bộ phận tiếp thị.
Nếu bạn có một bộ dữ liệu rất lớn và phức tạp, trong đó bạn phải thực hiện giảm kích thước trước khi phân cụm - hãy cố gắng phân tích mối quan hệ tuyến tính giữa mỗi tính năng và phần dư của chúng để sao lưu việc sử dụng PCA và tăng cường khả năng khám phá của quy trình. Bằng cách tạo một mô hình tuyến tính cho mỗi cặp tính năng, bạn sẽ có thể hiểu cách các tính năng tương tác. Nếu khối lượng dữ liệu quá lớn, không thể vẽ các cặp tính năng, chọn một mẫu dữ liệu của bạn, cân bằng và gần với phân phối bình thường càng tốt và thực hiện phân tích trên mẫu trước, hiểu nó, tinh chỉnh Nó - và áp dụng nó sau này cho toàn bộ tập dữ liệu. Bạn luôn có thể chọn các kỹ thuật trực quan phân cụm khác nhau theo tính chất của dữ liệu của bạn (tuyến tính, phi tuyến tính) và kết hợp hoặc kiểm tra tất cả chúng nếu cần thiết. Đi xa hơn-Dự án đầu cuối cầm tayBản chất tò mò của bạn khiến bạn muốn đi xa hơn? Chúng tôi khuyên bạn nên kiểm tra dự án có hướng dẫn của chúng tôi: "Dự đoán giá nhà - học máy ở Python".Guided Project: "Hands-On House Price Prediction - Machine Learning in Python".Guided Project: "Hands-On House Price Prediction - Machine Learning in Python".
Sử dụng Keras, API học tập sâu được xây dựng trên Tensorflow, chúng tôi sẽ thử nghiệm các kiến trúc, xây dựng một nhóm các mô hình xếp chồng lên nhau và đào tạo một mạng lưới thần kinh siêu nhân (mô hình cấp 1) để tìm ra giá của một ngôi nhà. Học sâu là tuyệt vời - nhưng trước khi dùng đến nó, bạn nên cố gắng giải quyết vấn đề bằng các kỹ thuật đơn giản hơn, chẳng hạn như với các thuật toán học tập nông. Hiệu suất cơ bản của chúng tôi sẽ dựa trên thuật toán hồi quy rừng ngẫu nhiên. Ngoài ra - chúng tôi sẽ khám phá việc tạo ra các mô hình thông qua Scikit -Learn thông qua các kỹ thuật như đóng gói và bỏ phiếu. Đây là một dự án từ đầu đến cuối và giống như tất cả các dự án học máy, chúng tôi sẽ bắt đầu-với phân tích dữ liệu khám phá, tiếp theo là tiền xử lý dữ liệu và cuối cùng xây dựng các mô hình học tập nông và sâu để phù hợp với dữ liệu chúng tôi đã khám phá và đã làm sạch trước đây. Sự kết luậnKỹ thuật phân cụm có thể rất tiện dụng khi nói đến dữ liệu không nhãn. Vì hầu hết các dữ liệu trong thế giới thực không được gắn nhãn và chú thích dữ liệu có chi phí cao hơn, nên các kỹ thuật phân cụm có thể được sử dụng để dán nhãn dữ liệu không nhãn. Trong hướng dẫn này, chúng tôi đã mang đến một vấn đề khoa học dữ liệu thực sự, vì các kỹ thuật phân cụm phần lớn được sử dụng trong phân tích tiếp thị (và cả trong phân tích sinh học). Chúng tôi cũng đã giải thích nhiều bước điều tra để đi đến một mô hình phân cụm phân cấp tốt và cách đọc dendrogram và đặt câu hỏi liệu PCA có phải là một bước cần thiết không. Mục tiêu chính của chúng tôi là một số cạm bẫy và các kịch bản khác nhau trong đó chúng ta có thể tìm thấy phân cụm phân cấp được đề cập. Happy Clustering! |