Học máy không có Python, Anaconda và các loài bò sát khác

Không, tất nhiên là tôi không nghiêm túc. Phải có giới hạn ở mức độ có thể đơn giản hóa một chủ đề. Nhưng đối với những giai đoạn đầu, việc hiểu các khái niệm cơ bản và nhanh chóng “nhập” chủ đề thì có thể chấp nhận được. Ở phần cuối, chúng ta sẽ thảo luận về cách đặt tên chính xác cho tài liệu này (các tùy chọn: “Học máy cho núm vú giả”, “Phân tích dữ liệu từ tã lót”, “Thuật toán dành cho trẻ nhỏ”).

Đến điểm. Đã viết một số chương trình ứng dụng trong MS Excel để trực quan hóa và trình bày trực quan các quy trình xảy ra trong các phương pháp học máy khác nhau khi phân tích dữ liệu. Xét cho cùng, nhìn thấy là tin tưởng, như những người mang nền văn hóa nói, đã phát triển hầu hết các phương pháp này (nhân tiện, không phải tất cả chúng. “Máy vectơ hỗ trợ” hay SVM mạnh nhất là phát minh ra nhân tiện, đồng hương của chúng tôi là Vladimir Vapnik, Học viện Quản lý Moscow, 1963! Tuy nhiên, bây giờ ông ấy đang giảng dạy và làm việc tại Hoa Kỳ).

Ba tệp để xem xét

1. Phân cụm K-mean

Các bài toán thuộc loại này đề cập đến “học không giám sát”, khi chúng ta cần chia dữ liệu ban đầu thành một số danh mục nhất định đã biết trước, nhưng chúng ta không có bất kỳ “câu trả lời đúng” nào mà chúng ta phải trích xuất chúng từ chính dữ liệu đó; . Vấn đề cổ điển cơ bản về việc tìm ra các phân loài hoa diên vĩ (Ronald Fisher, 1936!), được coi là dấu hiệu đầu tiên của lĩnh vực kiến ​​thức này, chỉ có bản chất như vậy.

Phương pháp này khá đơn giản. Chúng ta có một tập hợp các đối tượng được biểu diễn dưới dạng vectơ (bộ N số). Trong tròng đen, đây là bộ gồm 4 số đặc trưng cho hoa: chiều dài và chiều rộng của thùy ngoài và thùy trong của bao hoa, tương ứng (Tròng đen của Fischer - Wikipedia). Số liệu Descartes thông thường được chọn làm khoảng cách hoặc thước đo khoảng cách giữa các đối tượng.

Tiếp theo, tâm cụm được chọn ngẫu nhiên (hoặc không ngẫu nhiên, xem bên dưới) và khoảng cách từ mỗi đối tượng đến tâm cụm được tính toán. Mỗi đối tượng ở một bước lặp nhất định được đánh dấu là thuộc về trung tâm gần nhất. Sau đó, tâm của mỗi cụm được chuyển sang giá trị trung bình số học của tọa độ các thành viên của nó (tương tự như vật lý, nó còn được gọi là “tâm khối lượng”) và quy trình được lặp lại.

Quá trình hội tụ khá nhanh chóng. Trong ảnh ở hai chiều, nó trông như thế này:

1. Phân bố ngẫu nhiên ban đầu các điểm trên mặt phẳng và số cụm

Học máy không có Python, Anaconda và các loài bò sát khác

2. Chỉ định tâm cụm và gán điểm cho cụm của chúng

Học máy không có Python, Anaconda và các loài bò sát khác

3. Chuyển tọa độ các tâm cụm, tính toán lại sự liên kết của các điểm cho đến khi các tâm ổn định. Có thể nhìn thấy quỹ đạo của tâm cụm di chuyển đến vị trí cuối cùng.

Học máy không có Python, Anaconda và các loài bò sát khác

Bất cứ lúc nào, bạn có thể đặt các trung tâm cụm mới (mà không tạo ra sự phân bổ điểm mới!) và thấy rằng quá trình phân vùng không phải lúc nào cũng rõ ràng. Về mặt toán học, điều này có nghĩa là đối với hàm được tối ưu hóa (tổng bình phương khoảng cách từ các điểm đến tâm của cụm của chúng), chúng ta không tìm thấy mức tối thiểu toàn cục mà là mức tối thiểu cục bộ. Vấn đề này có thể được khắc phục bằng cách lựa chọn không ngẫu nhiên các trung tâm cụm ban đầu hoặc bằng cách liệt kê các trung tâm có thể có (đôi khi sẽ thuận lợi nếu đặt chúng chính xác tại một trong các điểm, khi đó ít nhất có sự đảm bảo rằng chúng ta sẽ không bị trống cụm). Trong mọi trường hợp, một tập hữu hạn luôn có vô số.

Bạn có thể chơi với tập tin này tại liên kết này (đừng quên bật hỗ trợ macro. Các tập tin đã được quét virus)

Mô tả phương pháp trên Wikipedia - phương pháp k-nghĩa

2. Xấp xỉ bằng đa thức và phân tích dữ liệu. Đào tạo lại

Nhà khoa học và nhà phổ biến khoa học dữ liệu đáng chú ý K.V. Vorontsov mô tả ngắn gọn các phương pháp học máy là “khoa học vẽ đường cong qua các điểm”. Trong ví dụ này, chúng ta sẽ tìm thấy một mẫu trong dữ liệu bằng phương pháp bình phương tối thiểu.

Kỹ thuật phân chia dữ liệu nguồn thành “đào tạo” và “kiểm soát” được hiển thị, cũng như hiện tượng như đào tạo lại hoặc “điều chỉnh lại” dữ liệu. Với phép tính gần đúng chính xác, chúng ta sẽ có một sai số nhất định trên dữ liệu huấn luyện và sai số lớn hơn một chút trên dữ liệu điều khiển. Nếu không chính xác, nó sẽ dẫn đến việc điều chỉnh chính xác dữ liệu huấn luyện và gây ra lỗi lớn trên dữ liệu kiểm tra.

(Một thực tế nổi tiếng là thông qua N điểm người ta có thể vẽ một đường cong cấp N-1, và phương pháp này trong trường hợp tổng quát không cho kết quả như mong muốn. Đa thức nội suy Lagrange trên Wikipedia)

1. Đặt phân phối ban đầu

Học máy không có Python, Anaconda và các loài bò sát khác

2. Chúng tôi chia điểm thành “huấn luyện” và “kiểm soát” theo tỷ lệ 70:30.

Học máy không có Python, Anaconda và các loài bò sát khác

3. Chúng tôi vẽ đường cong gần đúng dọc theo các điểm huấn luyện, chúng tôi thấy lỗi mà nó gây ra đối với dữ liệu điều khiển

Học máy không có Python, Anaconda và các loài bò sát khác

4. Chúng tôi vẽ một đường cong chính xác thông qua các điểm huấn luyện và chúng tôi thấy một lỗi khủng khiếp trên dữ liệu kiểm soát (và bằng XNUMX trên dữ liệu huấn luyện, nhưng vấn đề là gì?).

Học máy không có Python, Anaconda và các loài bò sát khác

Tất nhiên, được hiển thị là tùy chọn đơn giản nhất với sự phân chia duy nhất thành các tập con "huấn luyện" và "điều khiển" trong trường hợp chung, việc này được thực hiện nhiều lần để điều chỉnh các hệ số một cách tốt nhất.

Tệp có sẵn ở đây, được quét bằng phần mềm chống vi-rút. Kích hoạt macro để hoạt động chính xác

3. Độ dốc giảm dần và động lực thay đổi lỗi

Sẽ có trường hợp 4 chiều và hồi quy tuyến tính. Các hệ số hồi quy tuyến tính sẽ được xác định từng bước bằng phương pháp giảm độ dốc, ban đầu tất cả các hệ số đều bằng 2. Một biểu đồ riêng cho thấy động lực giảm lỗi khi các hệ số được điều chỉnh ngày càng chính xác hơn. Có thể xem tất cả bốn hình chiếu XNUMX chiều.

Nếu bạn đặt bước giảm độ dốc quá lớn, bạn có thể thấy rằng mỗi lần chúng tôi sẽ bỏ qua mức tối thiểu và sẽ đạt được kết quả với số bước lớn hơn, mặc dù cuối cùng chúng tôi vẫn sẽ đến (trừ khi chúng tôi cũng trì hoãn bước giảm dần nhiều - thì thuật toán sẽ tiến hành “ theo từng đợt”). Và đồ thị sai số tùy theo bước lặp sẽ không được mượt mà mà “giật”.

1. Tạo dữ liệu, thiết lập bước giảm độ dốc

Học máy không có Python, Anaconda và các loài bò sát khác

2. Với việc lựa chọn chính xác bước giảm độ dốc, chúng ta sẽ đạt được mức tối thiểu một cách suôn sẻ và nhanh chóng

Học máy không có Python, Anaconda và các loài bò sát khác

3. Nếu bước giảm độ dốc được chọn không chính xác, chúng ta sẽ vượt quá mức tối đa, đồ thị lỗi bị giật, quá trình hội tụ cần nhiều bước hơn

Học máy không có Python, Anaconda và các loài bò sát khác
и

Học máy không có Python, Anaconda và các loài bò sát khác

4. Nếu chúng ta chọn bước giảm độ dốc hoàn toàn không chính xác, chúng ta sẽ rời xa mức tối thiểu

Học máy không có Python, Anaconda và các loài bò sát khác

(Để tái tạo quy trình bằng cách sử dụng các giá trị bước giảm độ dốc hiển thị trong ảnh, hãy chọn hộp “dữ liệu tham chiếu”).

File ở link này, bạn phải bật macro nhé, không có virus.

Theo cộng đồng được kính trọng, liệu việc đơn giản hóa và phương pháp trình bày tài liệu như vậy có được chấp nhận không? Có đáng để dịch bài viết sang tiếng Anh không?

Nguồn: www.habr.com

Thêm một lời nhận xét