Lưu ý thuật toán phân cụm
Bạn không biết hoc php o dau .Vậy hãy sôi động chào hè 2016 cùng VnSkills Academy nào. Hè này các bạn đã có kế hoạch gì chưa? Hãy tới VnSkills cùng nhau học tập và du lịch thả ga ngay nhé. Cơ hội được học tập trong môi trường chuyên nghiệp, cơ hội giao lưu học hỏi, cơ hội du lịch miễn phí đang chờ các bạn.
Nếu như bạn đang với ý định trở nên 1 Data Scientist (nhà công nghệ dữ liệu) thì hiện giờ đang là 1 thời điểm không phải tồi chút nào. những con người nói cả khó tính nhất cũng sẽ đổ dồn sự chú ý khi bạn nói đến Big Data trong cuộc hội thoại, đám đông sẽ cảm thấy phấn chấn lúc được nghe bạn chém gió về trí tuệ nhân tạo cũng như Học máy. Thậm chí những Con số do Google phân phối tại đây còn cho thấy: phần đông vẫn chưa mang dấu hiệu giới hạn lại, chúng vẫn tiếp diễn phát triển sở hữu tốc độ rất nhanh.
ngày một có hồ hết các giải thuật 'thông minh' đã được phát minh ra để giúp đỡ những nhà khoa học dữ liệu. rất nhiều chúng nhìn chung đều mang vẻ rất phức tạp, nhưng nếu như chúng ta hiểu được và biết phương pháp phối hợp 1 phương pháp nhuần nhuyễn thì mọi việc sẽ trở thành tiện dụng hơn tất cả.
những khóa học về khai phá dữ liệu (Data Mining) hoặc học máy (Machine Learning) vẫn thường mở đầu bằng những ví dụ về phân cụm, lí do thuần tuý bởi vì chúng rất thực tại và không quá khó hiểu. Bài toán phân cụm là 1 nhánh vận dụng chính của ngành Unsupervised Learning (Học không giám sát), trong ngừng thi công .Đây dữ liệu được bộc lộ trong bài toán không được dán nhãn (tức là ko sở hữu đầu ra). Trong trường hợp này, thuật toán sẽ mua cách phân cụm - chia dữ liệu thành từng lực lượng với đặc điểm tương tự nhau, nhưng song song đặc tính giữa những đội ngũ ngừng thi côngĐây lại phải càng dị biệt càng rẻ.
Dữ liệu của chúng ta với thể là bất cứ thứ gì, chả hạn như dữ liệu về khách hàng: Thuật toán phân cụm sẽ rất bổ ích trong việc đánh giá và chia thành các hàng ngũ quý khách khác nhau, rồi trong khoảng chậm tiến độ ta với thể đưa ra những chiến lược marketing phù hợp trên từng nhóm người dùng đó.
K-Means Clustering
Sau lúc dạo qua các màn giới thiệu chung, phần nhiều những khóa học Data Mining sẽ khởi đầu luôn có K-Means: 1 thuật toán tuy đơn giản nhưng lại khá hiệu quả và được sử dụng rộng khắp. Trước lúc bắt tay vào làm cho, chúng ta cần phải xác định sẵn hai thứ: chậm tiến độ là hàm khoảng bí quyết được dùng (ví dụ như khoảng bí quyết Euclid) và số lượng lực lượng mong muốn (ta sẽ kí hiệu trong bài viết này là k)

Thuật toán bắt đầu mang việc chọn ra tâm của từng cụm. Chúng ta sở hữu thể thuần tuý chọn k điểm tự dưng trong bộ, hoặc dùng một số hướng tiếp cận nào khác, nhưng nhìn chung bỗng nhiên vẫn là phương pháp thấp nhất. Rồi kế tiếp, luân phiên lặp lại hai giai đoạn sau:
- công đoạn gán: gán từng phần tử trong bộ dữ liệu của chúng ta vào những cụm. bí quyết tiến hành ngừng thi côngĐây là: mang mỗi điểm, hãy tính khoảng bí quyết từ điểm chậm triển khai đến vị trí những tâm, sau cùng: tâm nào gần nhất thì gán vào cụm ứng với dòng tâm ngừng thi côngĐây
- công đoạn cập nhật: ưng chuẩn từng cụm, cập nhật lại tọa độ của tâm: Như đã biết, sau quá trình 1, chúng ta đã thu được k cụm ứng với dãy những điểm được gán cho từng cụm. Tọa độ tâm mới của cụm sẽ bằng làng nhàng cộng tọa độ những điểm trong cụm
Sau càng nhiều vòng lặp, các tâm càng chuyển di chậm dần, và tổng khoảng bí quyết từ mỗi điểm trong cụm đến tâm cụm lại càng nhỏ đi. giai đoạn sẽ chấm dứt cho đến lúc hàm tổng khoảng bí quyết tập trung (tức là ko có sự đổi thay nào xảy ra ở công đoạn gán nữa). lúc này tọa độ tâm vẫn sẽ bằng nhàng nhàng cộng các điểm hiện nay trong cụm, hay nhắc bí quyết khác tâm sẽ ko còn di chuyển tiếp nữa. Chú ý thuật toán K-Means chỉ đảm bảo được thời kỳ này sẽ đưa hàm tổng khoảng phương pháp tập hợp tới điểm cực tiểu địa phương, chứ ko cứng cáp Đó là trị giá nhỏ nhất của phần lớn hàm số. không những thế, điều này là với thể chấp thuận được vì ko phải mô phỏng nào càng sát sở hữu bộ dữ liệu tập huấn thì cũng sẽ càng tốt.
Ta có thể nhận thấy rằng việc tuyển lựa tâm lúc khởi điểm cũng mang tác động đến kết quả cuối cùng thu được, do vậy đã phát sinh hồ hết ý kiến trái chiều về vấn đề này. một ý tưởng đơn giản là cho chạy K-Means phổ thông lần mang mỗi bộ tâm ngẫu nhiên khác nhau, rồi sau chậm triển khai chọn ra mô phỏng tốt nhất chuẩn y việc xét giá trị nhỏ nhất của các hàm tổng khoảng bí quyết ứng sở hữu chúng.
một hướng tiếp cận khác trong việc chọn tâm ban đầu chậm triển khai là chọn các điểm "xa nhất". Việc này có thể cho kết quả thấp hơn, bên cạnh đó ta sẽ mắc phải vấn đề sở hữu những phần tử "nhiễu", chậm tiến độ là những phần tử nằm riêng lẻ một mình tách biệt sở hữu phần còn lại trong bộ dữ liệu. bởi vậy chúng sẽ tự lập ra một cụm riêng của chính mình.
mang 1 cách thức khắc phục đã được phát minh để cân bằng cùng lúc được cả hai điều trên, nó có tên gọi là K-Means++: trong chậm triển khai, tâm bắt đầu vẫn được chọn bỗng dưng, nhưng là chọn tuần tự (thay vì đồng loạt) và kèm theo xác suất tự nhiên tỉ lệ thuận mang khoảng bí quyết tới điểm tâm vừa chọn trước Đó. tức thị, các điểm càng nằm phía xa sẽ với khả năng được chọn làm tâm kế tiếp càng to. do đó, ví như mang 1 lực lượng các điểm, khả năng chỉ 1 điểm từ nhóm chậm tiến độ được chọn khiến tâm cũng sẽ cao hơn.
K-Means++ cũng đang được chọn sử dụng cho bước khởi tạo của thuật toán K-Mean trong thư viện Scikit-learn của Python. nếu bạn đang lập trình Python, bạn sở hữu thể sử dụng ngay thư viện này. Đối với Java, thư viện Weka sẽ là 1 sự tuyển lựa đáng để cân nhắc.
Ở trong tỉ dụ Python phía trên, ta tiêu dùng bộ dữ liệu Iris cất kích thước đài hoa và cánh hoa cho 3 giống hoa Iris khác nhau, chia những dữ liệu này thành 3 cụm, rồi sau Đó so sánh mang giá trị thực tế của chúng, để rà soát độ chuẩn xác của thuật toán.
Trong trường hợp này, chúng ta thấy rằng dữ liệu được tách thành 3 cụm (ứng sở hữu 3 giống hoa) khác nhau và K-Means đã trông thấy chuẩn xác các phần tử nào cùng nằm chung 1 cụm (Chú ý rằng Unsupervised Learning là bài toán ko mang nhãn nên chỉ số k bằng (0, một, 2) ở trên chỉ là bất chợt, với tác dụng phân biệt chứ ko phải là nhãn đầu ra).
bên cạnh đó, khiến phương pháp nào mà ta chọn ra được số cụm (k) thích hợp? câu hỏi như vậy tương tự thường rất phổ thông trong Học máy. nếu như chúng ta buộc phải phổ quát cụm hơn, dữ liệu sẽ được chia nhỏ ra, và giá trị error (tổng khoảng cách) cũng sẽ nhỏ hơn. Vậy, như thế mang phải sẽ là tốt hơn nếu ta chọn k to nhất với thể? Chúng ta sở hữu thể chọn k = m (số điểm), như thế mỗi điểm sẽ trở chân thành của chính nó và mỗi cụm sẽ chỉ sở hữu một điểm? Điều chậm tiến độ không sai, error sẽ bằng 0, nhưng chúng ta sẽ chẳng thể mua được biểu hiện đơn giản cho dữ liệu, và mô hình thu được cũng chẳng thể phủ được các điểm mới thêm vào. Vấn đề này có tên gọi là overfitting, và kèm theo chúng ta sẽ ko mong gặp phải nó.
1 cách để khắc phục vấn đề này là bổ sung thêm hàm phạt (penalty) cho số lượng cụm. trong khoảng chậm tiến độ, tiêu chí của ta lúc này ko chỉ còn hạn chế error, mà phải cân bằng cả error + penalty. giá trị error sẽ tiến dần đến 0 lúc chúng ta nâng cao số lượng cụm, nhưng song song penalty cũng nâng cao theo. quá trình nâng cao số lượng cụm sẽ giới hạn lại khi mà lượng error giảm đi tốt hơn so mang trị giá penalty, và kết quả thu được là kết quả tối ưu. mang một biện pháp dùng Bayesian Information Criterion (BIC) để tính k với tên gọi là X-Means [Pelleg and Moore, 2000].
1 thứ khác chúng ta cần quan tâm Đó là hàm khoảng phương pháp. Hiển nhiên, với các điểm nằm trong ko gian, khoảng cách thức Euclid rõ ràng là hiệu quả nhất, nhưng đôi khi ta cần thêm vài "mánh khóe" cho các loại dữ liệu đặc trưng khác nhau, ví dụ như những giá trị rời rạc,... Việc này đề nghị khá rộng rãi tri thức chuyên lĩnh vực can dự tới dữ liệu chậm triển khai. Hoặc, chúng ta có thể nhờ đến sự viện trợ của Học máy để tập huấn ra hàm khoảng cách thích hợp nhất. ví như bạn có 1 tập những dữ liệu huấn luyện (đã biết trước chúng được phân cụm thế nào qua nhãn của chúng), kĩ thuật Supervised Learning (học với giám sát) sở hữu thể được vận dụng để mua ra hàm khoảng cách thức phù hợp, rồi ứng dụng nó vào trong dữ liệu cần phân cụm.
không những thế, với 1 thuật toán phân cụm khác có tên là Expectation-Maximization (EM) cũng gần tương tự với hai giai đoạn được dùng trong K-Means. đề cập chính xác thì K-Means mang thể coi là một phiên bản đơn thuần hơn của EM. không những thế, đừng nhầm lẫn chúng với nhau dù rằng mang phần đông điểm chung giữa 2 thuật toán này.
EM Clustering
tương tự, mang K-Means: mỗi điểm sẽ được gán cho một lực lượng và mỗi đội ngũ được đại diện bởi 1 tâm. Điều này không quá phức tạp, vì chúng ta chưa gặp phải vấn đề cụm chồng chéo, hoặc các cụm với hình dạng khác hình tròn. mang EM, ta bây giờ với thể tiến một bước xa hơn nữa và đặc tả mỗi cụm bằng tâm của nó (kì vọng), covariance (hiệp phương sai - qua chậm tiến độ ta có thể trình diễn được cụm hình elip) và weight (kích thước của cụm). Xác suất mà 1 điểm thuộc về một cụm hiện nay được tính bằng xác suất sản xuất Gauss đa biến.
Chúng ta sẽ bắt đầu EM bằng cách tính, mang mỗi điểm, xác suất mà nó thuộc về từng cụm là bao nhiêu (tất nhiên, những cụm ban đầu cũng được khởi tạo ngẫu nhiên). Đây là bước E-step. ví như 1 cụm là "ứng viên" thấp đối có một điểm, nó sẽ có xác suất gần có 1. tuy nhiên, sở hữu xảy ra trường hợp hai hay đa dạng cụm cùng là người tìm việc rẻ, vì thế điểm của chúng ta khi này sẽ sở hữu phân phối xác suất giữa những cụm. tính chất này của thuật toán được gọi là "soft clustering".
Bước M-step ngày nay tính toán lại các tham số của mỗi cụm, bằng cách thức dùng kết quả xác suất của các điểm được tính ở bước E-step. Để tính toán tâm mới, covariance mới và weight mới của 1 cụm, mỗi dữ liệu điểm sẽ được đánh trọng số tỉ lệ thuận mang xác suất biến cố "điểm chậm triển khai thuộc cụm" (lấy từ E-step).
Luân phiên hai bước này sẽ khiến nâng cao trị giá log-likelihood của hàm xác suất cho tới lúc giá trị này tụ hội tới cực đại. nhắc thêm, như vậy sở hữu K-Means, thuật toán EM chỉ cho ta trị giá cực đại địa phương, thành ra ta sở hữu thể sẽ cần phải thực hành thuật toán phổ thông lần để sắm được mô hình phải chăng hơn nữa.
giả dụ ta muốn đưa ra quyết định một điểm bất kỳ thuộc cụm nào, đơn giản chỉ cần chọn cụm cho ta giá trị xác suất cao nhất ứng với điểm chậm triển khai. Và ta cũng có thể hoàn toàn tái hiện lại được 1 dòng như vậy như dữ liệu ban đầu trong khoảng mô phỏng dựa vào dãy các xác suất thu được.
0 nhận xét: