Hồi quy tuyến tính (linear regression) cho học máy (machine learning)

Hồi quy tuyến tính có lẽ là một trong những thuật toán nổi tiếng và được nghiên cứ nhiều nhất nhất trong cả thống kê và học máy.

Trong bài này, tôi sẽ trình bày khái niệm thuật toán hồi quy tuyến tính, cách nó hoạt động và cách bạn có thể sử dụng nó tốt nhất trong các dự án học máy của mình. Trong bài đăng này, tôi sẽ giới thiệu:

Hồi quy tuyến tính là gì?

Các thuật toán biểu diễn và học tập được sử dụng để tạo ra một mô hình hồi quy tuyến tính.

Cách chuẩn bị dữ liệu tốt nhất trước khi lập mô hình bằng hồi quy tuyến tính.

Tôi sẽ không trình bày các khái niệm phức tạp về thống kê hoặc đại số tuyến tính. Trong bài viết này, tôi sẽ cố gắng trình bày một cách đơn giản nhằm cung cấp cho bạn đủ kiến ​​thức nền tảng để có thể sử dụng nó một cách hiệu quả vào các vấn đề thực tiễn.

Hồi quy tuyến tính (linear regression) là gì, đó có phải là khái niệm của thống kê hay không?

Trước khi chúng ta tìm hiểu chi tiết về hồi quy tuyến tính, bạn có thể tự hỏi mình tại sao chúng ta lại phải xem xét thuật toán này.

Đó chẳng phải là một kỹ thuật của môn thống kê hay sao?

Trong học máy, lĩnh vực mô hình dự đoán (predictive modelling) chủ yếu liên quan đưa ra dự đoán chính xác nhất có thể và giảm thiểu sai số của mô hình. Trong học máy ứng dụng, chúng ta sẽ mượn và sử dụng lại các thuật toán từ nhiều lĩnh vực khác nhau, bao gồm cả thống kê và sử dụng chúng cho những mục đích dự đoán hay giảm thiểu sai số nói trên.

Do đó, hồi quy tuyến tính (linear regression) vốn được phát triển trong lĩnh vực thống kê và được nghiên cứu như một mô hình để hiểu mối quan hệ giữa các biến số đầu vào và đầu ra, đã được lĩnh vực học máy mượn để sử dụng. Có thể nói hồi quy tuyến tính vừa là một thuật toán thống kê vừa là một thuật toán học máy.

Hồi quy tuyến tính là một mô hình tuyến tính, ví dụ: một mô hình trong đó giả định mối quan hệ tuyến tính giữa các biến đầu vào (x) và biến đầu ra duy nhất (y). Nói cách khác, y có thể được tính toán từ sự kết hợp tuyến tính của các biến đầu vào (x).

Khi có một biến đầu vào duy nhất (x), phương pháp này được gọi là hồi quy tuyến tính đơn giản (simple linear regression). Khi có nhiều biến đầu vào, ta có phương pháp là hồi quy tuyến tính nhiều biến (multiple linear regression).

Các kỹ thuật khác nhau có thể được sử dụng để chuẩn bị hoặc huấn luyện phương trình hồi quy tuyến tính từ dữ liệu, trong đó phương pháp phổ biến nhất được gọi là Bình phương nhỏ nhất thông thường (Ordinary least squares). Mô hình hồi quy này được gọi là Ordinary least squares linear regression, hay ngắn gọn hơn là Least squares regression

Cách biểu diễn mô hình hồi quy tuyến tính

Biểu diễn là của mô hình hồi quy tuyến tính là một phương trình tuyến tính kết hợp một tập giá trị đầu vào cụ thể (x), nghiệm là đầu ra dự đoán cho tập giá trị đầu vào đó (y). Cả giá trị đầu vào (x) và giá trị đầu ra (y) đều là dạng số (numeric).

Phương trình tuyến tính đưa ra một hệ số tỷ lệ cho mỗi giá trị hoặc cột đầu vào, được gọi là hệ số (coefficient) và được biểu thị bằng chữ cái Hy Lạp viết hoa Beta (B). Ngoài hệ số của biến đầu vào, trong phương trình còn có thêm 1 hệ số tự do (intercept/ bias coefficient), hệ số này tăng hay giảm sẽ làm đường thẳng tịnh tiến lên trên hoặc xuống dưới trong đồ thị hai chiều.

Ví dụ, trong một bài toán hồi quy đơn giản (một x và một y duy nhất), dạng của mô hình sẽ là:

y = B0 + B1 * x

Trong trường hợp chúng ta có nhiều hơn một đầu vào (x), biểu diễn của y thay vì đường thẳng sẽ là mặt phẳng hoặc siêu mặt phẳng.

Khi một hệ số bằng 0, nó sẽ loại bỏ hiệu quả ảnh hưởng của biến đầu vào lên mô hình (0 * x = 0). Như vậy, một cách để giảm độ phức tạp của các mô hình hồi quy là giảm bớt số biến, bằng cách đưa một số hệ số về 0.

Thực hiện mô hình Hồi quy tuyến tính

Trong mô hình hồi quy tuyến tính, ta cần ước tính giá trị của các hệ số được sử dụng trong biểu diễn với dữ liệu mà chúng ta có sẵn.

Trong phần này, tôi sẽ trình bày khái quát bốn kỹ thuật để chuẩn bị một mô hình hồi quy tuyến tính. Phần trình bày dưới đây sẽ không đi sâu vào hướng dẫn từng bước thực hiện mô hình, mà chủ yếu nêu những điểm chính cơ bản.

Ngoài các phương pháp được trình bày ở đây, còn nhiều kỹ thuật khác của mô hình hồi quy tuyến tính mà bạn có thể đi sâu tìm hiểu thêm. Tuy nhiên, phương pháp được sử dụng nhiều nhất và cũng cần được chú ý nhất là phương pháp bình phương nhỏ nhất (Ordinary least squares). Ngoài ra, phương pháp Gradient Descent cũng được áp dụng rất phổ biến trong học máy.

1. Hồi quy tuyến tính đơn giản (simple linear regression)

Với hồi quy tuyến tính đơn giản khi chỉ có một biến đầu vào duy nhất, chúng ta có thể sử dụng các phép toán thống kê để ước tính các hệ số.

Bạn sẽ phải tính toán các thuộc tính thống kê từ dữ liệu như trung bình (means), độ lệch chuẩn (standard deviations), tương quan (correlations) và hiệp phương sai (covariance). Bạn phải thực hiện các phép toán này trên toàn bộ dữ liệu.

Bạn hoàn toàn có thể thực hiện kỹ thuật này bằng excel. Tuy nhiên, trong thực tế, kỹ thật này không thực sự có nhiều tính ứng dụng.

2. Bình phương nhỏ nhất (ordinary least square)

Khi có nhiều hơn một biến đầu vào (x), chúng ta có thể sử dụng phương pháp Bình phương nhỏ nhất (ordinary least square) để ước tính giá trị của các hệ số.

Nguyên tắc của phương pháp này là tìm các gia trị hệ số sao cho tổng bình phương các phần dư (residuals) là nhỏ nhất. Với một đường thẳng hồi quy, ta tính toán khoảng cách từ mỗi điểm dữ liệu đến đường hồi quy đó, bình phương giá trị này và tổng tất cả các lỗi bình phương lại với nhau. Mục đích của phương pháp bình phương nhỏ nhất (ordinary least square) là tối thiểu giá trị tổng bình phương này.

Cách tiếp cận này coi dữ liệu như một ma trận và sử dụng các phép toán đại số tuyến tính để ước tính các giá trị tối ưu cho các hệ số. Bạn phải thực hiện các phép toán này trên toàn bộ dữ liệu, điều đó có nghĩa là bạn phải có đủ bộ nhớ để chứa dữ liệu và thực hiện các phép toán ma trận.

Trong thực tế, trừ khi làm một bài tập trong môn đại số tuyến tính, bạn không cần phải tự mình tính toán khi sử dụng phương pháp bình phương nhỏ nhất. Phép toán này thường được xây dựng sẵn trong các phần mềm thống kê và bạn có thể thực hiện chỉ bằng một vài thao tác đơn giản.

3. Gradient Descent

Gradient Descent là một phương pháp phổ biến trong học máy (machine learning). Phương pháp này có thể sử dụng với bài toán hồi quy tuyến tính khi có một hoặc nhiều biến đầu vào (x). Ý tưởng là tối ưu hóa giá trị của các hệ số Beta bằng cách thử rất nhiều các giá trị của hệ số trên dữ liệu đào tạo (training data) và chọn ra các giá trị sao cho sai số của mô hình là nhỏ nhất.

Phương pháp này bắt đầu với việc chọn các giá trị ngẫu nhiên cho mỗi hệ số. Tổng bình phương các sai số (residual) được tính cho từng cặp giá trị đầu vào và đầu ra. Các hệ số Beta được cập nhật theo hướng giảm thiểu tối đa tổng bình phương sai số. Quá trình được lặp lại cho đến khi đạt được tổng bình phương sai số nhỏ nhất hoặc không thể cải thiện thêm được nữa.

Khi sử dụng phương pháp này, bạn phải chọn learning rate (alpha) xác định kích thước của bước cải tiến cần thực hiện trên mỗi lần lặp lại quy trình.

Gradient descent thường được áp dụng vào phép toán hồi quy tuyến tính vì nó tương đối dễ hiểu. Trong thực tế, phương pháp này rất hữu ích khi bạn có một tập dữ liệu rất lớn với số lượng hàng hoặc số cột lớn hơn bộ nhớ.

4. Chính quy hóa (Regularization)

Có những phần mở rộng của việc đào tạo mô hình tuyến tính được gọi là các phương pháp chính quy hóa (regularization). Mục đích là giảm thiểu tổng bình phương sai số của mô hình trên dữ liệu huấn luyện (sử dụng bình phương nhỏ nhất) và cùng với đó là giảm cả độ phức tạp của mô hình (như số lượng hoặc kích thước tuyệt đối của tổng tất cả các hệ số trong mô hình) .

Hai thuật toán chính quy hóa phổ biến sử dụng trong hồi quy tuyến tính là:

• Lasso Regression: trong đó phương pháp Bình phương nhỏ nhất được sửa đổi để cũng giảm thiểu tổng tuyệt đối của các hệ số (được gọi là chính quy L1).

• Ridge Regression: trong đó phương pháp Bình phương nhỏ nhất được sửa đổi để cũng giảm thiểu tổng bình phương tuyệt đối của các hệ số (được gọi là chính quy L2).

Các phương pháp này thường được sử dụng khi các biến đầu vào có sự tương quan (collinearity) với nhau, khi đó nếu chỉ sử dụng phương pháp bình phương nhỏ nhất trên dữ liệu đào tạo sẽ không cho kết quả tốt.

Đưa ra dự đoán với hồi quy tuyến tính

Với biểu diễn là một phương trình tuyến tính, việc đưa ra dự đoán cũng đơn giản như việc giải phương trình cho một tập hợp biễn (x) đầu vào cụ thể.

Tôi sẽ lấy một ví dụ cụ thể. Hãy tưởng tượng chúng ta đang dự đoán cân nặng (y) từ chiều cao (x). Biểu diễn mô hình hồi quy tuyến tính của chúng tôi cho vấn đề này sẽ là:

y = B0 + B1 * x1

hoặc là

cân nặng = B0 + B1 * chiều cao

Trong đó B0 là hệ số tự do và B1 là hệ số cho biến chiều cao. Giả sử sau khi sử dụng các kỹ thuật học máy như đã nêu ở trên, chúng ta sẽ tìm được các giá trị B phù hợp. Sau khi có các giá trị này, chúng ta có thể đưa vào các thông số chiều cao khác nhau để dự đoán trọng lượng.

Chẳng hạn chúng ta thu được kết quả là B0 = 0,1 và B1 = 0,5. Với một người có chiều cao 182 cm:

trọng lượng = 0,1 + 0,5 * 182

trọng lượng = 91,1

Bạn có thể thấy rằng phương trình trên có thể được biểu diễn dưới dạng một đường thẳng trong mặt phẳng hai chiều, với B0 là điểm xuất phát, như trong hình dưới đây:

Chuẩn bị dữ liệu cho hồi quy tuyến tính

Bạn cần lưu ý mô hình hồi quy tuyến tính dựa trên một số giả định (assumption) về dữ liệu. Bạn cần đảm bảo thỏa mãn các giả định này để đảm bảo mô hình hồi quy có ý nghĩa. Sau đây sẽ là một số lưu ý cho mô hình hồi quy tuyến tính phổ biến nhất – mô hình bình phương nhỏ nhất (Ordinary least squares):

Giả định tuyến tính (Linear Assumption). Hồi quy tuyến tính giả định rằng mối quan hệ giữa biến độc lập và biến phụ thuộc là tuyến tính, chứ không hỗ trợ các quan hệ khác. Bạn có thể cần phải chuyển đổi dữ liệu để làm cho mối quan hệ trở nên tuyến tính (ví dụ: lấy logarit trong trường hợp quan hệ là hàm mũ).

Loại bỏ nhiễu (noise). Hồi quy tuyến tính giả định rằng các biến đầu vào và đầu ra của bạn không bị nhiễu. Bạn có thể cần sử dụng các phương pháp làm sạch dữ liệu cho phép bạn làm rõ hơn tín hiệu trong dữ liệu của mình tố. Điều này quan trọng nhất đối với biến đầu ra và bạn cần loại bỏ các giá trị ngoại lệ trong biến đầu ra (y) nếu có thể.

• Loại bỏ tương quan giữa các biến (Collinearity). Mô hình hồi quy tuyến tính sẽ không chính xác khi bạn có các biến đầu vào tương quan cao với nhau. Bận cần tính toán các hệ số tương quan theo cặp cho dữ liệu đầu vào của bạn và loại bỏ bớt biến đầu vào nếu nó có tương quan quá cao với biến khác.

• Phân phối Gaussian. Hồi quy tuyến tính sẽ đưa ra các dự đoán đáng tin cậy hơn nếu các biến đầu vào và đầu ra của bạn có phân phối Gaussian (phân phối chuẩn). Bạn có thể nhận được một số lợi ích bằng cách sử dụng các phép biến đổi (ví dụ: log hoặc BoxCox) trên các biến của bạn để làm cho phân phối của chúng gần giống phân phối chuẩn hơn.

Thay đổi thang đo của biến đầu vào. Hồi quy tuyến tính thường sẽ đưa ra các dự đoán đáng tin cậy hơn nếu thay đổi lại thang đo của các biến đầu vào bằng cách tiêu chuẩn hóa (standardization) hoặc chuẩn hóa (normalization).

Tham khảo

Dưới đây là một số tài liệu về học máy đề cập đến hồi quy tuyến tính mà bạn có thể tham khảo thêm: