4. Hồi quy logistic

Hồi quy logistic là một trong những thuật toán machine learning tốt nhất cho các bài toán và phân loại nhị phân (binary classification). Thuật toán này tập trung chủ yếu vào việc tính toán xác suất xảy ra một sự kiện dựa trên các dữ liệu được cho sẵn.

Đây cũng là một phương thức thống kê dùng để ước tính các giá trị từ một bộ biến độc lập. Nó thường được sử dụng để dự đoán xác suất xảy ra một sự kiện thông qua việc chạy dữ liệu qua một tính năng logit, từ đó kết luận rằng, sự hiện diện của yếu tố nguy cơ sẽ làm tăng một số % nhất định trong xác suất xảy ra một kết quả cho trước.

Trong hồi quy logistic, đầu ra sẽ ở dạng xác suất của một cấp mặc định (khác với hồi quy tuyến tính, trong đó đầu ra được tính ra trực tiếp). Và vì đây là một xác suất, giá trị của nó sẽ nằm ở khoảng từ 0 tới 1.

Giá trị đầu ra (y) sẽ được tổng hợp từ các giá trị \(x\) thông qua phép biến đổi hàm \(log\,h(x)=\frac{1}{1+e^{-x}}\). Sau đó, ta sẽ áp dụng ngưỡng để biến xác suất này thành dạng phân loại nhị phân.

Mô hình hồi quy logistic sau đó sẽ tính ra một tổng trọng số của các biến đầu vào (tương tự như trong hồi quy tuyến tính), sau đó chạy kết quả qua một phương trình phi tuyến tính đặc biệt. Sau đó, sử dụng một phương trình logistic hoặc sigmoid để tính đầu ra \(y\). Trong đó, đầu ra sẽ ở dạng nhị phân, hoặc 0/1 hay -1/1.

Nguồn: quantinsti.com.

Phương trình sigmoid/logistic được biểu diễn như sau: \(y=\frac{1}{1+e^{-x}}\)

Trong biểu đồ sau đây có một đường cong dạng S tiệm cận giá trị 1 khi giá trị của biến đầu vào tăng vượt mức 0, và tiệm cận giá trị 0 khi giá trị biến đầu vào giảm thấp hơn 0. Ngoài ra, đầu ra của phương trình sigmoid sẽ đạt 0,5 khi biến đầu vào có giá trị 0.

Vì vậy, khi giá trị đầu ra là lớn hơn 0,5, ta có thể kết quả là 1 (tích cực), còn nếu thấp hơn 0,5, thì có thể coi kết quả là 0 (tiêu cực).

Mục tiêu của hồi quy logistic là để sử dụng dữ liệu huấn luyện để tính toán giá trị của các hệ số, qua đó giảm tối đa chênh lệch giữa kết quả dự đoán và kết quả thực tế. Các hệ số trên sẽ được ước tính sử dụng kỹ thuật Ước lượng Hợp lý Cực đại (Maximum Likelihood Estimation).

Kỹ thuật Maximum Likelihood Estimation là một phương thức để ước tính các tham số trong mô hình thống kê. Trong đó, độ khả thi có thể được tối đa hóa thông qua nhiều kỹ thuật, ví dụ như thuật toán tối ưu.

Bạn có thể sử dụng Phương thức Newton để giá trị cực đại và cực tiểu của nhiều phương trình, bao gồm cả phương trình tính độ khả thi. Ngoài ra, phương thức Gradient Descent cũng có thể được sử dụng để thay thế.

Ví dụ: Trong dự đoán khả năng xảy ra của một sự kiện, sự kiện thật sự xảy ra sẽ được gọi là 1. Trong dự đoán khả năng bị ốm của một người, thì các trường hợp ốm sẽ được gọi là 1. Nhìn chung, phương thức này mang tên phương trình chuyển đổi logistic được sử dụng, cụ thể là \(h(x)=\frac{1}{1+ex}\), được biểu hiện bằng một đường cong có dạng S.

Thuật toán này thường được sử dụng trong đời sống, cụ thể là trong đánh giá tín dụng, đo xác suất thành công của các chiến lược marketing, hay dự đoán doanh thu của một sản phẩm cụ thể.

5. K-Nearest Neighbors

KNN (Hàng xóm K gần nhất) là một thuật toán machine learning đơn giản và có hiệu quả cao. Thuật toán này không cần thang đo hay việc học phức tạp, và vì vậy mô hình sử dụng chúng không cần phải trải qua huấn luyện trước khi bắt đầu phân loại.

KNN thường được sử dụng để tận dụng các bộ dữ liệu và trong đó, những điểm dữ liệu được phân tách thành nhiều cấp, từ đó dự đoán được cấp của các điểm thử mới. Thay vì phải tách dữ liệu thành 2 bộ là bộ dữ liệu huấn luyện và bộ dữ liệu kiểm thử, thì thuật toán KNN sẽ sử dụng toàn bộ bộ dữ liệu cho quá trình huấn luyện.

Để ứng dụng KNN, ta cần một bộ nhớ lớn để lưu trữ toàn bộ dữ liệu. Tuy nhiên, việc tính toán (hoặc học) sẽ chỉ xảy ra khi xuất hiện nhu cầu dự đoán. Ngoài ra, để đảm bảo tính chính xác của dự đoán, bạn cũng có thể từ từ cập nhật và hoàn thiện quá trình huấn luyện theo thời gian.

Trong ví dụ phía trên, KNN sẽ xử lý điểm dữ liệu lớn, và phân cấp nó vào phần màu đỏ.

Thuật toán K-Nearest-Neighbour có khả năng ước tính nhóm (hoặc cấp) của một điểm dữ liệu. Về cơ bản, thuật toán sẽ quan sát các điểm dữ liệu xung quanh điểm cần xác định để phân loại.

Ví dụ: Nếu điểm cần xác định nằm trên lưới, và thuật toán cần phân tích xem điểm này nằm trong Nhóm A hay Nhóm B, thì nó sẽ quan sát các điểm xung quanh để xem đa số các điểm này nằm ở nhóm nào.

Trong dự đoán, thuật toán KNN sẽ tìm kiếm trong cả bộ dữ liệu để xác định các điểm K và các hàng xóm gần nhất, sau đó tổng hợp các biến đầu ra cho các điểm K này.

KNN chủ yếu được ứng dụng cho công cụ tìm kiếm và xác định các thuật ngữ tương tự trong tìm kiếm. Đây có thể gọi là “tìm kiếm k-NN”.

6. Learning Vector Quantization

Trong khoa học máy tính, learning vector quantization, hay LVQ (Lượng tử hóa học vector), là một mạng nơ-ron được kiểm soát sử dụng chiến thuật competitive learning (học cạnh tranh).

LVQ cũng liên quan tới một số mạng nơ-ron được kiểm soát khác như các thuật toán Perceptron và Back-propagation. Cụ thể hơn, thuật toán LVQ là một thuật toán mạng nơ-ron nhân tạo chúp bạn có thể chọn một vào sự kiện huấn luyện cụ thể, và nghiên cứu sâu vào các sự kiện đó.

Ngoài ra, nó cũng liên quan tới một số mạng nơ-ron competitive learning khác như thuật toán Self-Organizing Map – một thuật toán tương tự LVQ, không được kiểm soát, và có thêm liên kết giữa các nơ-ron.

Ngoài ra, LVQ cũng là một kỹ thuật cơ bản, được định nghĩa bởi các biến LVQ1, LVQ2, LVQ2.1, LVQ3, OLVQ1, và OLVQ3, song song với đó là vô số các mở rộng và cải tiến từ bên thứ ba khác.

LVQ có thể được biểu diễn bởi một bộ các codebook vector. Các vector này sẽ được lựa chọn một các ngẫu nhiên, sau đó được thích ứng để tổng hợp dữ liệu huấn huyện một các hiệu quả nhất, dựa trên một số phép lặp trong thuật toán này.

Sau khi học, các vector trên có thể được sử dụng để đưa ra quyết định. Sau đó, ta sẽ tìm hàng xóm gần nhất (codebook vector phù hợp nhất) thông qua xác định khoảng cách giữa mỗi vector với nhau, cũng như xác định sự kiện dữ liệu mới.

Sau khi hồi quy để tìm đơn vị phù hợp nhất, giá trị cấp hoặc giá trị thật sẽ trở thành dự đoán. Để đạt kết quả tốt nhất, bạn nên thay đổi quy mô dữ liệu về phạm vi của dự đoán (VD: về khoảng giữa 0 và 1).

Có rất nhiều ứng dụng cho thuật toán này, bao gồm: địa phương hóa khả năng xảy ra xơ vữa động mạnh, chẩn đoán khả năng sai sót trong chuyển hóa năng lượng, và phân loại tổn thương vú.

Ví dụ:

Giả sử có 3 cấp là đỏ, xanh dương, và xanh lá. Trong hoạt họa, LVQ sẽ có 2 nơ-ron trong mỗi màu, đồng thời có khả năng đổi vector trọng lực của từng nơ-ron để chuyển hóa chúng sang codebook vector (hoặc giữ nguyên đặc tính đỏ, xanh dương, hay xanh lá). Tương tự như ví dụ trước, vector đầu vào sẽ chỉ bao gồm 2 yếu tố, và có thể được biểu diễn trên một sơ đồ 2D.

Nếu thử nghiệm KNN trên bộ dữ liệu cho kết quả tốt, bạn nên thử dùng LVQ để giảm độ lớn bộ nhớ cần thiết cho việc lưu trữ dữ liệu.

7. Support Vector Machines

Support vector machines là thuật toán machine learning được kiểm soát, và thường được sử dụng cho mục đích phân loại.

Mục tiêu của thuật toán này là tìm một siêu mặt phẳng trong một không gian N chiều, với N là số lượng đặc điểm, qua đó có thể phân loại cụ thể các điểm dữ liệu.

Trong thuật toán này, mỗi điểm dữ liệu sẽ được biểu hiện bằng một điểm trên không gian N chiều, với các giá trị trên trục tọa độ biểu hiện cho từng giá trị đặc điểm. Sau đó, ta sẽ thực hiện việc phân loại bằng các tìm ra một siêu mặt phẳng phân cách hoàn toàn 2 cấp.

Trong SVM, một siêu mặt phẳng sẽ được lựa chọn để phân tách các điểm trong không gian biến đầu vào thành cấp 0 hoặc cấp 1. Hàm mất mát được dùng để đạt chênh lệch tối đa trong trường hợp này sẽ được gọi là hinge loss (mất bản lề).

Ở không gian 2D, hàm này sẽ có dạng một đường thẳng, qua đó phân tách toàn bộ các điểm đầu vào. Thuật toán SVM sẽ tìm ra các hệ số của siêu mặt phẳng có khả năng phân tách các cấp tốt nhất.

Nguyên lý cơ bản phía sau thuật toán này là: các mặt phẳng quyết định sẽ quyết định các ranh giới quyết định. Trong đó, mặt phẳng quyết định là mặt phẳng phân tách một bộ sự vật thành nhiều cấp khác nhau.

SVM có thể đạt độ chính xác tương đối cao, đồng thời hoạt động hiệu quả hơn trên các bộ dữ liệu nhỏ và sách, do nó có sử dụng một bộ điểm huấn luyện phụ.

Tuy nhiên, thuật toán này lại không phù hợp với các bộ dữ liệu lớn, do nó rất tốn thời gian huấn luyện, và không tương thích với các bộ dữ liệu bị nhiễu với các cấp trùng lặp nhau.

Thông thường, thuật toán SVM được sử dụng trong nhận diện gương mặt – nó phân loại các phần của một hình ảnh thành phần có mặt và phần không có mặt, sau đó tạo lập một vùng hình vuông bao quanh gương mặt. SVM còn được ứng dụng trong phân tách văn bản, phân loại hình ảnh, tin sinh học…

8. Apriori

Apriori là một thuật toán machine learning không được kiểm soát, và thường được sử dụng để phân loại thông tin. Các thông tin được phân loại này thường được sử dụng trong các quy trình kiểm soát dữ liệu, giúp đảm bảo rằng người dùng dữ liệu luôn tiếp cận được với những thông tin mới, đồng thời hiểu được các dữ liệu trong công việc của họ.

Về cơ bản, thuật toán Apriori sẽ tổng hợp các cơ chế từ những bộ dữ liệu, sau đó làm việc trên cơ chế “bottom-up” (từ dưới lên) – tức mở rộng lần lượt từng bộ phụ phổ biến, sau đó hủy bỏ khi không thể thực hiện mở rộng nữa.

Apriori sẽ được sử dụng trên các dữ liệu giao dịch để tìm kiếm những dữ liệu thường xuất hiện, từ đó xác định được cơ chế/xu thế của các dữ liệu này.

Thuật toán này thường được sử dụng trong phân tích giỏ hàng hóa của thị trường – tức xác định giỏ sản phẩm thường xuất hiện trong bộ dữ liệu.

Apriori hoạt động trên 2 quy tắc cơ bản: Thứ nhất, nếu một bộ sự vật xuất hiện thường xuyên, thì tất cả các bộ phụ của bộ sự vật này sẽ điều xuất hiện thường xuyên. Thứ hai, nếu bộ sự vật ít xuất hiện, thì tất cả các bộ sự vật lớn bao hàm bộ sự vật này đề sẽ ít xuất hiện.

Cơ bản hơn, điều này có thể được diễn giải như sau: X -> Y có nghĩa là “Nếu một người mua sản phẩm X, thì người đó sẽ mua sản phẩm Y”.

Ví dụ: Nếu một người mua đường và sữa, thì khả năng cao là người đó sẽ mua bột cà phê. Câu trên có thể được diễn giải thành {sữa, đường} -> bột cà phê. Các diễn giải này thường sẽ được xác định nếu có đủ các yếu tố hỗ trợ và tự tin vào nó.

Trong đó, yếu tố hỗ trợ bao gồm số lượng bên trong bộ sự vật cần được cân nhắc để xác định mật độ xuất hiện của bộ sự vật đó. Yếu tố này là một hệ quả của nguyên tắc Apriori.

Và theo nguyên tắc Apriori thì, nếu một bộ sự vật thường xuyên xuất hiện, thì mọi bộ phụ của nó cũng xuất hiện thường xuyên.

Thuật toán machine learning Apriori hoạt động trên cơ chế nhận diện một số đặc điểm cụ thể trong một bộ dữ liệu, sau đó đo mật độ xuất hiện của đặc điểm này xuyên suốt bộ dữ liệu. Nếu mật độ trên là cao, thì các đặc điểm này sẽ được phân tích, và tạo thành các đôi đặc điểm.

Quá trình này sẽ giúp chỉ ra mối quan hệ giữa các điểm dữ liệu tương quan. Ngoài ra, các dạng dữ liệu khác cũng có thể được tinh lọc lại, rồi phân thành các cấp riêng.

Tùy vào các hoàn cảnh khác nhau, mà mật độ xuất hiện sẽ được coi là cao hay thấp.

Do đó, một đặc điểm dữ liệu sẽ được coi là “thường xuyên” xuất hiện khi tần suất xuất hiện của nó vượt qua một mức nhất định được gọi là support.

Thông qua phân tích, thuật toán sẽ phát hiện ra thêm các mối tương quan dữ liệu, cho tới khi không còn bất cứ một sự tương quan nào nữa.

Với Apriori, khách hàng có thể dễ dàng mua sắm, còn các cửa hàng lại dễ dàng tăng doanh số bán hàng của mình.

Thuật toán này cũng được ứng dụng trong lĩnh vực y tế, do nó có thể phát hiện các phản ứng tiêu cực với thuốc (ADR), thông qua việc xác định các xu thế và tương quan trong phản ứng của người bệnh với các kết hợp thuốc được sử dụng.

9. Boosting with AdaBoost

Boosting with AdaBoost là thuật toán boosting thường được sử dụng khi có quá nhiều dữ liệu để xử lý, gây khó khăn trong việc đưa ra dự đoán có độ chính xác cao.

Các thuật toán Boosting with AdaBoost là các thuật toán mạnh mẽ và linh hoạt, đồng thời có thể mang lại hiệu quả tốt thông qua một số mẹo cụ thể. Nó cũng đồng thời là một kỹ thuật tổng hợp, giúp tạo ra một bộ phân loại mạnh từ một số bộ phân loại yếu hơn.

Cụ thể, ta trước hết sẽ phải xây dựng một mô hình từ bộ dữ liệu huấn luyện, sau đó xây dựng một mô hình thứ 2, sửa lại các vấn đề của mô hình thứ 1. Sau đó, ta liên tục thêm nhiều mô hình hơn, cho tới khi bộ dữ liệu huấn luyện có thể dự đoán hoàn hảo, hoặc tới khi không thể thêm bất cứ mô hình nào nữa.

Về cơ bản, thuật toán này tổng hợp nhiều bộ dữ đoán trung bình hoặc yếu, để tạo ra một bộ dự đoán mạnh. Các thuật toán này hoạt động hiệu quả nhất trong các cuộc thi về khoa học dữ liệu như: Kaggle, AV Hackathon, CrowdAnalytix.

AdaBoost cũng đồng thời là thuật toán boosting đầu tiên thành công, được phát triển cho bài toán phân loại nhị phân.

Thuật toán này là một khởi đầu hoàn hảo trước khi đi sâu vào boosting. Hiện tại, các cơ chế boosting đều có nền tảng là AdaBoost, bao gồm cả các máy stochastic gradient boosting.

Các thuật toán bossting thường được sử dụng khi ta có rất nhiều dữ liệu được sử dụng trong dự đoán. Do vậy, ta cần năng lực dự đoán cao để giảm bớt khuynh hướng và phương sai trong supervised learning.

10. Random Forest

Thuật toán cuối cùng trong hành trình vào các thuật toán machine learning này sẽ là Random Forest (Rừng ngẫu nhiên).

Đây là thuật toán rất dễ để sử dụng, vô cùng mạnh mẽ, và linh hoạt. Nó cũng là một dạng thuật toán machine learning tổng hợp, có tên gọi là Bootstrp Aggregation (bagging).

Thuật toán này có thể được sử dụng cho các bài toán phân loại cũng như hồi quy. Thông thường, nó được sử dụng để xác định các điểm phân tách tối ưu trong Decision Tree, cũng nhưng các điểm phân tách gần tối ưu khi xuất hiện yếu tố ngẫn nhiên.

Và đúng như cái tên của nó, thuật toán này sẽ tạo ra một “khu rừng”, và làm cho nó “ngẫu nhiên”.

Khu rừng này là tổng hợp của các Decision Tree, và hầu hết đều được huấn luyện dưới cách thức “bagging”. Khái niệm cơ bản phía sau cách thức này là: tổng hợp nhiều mô hình học sẽ cải thiện kết quả cuối cùng.

Điều này có nghĩa là, nếu bạn đạt kết quả tốt với các thuật toán với phương sai cao (như decision tree), thì thông qua bagging, kết quả đạt được sẽ càng tốt hơn nữa.

Và để phân loại mỗi sự vật mới dựa trên các đặc điểm, mỗi cây sẽ cung cấp một phân loại khác nhau – kiểu như “bầu cử” cho phân loại đó. Sau đó, “rừng” sẽ chọn ra phân loại được bầu nhiều nhất bởi các cây trong rừng.

Mỗi câu trong rừng sẽ được “trồng” và “phát triển” như sau nếu tổng số trường hợp trong bộ dữ liệu huấn luyện là N. Sau đó, ta sẽ chọn các mẫu thử từ N một cách ngẫu nhiên và có thay thế. Bộ mẫu thử này sau đó sẽ được sử dụng để “trồng” các cây.

Còn nếu có M biến đầu vào, ta sẽ lấy một số m nhỏ hơn M tại mỗi nút, sau đó chọn ra m biến một cách ngẫu nhiên từ M biến đầu vào, và điểm phân tách tốt nhất của m biến này sẽ được sử dụng làm điểm phân tách nút.

Giá trị của m sẽ không thay đổi trong toàn bộ quá trình sinh trưởng của rừng.

Mỗi câu sẽ được “trồng” tới mức tối đa, và hoàn toàn không bị tỉa bớt.

Thuật toán ngẫu nhiên này được sử dụng trong rất nhiều nền công nghiệp khác nhau, phổ biến là các ngành Ngân hàng. Dược phẩm, Chứng khoán, và Thương mại Điện tử.

Random Forest có lợi ở chỗ, với thuật toán này, trong phân loại sẽ không xảy ra trường hợp overfitting (quá khớp). Ngoài ra, thuật toán này cũng có thể được sử dụng cho cả bài toán phân loại và bài toán hồi quy.

Theo TechGraByte

Tin liên quan: