Lựa chọn thuật toán Machine Learning phù hợp



 Machine learning (ML) vừa là khoa học, vừa là nghệ thuật. Có hẳn một rừng thuật toán ML, tuy nhiên không phải cái nào cũng phù hợp cho tất cả bài toán của chúng ta. Có nhiều yếu tố có thể tác động đến việc quyết định chọn thuật toán của bạn.

Bài viết này được dịch từ tác giả Rajat Harlalka ở link gốc này 

https://hackernoon.com/choosing-the-right-machine-learning-algorithm-68126944ce1f

Sau đây, chúng ta hãy cùng nhau xem xét một vài yếu tố có thể giúp bạn khoanh vùng các thuật toán phù hợp.



1. Xử lý dữ liệu khoa học

Trước khi bạn bắt đầu tìm kiếm thuật toán ML phù hợp, bạn cần phải có một cái nhìn toàn cảnh, rõ ràng về dữ liệu, về vấn đề và ràng buộc của bạn.

2. Hiểu dữ liệu

Loại dữ liệu và kiểu dữ liệu (Type and kind of data) có vai trò quan trọng trong việc quyết định xem nên sử dụng thuật toán nào. Một vài thuật toán có thể xử lý tốt với tập mẫu nhỏ trong khi các thuật toán khác yêu cầu hàng tấn mẫu. Thuật toán nhất định làm việc với kiểu dữ liệu nhất định. Ví dụ Naïve Bayes xử lý tốt với kiểu đầu vào phân loại (categorical) nhưng lại không nhạy với dữ liệu bị thiếu.

Do đó, điều quan trọng là bạn phải:

Biết dữ liệu

- Hãy nhìn vào tổng hợp thống kê và các biểu đồ

  • Tỷ lệ % có thể giúp xác định phạm vi cho hầu hết các dữ liệu
  • Trung bình và trung vị có thể mô tả xu hướng trung tâm
  • Tương quan giữa các yếu tố trong dữ liệu

- Trực quan hóa dữ liệu

  • Biểu đồ hộp (boxplot) có thể xác định ngoại lai (outliers)
  • Biểu đồ density và histograms thể hiện sự trải rộng của dữ liệu
  • Biểu đồ scatter mô tả quan hệ giữa các biến

Làm sạch dữ liệu

- Xử lý các giá trị bị thiếu. Giá trị bị thiếu/ bị lỗi ảnh hưởng đến model nhiều hơn các vấn đề khác. Ngay cả với những models xử lý được dữ liệu bị missing, kết quả output có thể bị ảnh hưởng

- Lựa chọn làm gì với ngoại lai

  • Các giá trị ngoại lai có thể rất nhiều trong các dữ liệu đa chiều
  • Một số mô hình ít nhạy cảm với ngoại lai hơn những mô hình khác. Thông thường các mô hình cây ít nhạy cảm hơn với sự hiện diện của các yếu tố ngoại lai. Tuy nhiên, các mô hình hồi quy, hoặc bất kỳ mô hình nào sử dụng các phương trình, chắc chắn bị ảnh hưởng bởi các giá trị ngoại lai.
  • Các giá trị ngoại lai có thể là kết quả của việc thu thập dữ liệu không tốt hoặc chúng có thể là các giá trị cực đoan
- Dữ liệu có cần được tổng hợp không?

Tăng cường dữ liệu

- Feature engineering (trích chọn đặc trưng) là quá trình xử lý từ dữ liệu thô sang dữ liệu sẵn sàng để tạo mô hình. Nó có thể phục vụ nhiều mục đích:

  • Làm cho các mô hình dễ hiểu hơn (ví dụ: binning)
  • Nắm bắt các mối quan hệ phức tạp hơn (ví dụ: NN)
  • Giảm dư thừa và kích thước dữ liệu (ví dụ: PCA)
  • Rescale lại biến (ví dụ: standardizing or normalizing)

- Các mô hình khác nhau có thể có các yêu cầu feature engineering khác nhau. Một số được xây dựng trong feature engineering.

3. Phân loại vấn đề

Bước tiếp theo là phân loại vấn đề với 2 bước xử lý

- Phân loại đầu vào

  • Nếu bạn có dữ liệu được gắn nhãn thì đó là vấn đề học tập có giám sát (supervised learning)
  • Nếu bạn có dữ liệu chưa được gắn nhãn và muốn tìm cấu trúc, đó là một vấn đề học tập không có giám sát (unsupervised learning)
  • Nếu bạn muốn tối ưu hóa một hàm mục tiêu bằng cách tương tác với môi trường, đó là một vấn đề học tập củng cố (reinforcement learning)

- Phân loại đầu ra

  • Nếu đầu ra của mô hình là số, đó là một vấn đề hồi quy.
  • Nếu đầu ra của mô hình là lớp, thì đó là một vấn đề phân loại.
  • Nếu đầu ra của mô hình là một tập hợp các nhóm đầu vào, thì đó là một vấn đề phân cụm.
  • Bạn có muốn phát hiện điều bất thường không? Đó là phát hiện bất thường (anomaly detection)

4. Hiểu những ràng buộc

- Dung lượng lưu trữ dữ liệu của bạn là bao nhiêu? Tùy thuộc vào dung lượng lưu trữ của hệ thống, bạn có thể không lưu trữ được hàng gigabyte mô hình phân loại/hồi quy hoặc gigabyte dữ liệu để phân cụm. 

- Dự đoán có phải nhanh không? Trong các ứng dụng thời gian thực, rõ ràng là rất quan trọng để có một dự đoán càng nhanh càng tốt. Ví dụ: trong lái xe số tự động, điều quan trọng là việc phân loại các biển báo đường càng nhanh càng tốt để tránh tai nạn.

-Việc huấn luyện có phải nhanh không? Trong một số trường hợp, việc huấn luyện mô hình một cách nhanh chóng là cần thiết: đôi khi, bạn cần cập nhật nhanh chóng mô hình của mình một cách nhanh chóng với một tập dữ liệu khác.

5. Tìm các thuật toán có sẵn

Bây giờ bạn đã hiểu rõ về dữ liệu và vấn đề của mình, bạn có thể xác định các thuật toán có thể áp dụng và thực tế để triển khai bằng cách sử dụng các công cụ theo ý mình. Một số yếu tố ảnh hưởng đến việc lựa chọn một mô hình là:

  • Mô hình có đáp ứng các mục tiêu kinh doanh không
  • Cần bao nhiêu tiền xử lý mô hình
  • Độ chính xác của mô hình là bao nhiêu
  • Mô hình có thể giải thích được như thế nào
  • Tốc độ của mô hình: Mất bao lâu để xây dựng một mô hình và mất bao lâu để mô hình đưa ra dự đoán.
  • Mô hình có thể mở rộng như thế nào

Một tiêu chí quan trọng ảnh hưởng đến việc lựa chọn thuật toán là độ phức tạp của mô hình. Nói chung, một mô hình phức tạp nghĩa là:

  • Nó dựa vào nhiều tính năng hơn để tìm hiểu và dự đoán (ví dụ: sử dụng hai tính năng so với mười tính năng để dự đoán mục tiêu)
  • Nó dựa vào kỹ thuật tính năng phức tạp hơn (ví dụ: sử dụng thuật ngữ đa thức, tương tác hoặc các thành phần chính)
  • Nó có computational overhead nhiều hơn (ví dụ: decision tree đơn lẻ so với random forest gồm 100 cây).

Bên cạnh đó, thuật toán ML tương tự có thể được thực hiện phức tạp hơn dựa trên số lượng tham số hoặc sự lựa chọn của một số siêu tham số. Ví dụ

  • Một mô hình hồi quy có thể có nhiều tính năng hơn hoặc các thuật ngữ đa thức và thuật ngữ tương tác.
  • Decision tree có thể có nhiều hơn hoặc ít hơn độ sâu.

Việc làm cho cùng một thuật toán phức tạp hơn sẽ làm tăng khả năng overfitting.

6. Một vài thuật toán ML thông dụng

Linear Regression
Đây có lẽ là những thuật toán đơn giản nhất trong ML. Ví dụ: thuật toán hồi quy có thể được sử dụng khi bạn muốn tính toán một số giá trị liên tục so với Classification trong đó đầu ra là categoric. Vì vậy, bất cứ khi nào bạn được yêu cầu dự đoán một số giá trị tương lai của một quy trình hiện đang chạy, bạn có thể sử dụng thuật toán hồi quy. Tuy nhiên, hồi quy tuyến tính không ổn định trong trường hợp các tính năng dư thừa, tức là nếu có đa cộng tuyến

Một số ví dụ có thể sử dụng hồi quy tuyến tính là:
  • Thời gian đi hết địa điểm này đến địa điểm khác
  • Dự đoán doanh số của sản phẩm cụ thể trong tháng tới
  • Tác động của nồng độ cồn trong máu đến sự phối hợp
  • Dự đoán doanh số bán thẻ quà tặng hàng tháng và cải thiện dự báo doanh thu hàng năm
Logistic Regression

Hồi quy logistic thực hiện phân loại nhị phân, vì vậy đầu ra là nhị phân. Nó có tính năng kết hợp tuyến tính và phi tuyến tính (sigmoid), vì vậy nó là một ví dụ rất nhỏ của mạng nơ-ron.

Hồi quy logistic cung cấp nhiều cách để điều chỉnh mô hình của bạn và bạn không phải lo lắng nhiều về việc các tính năng của mình có tương quan với nhau, giống như bạn làm trong Naive Bayes. Bạn cũng có một diễn giải xác suất tuyệt vời và có thể dễ dàng cập nhật mô hình của mình để tiếp nhận dữ liệu mới, không giống như desicion tree hoặc SVM. Sử dụng nó nếu bạn muốn có một khuôn khổ xác suất hoặc nếu bạn mong đợi nhận được nhiều dữ liệu training hơn trong tương lai mà bạn muốn có thể nhanh chóng kết hợp vào mô hình của mình. Hồi quy logistic cũng có thể giúp bạn hiểu các yếu tố góp phần đằng sau dự đoán và không chỉ là một phương pháp hộp đen.

Hồi quy logistic có thể được sử dụng trong các trường hợp như:
  • Dự đoán Customer Churn
  • Chấm điểm tín dụng & phát hiện gian lận
  • Tính toán hiệu quả của các chiến dịch tiếp thị
  • Dự đoán kiểu có/không như lũ/không lũ; trượt lở/không trượt lở; mưa/không mưa..
Decision trees
Single trees rất hiếm khi được sử dụng, nhưng trong bố cục với nhiều cây khác, chúng xây dựng các thuật toán rất hiệu quả như Random Forest  hoặc Gradient Tree Boosting.

Decision tree dễ dàng xử lý các tương tác của tính năng và chúng không phải là tham số, vì vậy bạn không phải lo lắng về các yếu tố ngoại lai hoặc liệu dữ liệu có thể phân tách tuyến tính hay không. Một điều bất lợi là chúng không hỗ trợ học trực tuyến, vì vậy bạn phải xây dựng lại cây của mình khi có các ví dụ mới. Một nhược điểm khác là chúng dễ dàng overfit, nhưng đó là nơi các phương pháp tổng hợp như Random Forest  hoặc Gradient Tree Boosting xuất hiện. Decision tree cũng có thể chiếm rất nhiều bộ nhớ (bạn càng có nhiều tính năng, Decision tree của bạn càng sâu và lớn hơn)

Decision tree là công cụ tuyệt vời để giúp bạn lựa chọn giữa một số hành động:
  • Quyết định đầu tư
  • Customer churn
  • Ngân hàng cho vay vỡ nợ
  • Quyết định xây dựng so với mua
  • Trình độ dẫn đầu bán hàng
K-means
Đôi khi bạn không biết bất kỳ nhãn nào và mục tiêu của bạn là gán nhãn theo các tính năng của đối tượng. Đây được gọi là nhiệm vụ clusterization. Ví dụ thuật toán phân cụm có thể được sử dụng khi có một nhóm lớn người dùng và bạn muốn chia họ thành các nhóm cụ thể dựa trên một số thuộc tính chung.

Nếu có những câu hỏi như cách này được tổ chức như thế nào hoặc nhóm một cái gì đó hoặc tập trung vào các nhóm cụ thể, v.v. trong vấn đề của bạn thì nên sử dụng Clustering.

Nhược điểm lớn nhất là K-Means cần phải biết trước có bao nhiêu cụm sẽ có trong dữ liệu của bạn, vì vậy điều này có thể đòi hỏi rất nhiều thử nghiệm để “đoán” số K tốt nhất của cụm để xác định.

Principal component analysis (PCA)
Phân tích thành phần chính (PCA) giúp giảm kích thước dữ liệu. Đôi khi bạn có một loạt các features, có thể tương quan cao với nhau và các mô hình có thể dễ dàng overfit trên một lượng lớn dữ liệu. Sau đó, bạn có thể áp dụng PCA.

Một trong những chìa khóa đằng sau sự thành công của PCA là ngoài việc biểu diễn mẫu chiều thấp, nó cung cấp một biểu diễn chiều thấp đồng bộ của các biến. Mẫu được đồng bộ hóa và cung cấp một cách trực quan để tìm các biến đặc trưng của một nhóm mẫu.

Support Vector Machines
Support Vector Machine (SVM) là một kỹ thuật ML có giám sát được sử dụng rộng rãi trong các bài toán phân loại và nhận dạng mẫu - khi dữ liệu của bạn có chính xác hai lớp.

Độ chính xác cao, đảm bảo lý thuyết tốt về overfiting và với một hạt nhân thích hợp, chúng có thể hoạt động tốt ngay cả khi dữ liệu của bạn không thể phân tách tuyến tính trong không gian tính năng cơ sở. Đặc biệt phổ biến trong các bài toán phân loại văn bản, nơi không gian chiều rất cao. Tuy nhiên, SVM đòi hỏi nhiều bộ nhớ, khó diễn giải và khó điều chỉnh.

SVM có thể được sử dụng trong các ứng dụng trong thế giới thực như:
  • phát hiện những người mắc các bệnh thông thường như tiểu đường
  • nhận dạng ký tự viết tay
  • phân loại văn bản - tin bài theo chủ đề
  • dự đoán giá thị trường chứng khoán

Naive Bayes
Đây là một kỹ thuật phân loại dựa trên định lý Bayes và rất dễ xây dựng và đặc biệt hữu ích cho các tập dữ liệu rất lớn. Cùng với sự đơn giản, Naive Bayes được biết đến là vượt trội so với các phương pháp phân loại thậm chí rất phức tạp. Naive Bayes cũng là một lựa chọn tốt khi tài nguyên CPU và bộ nhớ là một yếu tố hạn chế.

Naive Bayes cực kỳ đơn giản, bạn chỉ đang thực hiện một loạt phép tính. Nếu giả định độc lập có điều kiện NB thực sự đúng, bộ phân loại Naive Bayes sẽ hội tụ nhanh hơn các mô hình phân biệt như hồi quy logistic, vì vậy bạn cần ít dữ liệu huấn luyện hơn. Và ngay cả khi giả định NB không phù hợp, bộ phân loại NB vẫn thường hoạt động rất tốt trong thực tế. Đặt cược tốt nếu muốn thứ gì đó nhanh chóng và dễ dàng hoạt động khá tốt. Nhược điểm chính của nó là nó không thể tìm hiểu tương tác giữa các tính năng.

Naive Bayes có thể được sử dụng trong các ứng dụng trong thế giới thực như:
  • Phân tích tình cảm và phân loại văn bản
  • Hệ thống đề xuất như Netflix, Amazon
  • Để đánh dấu một email là thư rác hay không phải là thư rác
  • Nhận dạng khuôn mặt
Random Forest
Random Forest là một tập hợp các cây quyết định. Nó có thể giải quyết cả vấn đề hồi quy và phân loại với các tập dữ liệu lớn. Nó cũng giúp xác định hầu hết các biến quan trọng từ hàng nghìn biến đầu vào. Random Forest có khả năng mở rộng cao theo bất kỳ kích thước nào và nhìn chung có hiệu suất chấp nhận được. Cuối cùng, có các thuật toán di truyền, có quy mô tốt đáng ngưỡng mộ đến bất kỳ chiều nào và bất kỳ dữ liệu nào với kiến thức tối thiểu về bản thân dữ liệu, với cách triển khai tối thiểu và đơn giản nhất là thuật toán di truyền vi sinh vật. Tuy nhiên, với Random Forest, việc học có thể chậm (tùy thuộc vào tham số hóa) và không thể cải thiện lặp đi lặp lại các mô hình đã tạo.

Random Forest có thể được sử dụng trong các ứng dụng trong thế giới thực như:
  • Dự đoán bệnh nhân có nguy cơ cao
  • Dự đoán lỗi các bộ phận trong quá trình sản xuất
  • Dự đoán những người không trả được nợ
Neural networks
Neural networks có trọng số giữa các kết nối giữa các nơ-ron. Các trọng số được cân bằng, điểm dữ liệu học tập theo điểm dữ liệu học tập. Khi tất cả các trọng số được huấn luyện, mạng nơ-ron có thể được sử dụng để dự đoán lớp hoặc một số lượng, nếu có sự xuất hiện của hồi quy của một điểm dữ liệu đầu vào mới. Với mạng Neural, các mô hình cực kỳ phức tạp có thể được đào tạo và chúng có thể được sử dụng như một loại hộp đen mà không cần thực hiện một kỹ thuật tính năng phức tạp không thể đoán trước trước khi huấn luyện mô hình. Tham gia với “phương pháp tiếp cận sâu” thậm chí có thể chọn các mô hình khó đoán hơn để nhận ra các khả năng mới. Ví dụ nhận dạng đối tượng đã được nâng cao rất nhiều vào cuối bằng cách sử dụng Deep Neural networks. Được áp dụng cho các nhiệm vụ learning không có giám sát, chẳng hạn như trích xuất tính năng, deep learning cũng trích xuất các tính năng từ hình ảnh thô hoặc lời nói với sự can thiệp của con người ít hơn nhiều.

Mặt khác, mạng nơ-ron rất khó làm rõ và việc tham số hóa là cực kỳ khó hiểu. Chúng cũng rất tốn tài nguyên và bộ nhớ.

Scikit Cheat Sheet

Scikit learning đã đưa ra một biểu đồ rất hay và được giải thích rõ ràng để giúp bạn chọn đúng thuật toán mà tôi thấy rất hữu ích.

Kết luận
Nói chung, bạn có thể sử dụng các điểm trên để chọn một vài thuật toán nhưng thật khó để biết ngay từ đầu thuật toán nào sẽ hoạt động tốt nhất. Tốt nhất là làm việc lặp đi lặp lại. Trong số các thuật toán ML mà bạn đã xác định là phương pháp tiếp cận tốt tiềm năng, hãy ném dữ liệu của bạn vào chúng, chạy tất cả chúng song song hoặc nối tiếp và cuối cùng đánh giá hiệu suất của các thuật toán để chọn (các) thuật toán tốt nhất.

Và cuối cùng, việc phát triển giải pháp phù hợp cho một vấn đề trong cuộc sống thực hiếm khi chỉ là một vấn đề toán học ứng dụng. Nó đòi hỏi nhận thức về các nhu cầu kinh doanh, các quy tắc và quy định cũng như mối quan tâm của các bên liên quan cũng như chuyên môn đáng kể. Trong việc giải quyết một vấn đề máy móc, có thể kết hợp và cân bằng những điều này là rất quan trọng; những người có thể làm điều này có thể tạo ra nhiều giá trị nhất.




Lựa chọn thuật toán Machine Learning phù hợp Lựa chọn thuật toán Machine Learning phù hợp Reviewed by VinhHD on 18:12 Rating: 5

Không có nhận xét nào:

ads 728x90 B
Được tạo bởi Blogger.