Rate this post

Linear Regression là một cách để tìm mối quan hệ tuyến tính giữa biến phụ thuộc và biến độc lập bằng cách giảm thiểu khoảng cách.

Linear Regression là một phương pháp học máy có giám sát. Cách tiếp cận này được sử dụng để phân loại theo thứ tự của danh mục rời rạc. Trong phần này, chúng ta sẽ hiểu cách xây dựng một mô hình mà qua đó người dùng có thể dự đoán mối quan hệ giữa biến phụ thuộc và biến độc lập.

Các bài viết liên quan:

Nói một cách dễ hiểu, chúng ta có thể nói mối quan hệ giữa cả biến, tức là độc lập hoặc phụ thuộc, được gọi là tuyến tính. Giả sử Y là biến phụ thuộc và X là biến độc lập thì mối quan hệ Linear Regression của hai biến này là

Y = AX + b

  • A là hệ số góc.
  • b là giao điểm y.

Trạng thái ban đầu

Trạng thái cuối cùng

Có ba khái niệm cơ bản cần thiết để hiểu để tạo hoặc học mô hình tuyến tính cơ bản.

Model class

Việc viết mã mọi thứ và viết tất cả các chức năng khi được yêu cầu là rất điển hình và đó không phải là động cơ của chúng tôi.

Viết thư viện tối ưu hóa dạng số luôn tốt hơn là viết tất cả mã và hàm, nhưng giá trị kinh doanh cũng có thể tăng lên nếu chúng ta xây dựng nó trên đầu các thư viện viết sẵn để hoàn thành công việc. Với mục đích này, chúng tôi sử dụng việc triển khai gói nn của PyTorch. Đối với điều này, trước tiên chúng ta phải tạo một lớp duy nhất.

Sử dụng lớp tuyến tính

Mỗi mô-đun tuyến tính tính toán đầu ra từ đầu vào, và đối với trọng lượng và độ lệch, nó giữ Tensor bên trong của nó.

Có một số mô-đun tiêu chuẩn khác. Chúng tôi sẽ sử dụng định dạng lớp mô hình, có hai phương thức chính, như sau:

  • Init: Được sử dụng để xác định một mô-đun tuyến tính.
  • Forward: Với sự trợ giúp của phương pháp chuyển tiếp, các dự đoán được thực hiện trên cơ sở đó chúng tôi sẽ đào tạo mô hình Linear Regression của mình

Optimizer

Trình tối ưu hóa là một trong những khái niệm quan trọng trong PyTorch. Nó được sử dụng để tối ưu hóa trọng lượng của chúng tôi để đưa mô hình của chúng tôi vào tập dữ liệu. Có một số thuật toán tối ưu hóa như giảm độ dốc và lan truyền ngược giúp tối ưu hóa giá trị trọng lượng của chúng tôi và phù hợp nhất với mô hình của chúng tôi.

Các thuật toán tối ưu hóa khác nhau được thực hiện bởi gói torch.optim. Để sử dụng torch.optim, bạn phải xây dựng một đối tượng tối ưu hóa sẽ cập nhật tham số dựa trên gradient máy tính và sẽ giữ trạng thái hiện tại. Đối tượng được tạo như sau:

Optimizer=optim.SGD(model.parameters(), lr=0.01, momentum=0.9)  
Optimizer=optim.Adam([var1, var2], lr=0.0001))  

Phương thức step () được thực hiện bởi tất cả trình tối ưu hóa, phương thức này cập nhật các tham số. Có hai cách để sử dụng nó

1) Optimizer.step ()

Đây là phương pháp rất đơn giản và được hỗ trợ bởi nhiều trình tối ưu hóa. Sau khi tính toán độ dốc bằng phương thức back (), chúng ta có thể gọi hàm Optimizer.step ().

Ví dụ:

for input, target in dataset:  
    optimizer.zero_grad()  
    output=model(input)  
    loss=loss_fn(output, target)  
    loss.backward()       
    optimizer.step()  

2) Optimizer.step (đóng)

Có một số thuật toán tối ưu hóa như LBFGS và Conjugate Gradient cần đánh giá lại hàm nhiều lần, vì vậy chúng tôi phải chuyển nó trong một lần đóng để cho phép chúng tính toán lại mô hình của bạn.

Ví dụ:

for input, target in dataset:  
def closure():  
    optimizer.zero_grad()  
    output = model(input)  
    loss = loss_fn(output, target)  
    loss.backward()  
    return loss  
    optimizer.step(closure)  

Criterion

Tiêu chí là hàm tổn thất của chúng tôi, được sử dụng để tìm tổn thất. Chức năng này được sử dụng từ mô-đun nn torch.

Ví dụ:

criterion = torch.nn.MSELoss(size_average = False)   

Các chức năng và đối tượng được yêu cầu

  1. mport torch
  2. From torch.autagrad import Variable

Và chúng ta cần xác định một số dữ liệu và gán chúng cho các biến theo cách sau

xdata=Variable(torch.Tensor([[1.0],[2.0],[3.0]]))  
ydata=Variable(torch.Tensor([[2.0],[4.0],[6.0]]))  

Sau đây là đoạn mã cung cấp cho chúng tôi dự đoán để đào tạo một mô hình hồi quy hoàn chỉnh. Nó chỉ để hiểu cách chúng tôi triển khai mã và chức năng nào chúng tôi đã sử dụng để đào tạo một mô hình hồi quy.

import torch   
from torch.autograd import Variable   
xdata = Variable(torch.Tensor([[1.0], [2.0], [3.0]]))  
ydata = Variable(torch.Tensor([[2.0], [4.0], [6.0]]))   
class LRM(torch.nn.Module):  
    def __init__(self):   
        super(LRM, self).__init__()    
        self.linear = torch.nn.Linear(1, 1)  
    def forward(self, x):   
        ypred = self.linear(x)    
        return ypred    
ourmodel = LRM()  
criterion = torch.nn.MSELoss(size_average = False)   
optimizer = torch.optim.SGD(ourmodel.parameters(), lr = 0.01)   
for epoch in range(500):   
    predy = our_model(xdata)   
    loss = criterion(predy, ydata)    
    optimizer.zero_grad()   
    loss.backward()       
    optimizer.step()   
    print('epoch {}, loss {}'.format(epoch, loss.item()))  
newvar = Variable(torch.Tensor([[4.0]]))  
predy = ourmodel(newvar)  
print("predict (after training)", 4, our_model(newvar).data[0][0])  

Đầu ra:

Có những khái niệm sau được sử dụng để đào tạo một mô hình hồi quy hoàn chỉnh

  • Đưa ra dự đoán
  • Lớp tuyến tính
  • Mô-đun tùy chỉnh
  • Tạo tập dữ liệu
  • Thiếu chức năng
  • Xuống dốc
  • Có nghĩa là lỗi bình phương
  • Tập huấn

Tất cả những điểm trên đây là điều cần thiết để hiểu cách đào tạo một mô hình hồi quy.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now