Ví dụ về Linear Regression

Trong bài viết về Linear Regression của em tuần trước thì em đã ghi lại cách tìm được bộ hệ số thỏa mãn việc sai số giữa đại lượng chúng ta dự đoán và đại lượng thực tế là nhỏ nhất. Trong bài này em sẽ đưa ra ví dụ để có thể giúp dễ dàng hình dung thuật toán này cũng như hình dung được cách vận dụng Machine Learning để dự đoán.

Ta xét bảng dữ liệu đầu vào sau:


Bài toán đặt ra là: Liệu có thể dự đoán cân nặng của một người dựa vào chiều cao của họ không?

Trên thực tế là không, bởi ngoài chiều cao thì rất nhiều yếu tố khác ảnh hưởng đến cân nặng, tuy nhiên để thuận tiện trong việc xét 1 ví dụ đơn giản, ta giả sử cân nặng sẽ tỉ lệ thuận với chiều cao (người càng cao thì càng nặng).

Do đó ta có thể sử dụng Linear Regression cho việc dự đoán này. Để kiểm tra độ chính xác của cân nặng tìm được, chúng ta sẽ giữ lại cột 155 cm và 160 cm để kiểm thử, các cột còn lại được sử dụng để huấn luyện (train) model.

Trước tiên, chúng ta cần có hai thư viện numpy cho đại số tuyến tính và matplotlib cho việc vẽ hình.

Tiếp theo, chúng ta khai báo và biểu diễn dữ liệu trên một đồ thị.

l

Từ đồ thị này ta thấy rằng dữ liệu được sắp xếp gần như theo 1 đường thẳng, vậy mô hình Linear Regression nhiều khả năng sẽ cho kết quả tốt:

(Cân nặng) = w1 *(Chiều cao) + w0

Tiếp theo, chúng ta sẽ tính toán các hệ số w1 và w0 dựa vào công thức g đã tính ra ở tuần trước.


Tìm ra được w1 và w0 là:

Ta vẽ đường 1 đường thẳng dự đoán dựa trên w1 và w0 ở trên:
p
Từ đồ thị bên trên ta thấy rằng các điểm dữ liệu màu đỏ nằm khá gần đường thẳng dự đoán màu xanh. Vậy mô hình Linear Regression hoạt động tốt với tập dữ liệu training . Bây giờ, chúng ta sử dụng mô hình này để dự đoán cân nặng của hai người có chiều cao 155 và 160 cm mà chúng ta đã không dùng khi tính toán nghiệm.


Kết quả là:


Chúng ta thấy rằng kết quả dự đoán khá gần với số liệu thực tế.

Tuy nhiên như đã nói trong bài viết trước, thuật toán Linear Regression là thuật toán cơ bản nhất của Machine Learning, nên nó cũng có những mặt hạn chế nhất định như là nó rất nhạy cảm với nhiễu (sensitive to noise).

Trong ví dụ về mối quan hệ giữa chiều cao và cân nặng bên trên, nếu có chỉ một cặp dữ liệu nhiễu (150 cm, 90kg) thì kết quả sẽ sai khác đi rất nhiều:
s
Vì vậy, trước khi thực hiện Linear Regression, các nhiễu (outlier ) cần phải được loại bỏ.

4 Likes

Mình nghĩ bài toán này đưa ra làm ví dụ nó sẽ k được hay cho lắm.

Thật thú vị khi bài viết tuần này của em có sự liên kết chặt với bài viết tuần trước để phân tích sâu hơn về thuật toán Linear Regression. :smile: :smile: :smile: :smile:
Tuy nhiên, anh chỉ có hơi băn khoăn là: với tập người đọc như thế nào thì có thể hiểu được bài viết này ? Em có đang xác định rõ độc giả của em trong bài viết này là những ai không?
Có một số đoạn code anh nghĩ không cần thiết phải đưa vào vì nó hơi thừa và gây phân tán.
Em nên sử dụng nhiều hình ảnh trực quan để mô tả và diễn giải thuật toán theo cách “bình dị”, không hàn lâm. Để người đọc thấy được vấn đề của họ trong đó sẽ là một bài viết thành công.
Lưu ý: Em nhớ có phần trích dẫn nguồn gốc ở cuối mỗi bài viết nhé. Điều này sẽ thể hiện sự tôn trọng tác giả, cũng như là yếu tố bắt buộc trong mọi đồ án, luận văn, paper khoa học nhé.
@@@

Dạ vâng ạ em sẽ cải thiện ở bài viết sau ạ.

@anon51455413 comment constructive hơn xem sao. Chỉ rõ ra lí do tại sao bài toán này làm ví dụ thì sẽ không được hay cho lắm? Chỉ rõ sẽ giúp người viết hiểu và có cách để improve hơn.

Thank em.

Em thấy bài toán này áp dụng với ví dụ trên không mang đến nhiều ích lợi thôi ạ! Việc từ cân nặng đoán biết chiều cao hay ngược lại nó không mang đến thực tiễn lắm, chúng ta có thể dùng chỉ số BMI để tính toán theo hướng tối ưu hóa nên bài toán chỉ còn tác dụng là đánh giá độ lệch của tỷ lệ cân nặng/chiều cao một quần thể so với một mức độ nào đó được đặt trước thôi ạ. Mà em nghĩ sẽ ít ai để ý đến vấn đề này hơn nhiều bài toán thực tiễn khác.

Nếu có một ví dụ ngoại lai thì phương pháp giải quyết thế nào ạ

1 Like

Hỏi hay đó, em thử làm 1 ví dụ ngoại lai để rõ khái niệm này hơn và tìm thử 1 phương án giải quyết trên thế giới xem?