Thực hành Machine Learning: Dùng Scikit học xu hướng chỉ số chứng khoán Đài Loan (Phần 1) – Machine Learning 101
Machine learning là một phương pháp phân tích thống kê. Nói đơn giản, các bài toán machine learning có thể xử lý được chia thành bốn nhóm lớn: phân loại (classification), hồi quy (regression), phân cụm (clustering) và rút trích quy luật (Rule Extraction).

Yên tâm! Bài này toàn kiến thức thật, không nói suông, và cũng không còn mấy trò Ctrl + C nữa đâu.

Machine learning là một phương pháp phân tích thống kê. Ý tưởng chính là: ta đưa cho nó một đống dữ liệu và yêu cầu nó trả về kết quả.
Kết quả đó có thể là đáp án ta cần (ví dụ: rẽ trái hay rẽ phải), cũng có thể là một khái niệm trừu tượng để ta dựa vào đó mà phân loại.
Nói đơn giản, các bài toán machine learning có thể xử lý được chia thành bốn nhóm lớn: phân loại (classification), hồi quy (regression), phân cụm (clustering) và rút trích quy luật (Rule Extraction).
1. Phân loại (classification): Ta cho mô hình machine learning học một tập dữ liệu đã biết đáp án, ví dụ: X = [0,2,3,3,4,5,6,7,8] Y = Taipei X = [0,7,3,3,4,5,6,7,8] Y = Kaohsiung X = [0,4,3,3,4,5,6,7,8] Y = Taichung X = ... Đưa vào thật nhiều số điện thoại, đáp án là mã vùng tương ứng. Ta kỳ vọng mô hình học được cách nhìn một số điện thoại là biết nó thuộc thành phố nào. Đây là bài toán phân loại. Giả sử mô hình đã huấn luyện xong, ta đưa vào X = [0,2,1,2,3,4,5,6,7,8] Nếu mô hình trả về Taipei nghĩa là đã học thành công! 2. Hồi quy (regression): Ta cho mô hình machine learning học một tập dữ liệu đã biết đáp án, ví dụ: X = [0,1,2,3] Y = 12 X = [0,3,4,2] Y = 22 X = [0,1,1,1] Y = 23 X = ... Đưa vào thật nhiều dãy số ngẫu nhiên, đáp án là tổng của dãy số đó. Ta kỳ vọng mô hình học được cách nhìn một dãy số ngẫu nhiên là trả về một con số. Giải thích thêm: khác biệt lớn nhất so với bài toán phân loại nằm ở kết quả dự đoán. Khi kết quả dự đoán là liên tục, đó là bài toán hồi quy; khi kết quả là rời rạc, đó là bài toán phân loại hoặc loại khác. Ví dụ thực tế về hồi quy có thể xem ở đường link này: dùng mực nước sông và lượng mưa trong sáu giờ qua để dự đoán mực nước hai giờ sau. 3. Phân cụm (clustering): Đưa cho mô hình một đống dữ liệu chưa biết đáp án, kèm một số logic phân nhóm (như khoảng cách giữa các điểm), để nó tự phân loại dữ liệu. VD: Nhận diện khuôn mặt của Facebook 4. Rút trích quy luật (Rule Extraction) Phần này trừu tượng hơn, giống như dùng phương pháp phân tích để tìm ra quy luật. Ví dụ, bạn đưa vào 10.000 bức ảnh, sau khi phân cụm thấy bạn và chị gái luôn bị xếp chung một nhóm, vậy bạn có thể nghi ngờ hợp lý rằng hai chị em có cùng bố và mẹ. Nhận diện ảnh -> quan hệ huyết thống, tôi nghĩ đại khái đó chính là rút trích quy luật! Thấy hơi “chém gió” cũng không sao. Giả sử bạn dự đoán hồi quy doanh số của 10.000 mặt hàng và phát hiện bia với tã giấy có cùng chu kỳ mua, vậy bạn có thể nghi ngờ hợp lý rằng uống rượu xong thì dễ có con hơn, dự đoán doanh số -> uống rượu thì có con.
Đến đây, về cơ bản ta đã hiểu machine learning có thể giải quyết những bài toán nào.
Nhưng điều quan trọng vẫn là: nó giải quyết như thế nào?
Thông thường, ta sẽ chọn một thuật toán hoặc kết hợp nhiều thuật toán để xử lý bài toán. Chỉ cần kết quả hội tụ được thì đều là thuật toán đáng thử.
Vậy có những thuật toán nào?
1. Regression Algorithms Đây là phương pháp hồi quy, bài toán dự đoán mực nước ở trên được giải bằng cách này. Tất nhiên hồi quy có rất nhiều phương pháp đặc thù, ở đây không đi sâu. 2. Instance-based Algorithms Dựa vào những sự việc đã xảy ra để suy ra điều gì sẽ xảy ra khi một dấu hiệu nào đó xuất hiện trong tương lai. 3. Clustering Algorithms Phân nhóm: rải một đống điểm vào một không gian có số chiều tùy ý, tự định nghĩa khoảng cách Euclid (Euclidean distance), điểm nào tụ lại với nhau thì cùng một nhóm. Thuật toán tiêu biểu gồm k-Means, k-Median. 4. Kernel Algorithms Trước thời đại big data, đây là nhóm thuật toán mạnh nhất trong machine learning, nổi tiếng nhất là máy vector hỗ trợ (Supported Vector Machine, SVM). Ý tưởng là ánh xạ dữ liệu gốc lên không gian nhiều chiều hơn rồi mới phân loại; dù sao thì polynomial function luôn có một bậc nào đó cắt hoàn hảo được dữ liệu. 5. Ensemble Algorithms Đây là thuật toán tôi khá thích: học từ kết quả của nhiều mô hình đã huấn luyện rồi tính ra kết quả thêm một lần nữa. Có thể hình dung như AlphaGo: nó cần biết thế cờ hiện tại, thế cờ sau nước bạn vừa đi, và diễn biến tiếp theo sau nước nó định đi, từ đó quyết định đi nước nào. 6. Neural Network Algorithms Mô phỏng tế bào thần kinh của chúng ta: đưa một đống dữ liệu vào các nơ-ron, các nơ-ron phản ứng phi tuyến. 7. Deep Learning Đây có thể xem là một “biến thể dị” của mạng nơ-ron, cũng là phương pháp chính chúng ta sẽ nói tiếp theo. Hãy hình dung có rất nhiều nơ-ron truyền tín hiệu qua lại cho nhau, cuối cùng cả hệ thần kinh cho ra một tín hiệu hoặc một phân loại.
Tất nhiên còn rất nhiều loại thuật toán khác, về cơ bản khi nào cần thì đi tìm paper là được.
Dưới đây là một số tài liệu tham khảo cho ai muốn tìm hiểu sâu hơn.
[1] Practical Machine Learning Problem
[2] Giới thiệu trực quan về Machine Learning (bản tiếng Trung)
[3] Coursera — Machine Leanring








![[Chia sẻ kỹ thuật] Python 101](/assets/605852e084fb2346c3ea1559/60d97a7ac780931f83b3a365_60a5dbb5df894306f2930b52_manja-vitolic-gKXKBY-C-Dk-unsplash%20(1)-p-1080.jpeg)











