Thuật toán Machine Learning là một trong những từ khóa được tìm kiếm nhiều nhất trên google về chủ đề thuật toán Machine Learning. Trong bài viết này, coder.com.vn sẽ viết bài Những thuật toán Machine Learning dành cho newbie mới tham gia
Đương nhiên, các thuật toán bạn thử phải thích hợp với lỗi lo của bạn, đó là việc bạn chọn đúng công việc cho machine learning. tương tự, nếu như bạn cần dọn dẹp nhà cửa, bạn có thể dùng máy hút bụi, một cây chổi hoặc một cái giẻ lau, nhưng bạn sẽ không dùng một cái xẻng và đào.
The Big Principle
Tuy vậy, có một phép tắc chung là cơ sở cho mọi thuật toán machine learning được giám sát cho mô hình tiên đoán.
Các thuật toán machine learning được miêu tả như việc học một target function (f) để biến bản đồ đầu vào (X) thành biến xuất (Y): Y = f (X)
Đây là một nhiệm vụ học tập bao hàm mà chúng ta muốn đưa rõ ra những tiên đoán tại tương lai (Y) với các ví dụ mới về các biến đầu vào (X). Chúng ta không biết công dụng (f) trông ra sao hoặc dạng của nó. nếu chúng ta làm như vậy, chúng ta sẽ sử dụng nó trực tiếp , không nhất thiết phải học nó từ dữ liệu bằng cách dùng các thuật toán machine learning.
Phương thức rộng rãi nhất của machine learning là học cách lập bản đồ Y = f (X) để đưa rõ ra dự báo của Y cho biến X mới. việc làm này được gọi là mô hình tiên đoán hoặc phân tích tiên đoán , mục đích của chúng ta là làm cho những dự đoán chuẩn xác nhất có khả năng được.
Đối với những người mới học về machine learning mong muốn hiểu được căn bản của nó, đây sẽ là một chuyến tìm hiểu nhanh về 10 thuật toán machine learning hàng đầu được các nhà khoa học dữ liệu sử dụng.
Linear Regression – Hồi quy tuyến tính
Hồi quy tuyến tính có lẽ là một trong những thuật toán được nhiều người biết đến nhất và được hiểu sâu nhất tại tổng hợp và thống kê , machine learning.
Mô hình tiên đoán chủ yếu quan tâm đến việc giảm bớt sai sót của mô hình hoặc đưa rõ ra những dự báo chính xác nhất có khả năng, với một chi phí giải trình. Chúng tôi sẽ mượn, dùng lại và lấy những thuật toán từ nhiều lĩnh vực không giống nhau, bao gồm số liệu thống kê , dùng chúng cho các mục đích này.
Biểu diễn hồi quy tuyến tính là một phương trình mô tả một đường thẳng mô tả phù hợp nhất mối quan hệ giữa các biến đầu vào (x) và những biến đầu ra (y), bằng việc tìm những trọng số chi tiết cho các biến đầu vào được gọi là các hệ số (B).
Ví dụ: y = B0 + B1 * x
Chúng ta sẽ dự báo y với biến x cho trước , mục đích của thuật toán hồi quy tuyến tính là tìm những giá trị cho các hệ số B0 và B1.
những kĩ thuật khác nhau có thể được sử dụng để tìm mô hình hồi quy tuyến tính từ dữ liệu, chẳng hạn như một phương pháp đại số tuyến tính cho Ordinary least square , việc sửa đổi và cải thiện Gradient descent.
Hồi quy tuyến tính đã được phát minh khoảng hơn 200 năm , đã được nghiên cứu phổ biến. một vài quy tắc tốt khi dùng kĩ thuật này là bỏ đi những biến cũng giống như nhau (correlated) , để bỏ đi bớt nhân tố sao lãng từ dữ liệu của bạn, nếu có khả năng. đây là một kĩ thuật dễ dàng , mau chóng, và là thuật toán tốt đầu tiên để thử.
2. Logistic Regression – Hồi quy logistic
Hồi quy logistic là một thuật toán khác được mượn bởi machine learning từ lĩnh vực tổng hợp và thống kê. Đây là phương thức tốt nhất cho các điểm chia loại nhị phân (vấn đề với hai lớp giá trị).
Hồi quy logistic tương tự như hồi quy tuyến tính với mục tiêu là để tìm ra các giá trị cho những hệ số mà trọng lượng mỗi biến đầu vào. Không giống như hồi quy tuyến tính, dự báo đầu ra được chuyển đổi bằng việc dùng một hàm không tuyến tính được gọi là hàm logistic.
Hàm logistic trông tương tự như một S lớn , sẽ biến đổi bất kỳ giá trị nào thành 0-1. điều này cực kì hữu ích bởi vì chúng ta có thể ứng dụng một phép tắc cho đầu ra của hàm logistic để tăng giá trị cho 0 và 1 (ví dụ IF ít hơn 0.5 sau đó đầu ra 1) , dự đoán một lớp giá trị.
Vì cách mô hình được học, các dự báo hành động bởi hồi quy logistic cũng có thể được sử dụng như là xác suất của một chẳng hạn như dữ liệu chắc chắn thuộc lớp 0 hoặc lớp 1. điều này có thể hữu ích cho các vấn đề khi bạn phải cần đưa ra nhiều nguyên nhân cho một dự báo.
giống như hồi quy tuyến tính, hồi quy logistic hoạt động tốt hơn khi mà bạn đào thải các thuộc tính không liên quan đến biến đầu ra cũng như các tính chất tương tự nhau (correlated). đấy là một mô hình có khả năng học hỏi nhanh và có hiệu quả với các vấn đề phân loại nhị phân.
Xem thêm: Mean Stack là gì? Cách Tạo ứng dụng MEAN Stack với framework MEAN.IO
3 Linear Discriminant Analysis – Phân tích chia loại tuyến tính
Hồi quy Logistic là một thuật toán phân loại truyền thống giới hạn vào các điểm chia loại hai lớp. nếu như bạn có nhiều hơn hai lớp thì thuật toán phân tích chia loại tuyến tính nên được ưu tiên.
Sự biểu hiện của LDA khá đơn giản. Nó gồm có các thuộc tính thống kê của dữ liệu của bạn, được tính cho mỗi lớp. Đối với một biến đầu vào duy nhất, nó bao gồm:
- Giá trị trung bình cho mỗi lớp.
- Phương sai được tính trên tổng cộng những lớp.
Dự đoán được thực hiện bằng cách tính giá trị phân biệt cho mỗi lớp , dự báo cho lớp đó có giá trị lớn nhất. Kĩ thuật giả định rằng dữ liệu có một phân bố Gaussian (bell curve), thế nên tốt hơn là bạn nên loại bỏ những giá trị ngoại vi khỏi dữ liệu của bạn trước. đây chính là một phương pháp giản đơn và mạnh mẽ để chia loại các vấn đề mô hình dự đoán.
4. Classification and regression trees – Cây chia loại , hồi quy
Decision trees là một loại thuật toán đặc biệt cho mô hình tiên đoán machine learning.
Sự biểu diễn của mô hình decision tree là một cây nhị phân. đây là cây nhị phân của bạn từ các thuật toán , cấu trúc dữ liệu, không hề có gì quá ưu chuộng. Mỗi node biểu hiện cho một biến đầu vào duy nhất (x) , một điểm phân chia trên biến đấy (giả sử biến đấy là số).
Những node lá của cây chứa một biến đầu ra (y) được dùng để dự báo. các tiên đoán được hành động bằng cách đi trên những nhánh của cây cho đến khi đến một node lá và đưa ra lớp giá trị trong node lá đó.
Cây có thể học rất nhanh , có thể sử dụng để dự đoán rất nhanh. Chúng thường hay chính xác cho nhiều loại vấn đề và dữ liệu của bạn không cần bất kỳ sự chuẩn bị đặc biệt nào.
5. Naive Bayes
Naive Bayes là một thuật toán giản đơn tuy nhiên mãnh liệt về mô hình tiên đoán.
Mô hình bao gồm hai loại phần trăm có khả năng được tính trực tiếp từ dữ liệu của bạn:
1) xác suất của mỗi lớp;
2 phần trăm có điều khiếu nại cho mỗi lớp với mỗi giá trị x.
Khi mà đã tính, mô hình phần trăm có thể được sử dụng để đưa ra dự đoán cho dữ liệu mới bằng Định lý Bayes. Khi dữ liệu của bạn có giá trị thực, giả sử một phân phối Gaussian (bell curve) khá rộng rãi nên bạn có khả năng đơn giản ước tính được các phần trăm này.
Naive Bayes được gọi là naive vì nó giả định rằng mỗi biến đầu vào là độc lập. đây chính là một giả định mạnh mẽ , không thực tế đối với dữ liệu thực, tuy vậy, kĩ thuật này cực kỳ hiệu quả trên một phạm vi rộng rãi với các vấn đề phức tạp.
K – Nearest Neighbors – KNN
Thuật toán KNN cực kì dễ dàng , vô cùng hiệu quả. Mô hình biểu hiện cho KNN là tất cả dữ liệu tập huấn. dễ dàng phải không?
Dự báo được hành động cho một điểm dữ liệu mới bằng cách tìm kiếm thông qua toàn bộ tập huấn luyện cho đa phần những chẳng hạn như K giống nhau (hàng xóm) , tóm lược biến đầu ra cho những chẳng hạn như K. Đối với các vấn đề hồi quy, đây có thể là biến đầu ra trung bình, đối với các điểm phân loại, đây có khả năng là mode (hoặc rộng rãi nhất) của lớp.
Xem thêm: Các ngôn ngữ lập trình đáng học nhất trong năm 2020
Cách là làm sao để chọn lựa sự giống nhau giữa các hoàn cảnh dữ liệu. Kĩ thuật cơ bản nhất nếu như các thuộc tính của bạn có cùng kích cỡ (ví dụ tất cả đều là inch) là dùng khoảng cách Euclide, một con số bạn có khả năng tính toán trực tiếp dựa trên sự khác biệt giữa mỗi biến đầu vào.
KNN có thể yêu cầu rất nhiều bộ nhớ hoặc không gian để lưu trữ tổng cộng dữ liệu, tuy nhiên chỉ hành động tính toán (hoặc học) khi một dự báo là thiết yếu, chỉ vừa kịp thời. Bạn cũng có khả năng cập nhật , tổ chức các bài tập huấn luyện theo thời gian để giữ những dự báo chính xác.
Ý tưởng về khoảng bí quyết hoặc độ gần có khả năng bị phá vỡ với các quy mô rất cao (rất nhiều biến đầu vào) có khả năng ảnh hưởng tiêu cực đến hiệu suất của thuật toán đối với vấn đề của bạn. Đây được gọi là lời nguyền của quy mô. Nó cho chúng ta thấy bạn chỉ sử dụng những biến đầu vào có có sự liên quan nhất đến dự báo biến đầu ra.
7. Học Vector Quantization
điểm không tốt của K- Nearest Neighbors là bạn cần phải giữ nguyên bộ dữ liệu đào tạo của mình. Thuật toán Quantization về Vector (hay LVQ) là một thuật toán mạng thần kinh nhân xây dựng cho phép bạn chọn có bao nhiêu trường hợp huấn luyện để treo lên , nghiên cứu chuẩn xác những hoàn cảnh này sẽ như thế nào.
Sự biểu diễn cho LVQ là một tập hợp các codebook vector. Chúng được chọn lựa ngẫu nhiên từ đầu và thích nghi để tóm lược tối ưu tập dữ liệu đào tạo qua một vài lần lặp của thuật toán. Sau khi học được, những vector mã có thể được sử dụng để sản sinh ra các dự đoán giống như K- Nearest Neighbors. những hàng xóm tương tự nhất ( thích hợp với codebook vector nhất ) được tìm thấy bằng việc tính toán khoảng cách giữa mỗi vector , chẳng hạn như dữ liệu mới. Lớp giá trị hoặc (giá trị thực trong trường hợp hồi quy) cho đơn vị kết hợp tối ưu sau đó sẽ được trả về như dự đoán. kết quả tốt nhất đạt được khi bạn điều chỉnh dữ liệu của mình để có cùng phạm vi, ví dụ giữa 0 , 1.
Nếu bạn phát hiện ra rằng KNN mang lại hậu quả tốt trên tập dữ liệu của bạn, hãy thử sử dụng LVQ để giảm đòi hỏi về bộ nhớ để lưu trữ tất cả tập dữ liệu đào tạo.
8. Support Vector machines
Support vector machines có lẽ là một trong những thuật toán machine learning phổ biến nhất , được nói về nhiều nhất.
Một hyperplane là một đường phân chia không gian biến đầu vào. tại SVM, một hyperplance được chọn để phân tách tốt nhất các điểm trong không gian các biến đầu vào theo lớp của chúng, hoặc là lớp 0 hoặc lớp 1. trong hai chiều, bạn có thể tưởng tượng nó như một đường thẳng và giả sử rằng tổng cộng các biến đầu vào của chúng ta có thể được tách hoàn toàn bằng dòng này. Thuật toán SVM tìm ra các hệ số dẫn đến sự phân tách tốt nhất của những lớp theo hyperplance.
Khoảng bí quyết giữa hyperplane , điểm dữ liệu gần nhất được gọi là biên. Hyperplane tối ưu hoặc tối ưu có thể tách riêng hai lớp là dòng có biên lớn nhất. Chỉ những điểm này có có sự liên quan đến việc xác định hyperplane và trong việc tạo các vấn đề phân loại. các điểm này được gọi là những vector giúp đỡ. Chúng hỗ trợ hoặc chọn lựa hyperplane. tại thực tế, một thuật toán tốt nhất được dùng để tìm các giá trị cho những hệ số tối đa hóa biên.
SVM có khả năng là một tại các phương pháp chia loại hàng đầu mãnh liệt nhất , đáng thử trên tập dữ liệu của bạn.
9. Bagging and Random Forest
Random Forest là một trong những thuật toán machine learning phổ biến nhất , mạnh nhất. Nó là một loại thuật toán machine learning được gọi là Bootstrap Aggregation hoặc Bagging.
Bootstrap là một cách tổng hợp và thống kê mãnh liệt để ước lượng số lượng từ một mẫu dữ liệu. chẳng hạn như một giá trị trung bình. Bạn thu thập rất nhiều mẫu dữ liệu của bạn, tính giá trị trung bình, sau đấy trung bình tổng cộng những giá trị trung bình của bạn để bạn ước lượng vượt trội hơn giá trị trung bình thật sự.
Trong bagging, cách tiếp cận cũng giống như được dùng, tuy nhiên thay vì để ước lượng tất cả mô hình thống kê, thường là decision trees. Nhiều mẫu dữ liệu đào tạo của bạn được lấy sau đấy các mô hình được tạo cho mỗi mẫu dữ liệu. Khi bạn phải cần dự đoán dữ liệu mới, mỗi mô hình sẽ dự đoán , các dự báo được tính trung bình để ước lượng vượt trội hơn giá trị đầu ra thật sự.
Random forest là một sự tinh chỉnh trên phương pháp đến gần hơn này, nơi những decision trees được sản sinh ra để thay vì chọn các điểm phân chia tối ưu, việc phân chia tối ưu được thực hiện bằng cách đưa rõ ra sự ngẫu nhiên.
Các mô hình được tạo cho mỗi mẫu dữ liệu không giống nhau nhiều so với chúng lẽ ra phải như thế, tuy vậy vẫn chính xác theo các cách độc đáo và không giống nhau. Kết hợp dự báo của chúng dẫn đến một ước tính vượt trội hơn về giá trị đầu ra cơ bản.
Nếu như bạn thu được kết quả tốt với một thuật toán có độ biến thiên cao (như decision trees), bạn thường sở hữu thể thu được kết quả tốt hơn bằng việc bagging thuật toán đấy.
10. Boosting , AdaBoost
Boosting là một kĩ thuật đồng bộ nhằm cố gắng sản sinh ra một phương pháp chia loại mạnh từ một số giải pháp phân loại yếu đuối. việc làm này được thực hiện bằng việc tạo mô hình từ dữ liệu huấn luyện, sau đấy sản sinh ra một mô hình thứ 2 cố gắng sửa lỗi từ mô hình đầu tiên. các mô hình được đưa vào cho đến khi tập đào tạo được dự đoán không tỳ vết hoặc thêm một số mô hình tối đa.
AdaBoost là thuật toán boosting chiến thắng trước tiên được phát triển để phân loại nhị phân. đây chính là điểm khởi đầu tốt nhất để hiểu về boosting. các phương pháp boosting hiện đại xây dựng trên AdaBoost, Đặc biệt nhất là các máy boosting gradient ngẫu nhiên.
AdaBoost được sử dụng với những decision trees ngắn. Sau khi cây trước tiên được tạo ra, hiệu suất của cây trên mỗi hoàn cảnh huấn luyện được dùng để đo độ chú ý của cây kế tiếp được tạo nên chú ý đến từng hoàn cảnh đào tạo. Dữ liệu huấn luyện khó dự đoán sẽ có trọng lượng hơn, trong thời gian những hoàn cảnh dễ dự báo có ít trọng lượng hơn. những mô hình được tạo theo thứ tự tuần tự, mỗi lần cập nhật những trọng số trên những trường hợp huấn luyện tác động đến việc học được hành động bởi cây tiếp theo tại chuỗi. Sau khi tất cả các cây được xây dựng, dự đoán được thực hiện cho dữ liệu mới, , hiệu năng của mỗi cây được đo đạc bằng việc nó đã được về dữ liệu huấn luyện.
Bởi vì rất nhiều sự lưu ý được đưa rõ ra để sửa sai trái theo thuật toán, điều đặc biệt là bạn nên có dữ liệu sạch sẽ với những giá trị biên.
Last Takeaway
Một câu hỏi điển hình được hỏi bởi những người mới khởi đầu, khi phải đương đầu với cực kì nhiều thuật toán machine learning, là “Tôi nên sử dụng thuật toán nào?” Câu giải đáp cho câu hỏi thay đổi tùy thuộc vào nhiều nhân tố, bao gồm:
1) Kích thước, chất lượng và thuộc tính của dữ liệu;
2. Thời gian tính toán;
3 Tính cấp bách của nhiệm vụ; v
4. Bạn mong muốn làm gì với dữ liệu.
kể cả một nhà khoa học dữ liệu giàu kinh nghiệm cũng chẳng thể biết được thuật toán nào sẽ hành động tốt nhất trước khi thử những thuật toán không giống nhau. dù rằng có nhiều thuật toán machine learning khác, đây chính là những thuật toán phổ biến nhất. nếu như bạn là một newbie trong mảng machine learning, đây sẽ là một điểm bắt đầu tốt để nghiên cứu.
Nguồn: https://techtalk.vn/