Ra mắt hai series mới cực hot Trí tuệ nhân tạo A đến ZPython công cụ không thể thiếu khi nghiên cứu Data science, Machine learning.

Lý thuyết Hồi quy tuyến tính Linear Regression

Video trong bài viết

Trong bài trước chúng ta đã bóc tách được dữ liệu và bài này chúng ta sẽ tiếp tục một bước rất quan trọng trong quy trình làm việc với khoa học dữ liệu đó là trực quan hóa dữ liệu thông qua các đồ thị và biểu đồ.

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

Trực quan hóa dữ liệu là một bước cần thiết, với các đồ thị và biểu đồ chúng ta sẽ dễ dàng nhận ra các mối quan hệ giữa các thành phần hơn. Trong Python, chúng ta có một module là matplotlib được sử dụng để vẽ biểu đồ từ dữ liệu.

Chúng ta sẽ sử dụng một số chức năng trong matplotlib.pyplot để vẽ biểu đồ, để sử dụng thực hiện import module này:

import matplotlib.pyplot

Chú ý, nếu sử dụng Jupyter, sau khi gõ code bấm tổ hợp Shift + Enter hoặc bấm vào nút Run để import module này và có thể sử dụng trong các cell ở dưới.

Tiếp theo, chúng ta thực hiện vẽ biểu đồ với dữ liệu và ngân sách và doanh thu phim đã được bóc tách trong bài trước:

matplotlib.pyplot.scatter(X, y)
matplotlib.pyplot.show()

Kết quả chúng ta có dữ liệu đã được vẽ lên trên đồ thị, tương ứng với một cặp (ngân sách, doanh thu) sẽ là một điểm trên đồ thị.

Vẽ biểu đồ với matplotlib .pyplot

Trong ví dụ trên, bạn có thể rút gọn việc viết code bằng cách đặt tên cho các module, chức năng.

import matplotlib.pyplot as plt

plt.scatter(X, y)
plt.show()

Bằng cách đặt tên này, việc viết code đã nhanh chóng hơn và nhìn code gọn gàng hơn. Với đồ thị này, chúng ta có thể cải tiến chút, giúp cho đồ thị có nhiều thông tin hơn:

  • Thêm nhãn vào các trục tọa độ
  • Thay đổi kích thước của đồ thị để có thể xem được tốt hơn.
  • Vẽ đồ thị với dải dữ liệu có thể giúp bỏ đi các khoảng trống.
  • Thêm thuộc tính độ trong suốt giúp chúng ta xem được mật độ điểm trên đồ thị.

Tất cả các cải tiến trên được thực hiện như sau:

plt.figure(figsize=(10,6))
plt.scatter(X, y, alpha=0.3)
plt.title('Film Cost vs Global Revenue')
plt.xlabel('Production Budget $')
plt.ylabel('Worldwide Gross $')
plt.ylim(0, 3000000000)
plt.xlim(0, 450000000)
plt.show()

Kết quả chúng ta có được một biểu đồ mới như sau:

Biểu đồ sau khi cải tiến

Nhìn vào đồ thị này chúng ta có một số nhận xét về mối quan hệ như sau:

  • Hầu hết các phim có ngân sách nhỏ hơn 1 triệu USD.
  • Có cảm quan rằng khi ngân sách gia tăng thì lợi nhuận phim cũng tăng.

Như vậy, liệu có phải khi ngân sách tăng thì doanh thu tăng và nếu tăng thì tăng bao nhiêu? Đây là lúc chúng ta cần đến thuật toán Hồi quy tuyến tính - Linear Regression.

Lý thuyết Linear Regression

Đặt vấn đề

Chúng ta đã vẽ được các điểm trong một đồ thị với hai trục là ngân sách và doanh thu, chúng ta cần xác định mối quan hệ hai giá trị này là một đường thẳng đi qua các điểm.

Trong toán học, một đường thẳng trong hệ trục tọa độ Oxy có phương trình như sau:

y = mx + C

Với m và C là hai hằng số, m được gọi là hệ số góc của đường thẳng, quyết định độ dốc của đường thẳng. C là tọa độ điểm mà đường thẳng sẽ cắt trục Oy.

Ví dụ phương trình đường thẳng

Tuy nhiên trong khoa học dữ liệu hay các thuật toán Machine learning, phương trình đường thẳng sẽ được ký hiệu khác đi giúp cho việc áp dụng vào thuật toán dễ dàng hơn. Phương trình đường thẳng khi đó sẽ là:

hθ(x) = θ0 + θ1x

Phương trình đường thẳng trong data science

Với một tập hợp điểm hỗn loạn, chúng ta không thể vẽ một đường thẳng đi qua toàn bộ các điểm đó. Có rất nhiều các đường thẳng đi qua tập hợp điểm này, vậy làm thế nào để xác định được một đường thẳng là phương án tốt nhất?

Phương án nào là tốt nhất

Để bắt đầu tìm câu trả lời, chúng ta cùng xem hình dưới đây, đường thẳng đi qua tập hợp điểm và chúng ta thấy rằng có một độ dư, độ lệch giữa điểm thực tế và điểm trên đường thẳng.

Độ lệch chuẩn

Hồi quy tuyến tính - Linear Regression có câu trả lời là đường thẳng nào có các tổng các độ lệch bé nhất thì đó chính là đường thẳng tốt nhất. Nhưng do độ lệch này có thể có giá trị âm (ví dụ điểm thực tế nằm dưới đường thẳng), do đó chúng ta cần lấy bình phương của các độ lệch này, như vậy sẽ không còn giá trị âm và nó phản ánh đúng định hướng chúng ta cần.

Cách chọn đường thẳng của Linear Regression

Tóm lại công thức sẽ sử dụng cho Linear Regression là tìm các giá trị θ0 và θ1 sao cho tổng bình phương các độ lệch có giá trị thấp nhất.

Công thức cho Linear Regression

Kết luận

Lý thuyết Hồi quy tuyến tính dựa trên những ý tưởng hết sức cơ bản, nó đưa ra cách thức lựa chọn một phương án có tính tối ưu nhất, không phải tất cả các dự đoán dựa trên Hồi quy đều chính xác nhưng nó sẽ lựa chọn ra phương án tốt nhất. Trong bài tiếp theo, chúng ta sẽ áp dụng các lý thuyết này trong viết code Python để thực hiện vẽ ra đường thẳng thể hiện mối quan hệ giữa ngân sách và doanh thu.


CÁC BÀI VIẾT KHÁC

FirebirD

Đam mê Toán học, Lập trình. Sở thích chia sẻ kiến thức, Phim hài, Bóng đá, Cà phê sáng với bạn bè.

Phân tách dữ liệu với DataFrame trong Python

Thực hiện Linear Regression với Scikit-learn

1 Bình luận trong "Lý thuyết Hồi quy tuyến tính Linear Regression"

  1. Thông

    2 weeks ago

    Phản hồi

    Rất hay! Xin cảm ơn tác giả!

Thêm bình luận