Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Hỗ trợ đồ án, khóa luận Web, App, AI - Uy tín, chất lượng!
Trang Chủ Hướng Dẫn Đồ Án Dự đoán doanh thu cửa hàng bằng mô hình hồi quy
Hướng Dẫn Đồ ÁnLập Trình AI

Dự đoán doanh thu cửa hàng bằng mô hình hồi quy

Chia sẻ
Chia sẻ

Dự đoán doanh thu là một bài toán quan trọng trong quản trị kinh doanh và khoa học dữ liệu. Một mô hình dự đoán doanh thu chính xác giúp các doanh nghiệp bán lẻ lập kế hoạch sản xuất, quản lý tồn kho và tối ưu hóa chiến lược marketing. Với sự phát triển của Machine Learning, việc xây dựng một hệ thống dự báo doanh thu đã trở nên đơn giản và hiệu quả hơn bao giờ hết.

Nếu bạn là người mới bắt đầu, hãy tham khảo bài Hướng dẫn tiền xử lý dữ liệu sạch để huấn luyện mô hình tốt hơn để hiểu tầm quan trọng của dữ liệu chất lượng. Bạn cũng có thể xem bài Phân tích dữ liệu bán hàng bằng Python và Pandas để làm quen với thao tác dữ liệu và bài Tạo hệ thống phát hiện gian lận bằng học máy để mở rộng kiến thức về các ứng dụng thực tế của Machine Learning.

Giới thiệu về bài toán dự đoán doanh thu

Bài toán dự đoán doanh thu thường được xử lý như một bài toán hồi quy trong Machine Learning. Đầu vào là các đặc trưng liên quan đến cửa hàng và giao dịch, ví dụ như diện tích cửa hàng, số lượng nhân viên, ngân sách quảng cáo, và thời gian hoạt động. Đầu ra là một giá trị liên tục đại diện cho doanh thu dự kiến. Trong bài viết này, chúng ta sẽ xây dựng một mô hình hồi quy tuyến tính đơn giản bằng Python để dự đoán doanh thu của cửa hàng dựa trên tập dữ liệu giả lập.

Chuẩn bị môi trường

Trước tiên, bạn cần một môi trường lập trình Python để thực hành. Google Colab là lựa chọn tối ưu vì không yêu cầu cài đặt phức tạp. Truy cập https://colab.research.google.com và tạo một notebook mới. Với Jupyter Notebook, bạn cần cài đặt các thư viện cần thiết bằng lệnh sau:

!pip install pandas numpy matplotlib scikit-learn seaborn

Các thư viện trên sẽ giúp bạn đọc và xử lý dữ liệu, trực quan hóa và xây dựng mô hình học máy.

Tạo bộ dữ liệu giả lập để thực hành

Để minh họa, chúng ta sẽ tạo một tập dữ liệu nhỏ gồm thông tin về cửa hàng và doanh thu tương ứng. Việc này giúp bạn không cần phải tải dữ liệu từ bên ngoài mà vẫn có thể thực hành.

import pandas as pd
import numpy as np

# Tạo dữ liệu giả lập
np.random.seed(42)
data = {
    'Diện_tích_m2': np.random.randint(50, 500, 100),
    'Số_nhân_viên': np.random.randint(5, 50, 100),
    'Ngân_sách_quảng_cáo': np.random.randint(1000, 10000, 100),
    'Thời_gian_hoạt_động_tháng': np.random.randint(1, 60, 100),
    'Doanh_thu': np.random.randint(5000, 50000, 100)
}

df = pd.DataFrame(data)
df.to_csv('store_revenue.csv', index=False)
print("Đã tạo file store_revenue.csv để thực hành.")

Đọc dữ liệu từ file CSV

Sau khi tạo dữ liệu, bước tiếp theo là đọc file CSV vào Python để phân tích. Pandas cung cấp phương thức read_csv cực kỳ tiện lợi.

# Đọc dữ liệu
df = pd.read_csv('store_revenue.csv')
print(df.head())

Lệnh trên hiển thị 5 dòng đầu tiên để bạn kiểm tra dữ liệu đã được đọc thành công.

Khám phá và trực quan hóa dữ liệu

Trước khi xây dựng mô hình, cần hiểu rõ cấu trúc dữ liệu và mối quan hệ giữa các đặc trưng. Bạn có thể dùng phương thức info()describe() để khám phá dữ liệu.

# Thông tin tổng quan
df.info()

# Thống kê mô tả
df.describe()

Để trực quan hóa, chúng ta vẽ biểu đồ phân tán giữa ngân sách quảng cáo và doanh thu để xem có mối quan hệ tuyến tính hay không.

import matplotlib.pyplot as plt
import seaborn as sns

plt.figure(figsize=(8,6))
sns.scatterplot(x='Ngân_sách_quảng_cáo', y='Doanh_thu', data=df)
plt.title('Ngân sách quảng cáo vs Doanh thu')
plt.show()

Tiền xử lý dữ liệu

Với dữ liệu nhỏ và đã sạch, chúng ta chỉ cần chuẩn hóa các cột để mô hình hồi quy không bị ảnh hưởng bởi đơn vị đo khác nhau. StandardScaler của Scikit-learn là công cụ hữu ích để làm việc này.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
scaled_features = scaler.fit_transform(df.drop('Doanh_thu', axis=1))
X = pd.DataFrame(scaled_features, columns=df.columns[:-1])
y = df['Doanh_thu']

Chia dữ liệu thành tập huấn luyện và kiểm tra

Chia dữ liệu giúp đánh giá hiệu suất mô hình một cách khách quan. Tập huấn luyện dùng để huấn luyện mô hình, tập kiểm tra để đánh giá.

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

Xây dựng mô hình hồi quy tuyến tính

Hồi quy tuyến tính là thuật toán đơn giản nhưng hiệu quả để dự đoán giá trị liên tục. Scikit-learn cung cấp lớp LinearRegression để triển khai.

from sklearn.linear_model import LinearRegression

# Khởi tạo mô hình
model = LinearRegression()

# Huấn luyện mô hình
model.fit(X_train, y_train)

Đánh giá mô hình

Sau khi huấn luyện, mô hình cần được đánh giá trên tập kiểm tra bằng các chỉ số như MAE, MSE và R² score.

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

# Dự đoán trên tập kiểm tra
y_pred = model.predict(X_test)

# Đánh giá
mae = mean_absolute_error(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f"MAE: {mae}")
print(f"MSE: {mse}")
print(f"R² Score: {r2}")

Trực quan hóa kết quả dự đoán

Để hiểu rõ hơn về hiệu suất của mô hình, chúng ta vẽ biểu đồ so sánh doanh thu thực tế và doanh thu dự đoán.

plt.figure(figsize=(8,6))
sns.scatterplot(x=y_test, y=y_pred)
plt.xlabel('Doanh thu thực tế')
plt.ylabel('Doanh thu dự đoán')
plt.title('So sánh Doanh thu thực tế và Dự đoán')
plt.show()

Dự đoán doanh thu mới

Cuối cùng, bạn có thể dự đoán doanh thu của một cửa hàng mới dựa trên các đặc trưng đầu vào.

# Dữ liệu cửa hàng mới
new_store = [[200, 20, 5000, 24]]  # Diện tích, nhân viên, quảng cáo, thời gian hoạt động
new_store_scaled = scaler.transform(new_store)

# Dự đoán
predicted_revenue = model.predict(new_store_scaled)
print(f"Dự đoán doanh thu: {predicted_revenue[0]:,.0f} VND")

Kết luận

Bạn vừa xây dựng thành công một mô hình hồi quy tuyến tính để dự đoán doanh thu cửa hàng. Quy trình bao gồm: tạo dữ liệu, đọc và khám phá dữ liệu, tiền xử lý, huấn luyện mô hình, đánh giá và dự đoán. Đây là nền tảng để bạn mở rộng sang các mô hình phức tạp hơn như Random Forest hoặc Gradient Boosting khi làm việc với dữ liệu thực tế.

Tham Gia Nhóm – Hỗ Trợ Lập Trình

Hỗ Trợ Đồ Án – ThueDoAn.vn

Liên quan
Hướng Dẫn Đồ Án

Checklist 10 bước kiểm tra cuối cùng trước khi nhấn nút nộp đồ án

Thời điểm chuẩn bị nhấn nút nộp đồ án luôn mang lại...

Hướng Dẫn Đồ Án

Tuyệt chiêu đối phó với những giảng viên hướng dẫn ‘khó tính’ nhất

Giai đoạn làm đồ án tốt nghiệp luôn đi kèm với vô...

Hướng Dẫn Đồ Án

Tại sao việc quản lý Source Code bằng Git lại quan trọng hơn bạn nghĩ?

Trong thế giới lập trình hiện đại, mã nguồn chính là linh...

Hướng Dẫn Đồ Án

Những chức năng ‘thừa’ khiến bạn tốn thời gian mà không được cộng điểm

Làm đồ án tốt nghiệp là một cuộc đua thực thụ với...

Hướng Dẫn Đồ Án

Cách xử lý khi đề tài bị trùng lặp ý tưởng với các khóa trước quá nhiều

Lựa chọn đề tài đồ án luôn là bước khởi đầu đầy...

Hướng Dẫn Đồ Án

Làm sao để giải trình với giảng viên khi code bị nghi ngờ là đi chép?

Trong quá trình thực hiện đồ án, việc tham khảo mã nguồn...

Hướng Dẫn Đồ Án

Cảnh báo: Những nguồn share code ‘rác’ trên mạng cần tuyệt đối tránh

Trong quá trình làm đồ án, việc tìm kiếm sự hỗ trợ...

Hướng Dẫn Đồ Án

Sai lầm khi chọn công nghệ quá khó so với năng lực thực tế của bản thân

Chọn đề tài và công nghệ cho đồ án luôn là bước...

Liên Hệ
Liên hệ để được tư vấn & hỗ trợ đồ án CNTT nhé bạn!