Machine learning cơ bản với Python #Bài 04. Huấn luyện và kiểm tra


BÀI 4. HUẤN LUYỆN VÀ KIỂM TRA -- TRAIN AND TEST

ĐÁNH GIÁ MÔ HÌNH CỦA BẠN
Trong Machine learning, chúng ta tạo mô hình để dự đoán kết quả của sự việc nào đó, như các phần trước chúng ta dự đoán lượng CO2 thải ra từ một chiếc xe hơi khi chúng ta biết trọng lượng và kích thước động cơ.
Để đánh giá mô hình của bạn có thực sự tốt hay không, chúng ta có thể sử dụng phương pháp được gọi là Train/Test.

TRAIN/TEST LÀ GÌ?
Train/Test là một phương pháp để đánh giá tính chính xác của mô hình
Nó được gọi là Train/test bởi vì bạn phân chia tập dữ liệu thành 2 phần: một tập training và một tập kiểm tra
Thông thường chúng ta chia 80% hoặc 70% cho training và 20% hoặc 30% cho testing.
TRAIN một mô hình nghĩa là chúng ta TẠO ra một model
TEST một mô hình nghĩa là chúng ta KIỂM TRA độ chính xác của mô hình

BẮT ĐẦU VỚI TẬP DỮ LIỆU
Ví dụ chúng ta có dữ liệu là 100 khách hàng trong một cửa hàng, và thói quen mua hàng của họ

Ví dụ

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(31100)
y = numpy.random.normal(15040100) / x

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

Kết quả


Trục x thể hiện số phút trước khi quyết định mua hàng
Trục y thể hiện số tiền dành ra để mua hàng

Chia tập dữ liệu thành Train/Test

Tập dữ liệu dùng để Training nên được chia một cách ngẫu nhiên với 80% (hoặc 70%) của tập dữ liệu gốc.
Tập dữ liệu Testing là phần còn lại 20% (hoặc 30%)

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

Thể hiện tập Training/ Testing

plt.scatter(train_x, train_y)
plt.show()

Tập training trông giống với dữ liệu gốc, do đó, nó có vẻ là một lựa chọn công bằng.
Chúng ta làm tương tự để thể hiện tập Testing

plt.scatter(test_x, test_y)
plt.show()

Tính hồi quy cho tập dữ liệu

Từ biểu đồ tập dữ liệu, nó có vẻ vừa vặn với kiểu hồi quy đa thức, ta sẽ thử vẽ đường hồi quy đa thức cho tập dữ liệu của mình.

import numpy
import matplotlib.pyplot as plt
numpy.random.seed(2)

x = numpy.random.normal(31100)
y = numpy.random.normal(15040100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

myline = numpy.linspace(06100)

plt.scatter(train_x, train_y)
plt.plot(myline, mymodel(myline))
plt.show()
Kết quả có vẻ chuẩn với dự đoán ban đầu là hồi quy đa thức, mặc dù vẫn có một vài kết quả hơi kỳ lạ nếu chúng ta dự đoán giá trị nằm ngoài tập dữ liệu. Ví dụ tại trục x = 6, nghĩa là khách hàng dành 6 phút trong cửa hàng liệu sẽ bỏ ra 200 để mua? Nó có lẽ là dấu hiệu của overfitting.
Nhưng giá trị R-squared thì sao? 

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(31100)
y = numpy.random.normal(15040100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(train_y, mymodel(train_x))

print(r2)

Kết quả R2 = 0.799 thể hiện đó là quan hệ tốt, khá là OK đấy chứ.

Kiểm tra lại mô hình với tập Testing

Bây giờ chúng ta sẽ kiểm tra lại mô hình với tập dữ liệu Testing để xem liệu nó có đưa ra kết quả tương tự? Hãy tính R2 cho tập Testing

import numpy
from sklearn.metrics import r2_score
numpy.random.seed(2)

x = numpy.random.normal(31100)
y = numpy.random.normal(15040100) / x

train_x = x[:80]
train_y = y[:80]

test_x = x[80:]
test_y = y[80:]

mymodel = numpy.poly1d(numpy.polyfit(train_x, train_y, 4))

r2 = r2_score(test_y, mymodel(test_x))

print(r2)

Kết quả R2 = 0.809 cho thấy rằng, mô hình của chúng ta cũng ngon lành với tập kiểm tra, và chúng ta tự tin rằng, chúng ta có thể sử dụng mô hình để dự đoán giá trị tương lai.

Dự đoán giá trị
Bây giờ chúng ta sử dụng mô hình để dự đoán kết quả cho giá trị mới.
Ví dụ, một khách vào cửa hàng 5 phút, liệu sẽ bỏ ra bao nhiêu tiền?

print(mymodel(5))

Kết quả của dự đoán là 22.88$, có vẻ tương ứng với biểu đồ đấy chứ?


-----------------------------
Link các bài học:
Machine learning cơ bản với Python #Bài 04. Huấn luyện và kiểm tra Machine learning cơ bản với Python #Bài 04. Huấn luyện và kiểm tra Reviewed by VinhHD on 10:00 Rating: 5

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

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