You are on page 1of 4

LUỒNG THỰC HIỆN BÀI TOÁN PHÂN LOẠI RƯỢU

DỰA VÀO SOFTMAX REGRESSION

Ở đây ta chia thành 2 file (dự tính là thêm 1 file nữa chỉ để ốp 2 file kia thôi).

File đấy a sẽ làm cùng sau khi thực hiện nốt cái kia của chú.

I. NÓI SƠ QUA VỀ 2 FILE


 File processor_data.cpp : Chủ yếu xử lý các công việc liên quan đến thuật
toán. Ví dụ:
 Chuyển kiểu dữ liệu string sang int hoặc float để tính toán.
 Chuyển nhãn như tên rượu, hoặc tên màu sắc về ma trận số để sử
dụng được softmax.
 Đếm số lượng nhãn trong tập train ( không dùng cho dữ liệu có
nhãn mới ).
 Chia tập dữ liệu thành train và test. Train : Huấn luyện mô hình
còn Test: Đánh giá mô hình. Đánh giá mô hình giúp biết được mô
hình train có ổn hay không ổn  .
 File classification.cpp: Xây dựng class về thuật toán Softmax.
 class Softmax
 {
     private:
     // Tham số lựa chọn
         int iteration;
         bool verbose;
         int gd;
         float tol;
         float learning_rate;
         float **weights = 0;
     public:
         Softmax(int _iteration, int _gd, bool _verbose, float _tol, 
float _learning_rate);
         void check_params();
         float **transform(vector< vector<int> > X,int length, string 
data);
         void fit(vector< vector<int> > X_train, vector<string> Y_tra
in, string data, vector<string> classfication);
         void predict(vector< vector<int> > X_test, vector<string> Y_
test, string data,  vector<string> classfication);
         void accuracy(vector<string> Y_predict, vector<string> Y_tes
t);
 };

Đây là các hàm cần sử dụng.


II. Luồng thực hiện chương trình.
 Bước 1: Đọc dữ liệu từ file (sử dụng hàm read_file())
 Bước 2: Chuyển dữ liệu string sang int. Do khi đọc dữ liệu chỉ đọc được
kiểu string. Muốn sử dụng dữ liệu phải chuyển sang kiểu int hoặc float.
 Bước 3: Lấy các nhãn không trùng nhau và thuộc tính trong tập dữ liệu
 Bước 4: Phân chia tập dữ liệu thành tập huấn luyện và test.
 Bước 5: Huấn luyện mô hình sử dụng Softmax regression.
 Bước 6: Đánh giá mô hình ( tức độ chính xác của mô hình )

Tất cả các bước trên đều nằm trong hàm main() của file classification.cpp. Chú
chỉ cần hiểu luồng thôi. Muốn hiểu được thuật toán thì đọc nhiều.
Ý TƯỞNG THỰC HIỆN BÀI TOÁN ONLINE

I. Vấn đề khi train online.


- Khả năng xuất hiện những nhãn mới. Dẫn đến việc dự đoán không còn
chính xác. Ngoài ra trong quá trình online machine learning, ta cũng cần
phải cập nhật lại trọng số thông qua stochastic gradient descent.
- Khi gặp nhãn mới thì => Máy dự báo nó không thuộc nhãn cũ.
- Việc train lại toàn bộ dữ liệu sẽ tốn khá nhiều thời gian

II. Giải pháp khi train online


- Ta cố định n lần xuất hiện nhãn mới để khi đủ số lần xuất hiện nó thì máy
sẽ dự báo tập dữ liệu thuộc nhãn cũ hay mới. (Khoảng 1000 lần hay 500
lần, tùy thuộc người chọn).
- Ta sẽ để nguyên bộ trọng số sau khi train , và khi xuất hiện nhãn mới thì
ta chỉ việc train trọng số dành cho nhãn mới.
- Sau khi đủ n lần thì kết hợp bộ trọng số cũ lẫn mới, ta sẽ được bô trọng
số phù hợp cho việc dự đoán nhãn mới lẫn cũ => Dẫn đến quá trình train
tốn ít thời gian hơn.
III. Sơ đồ khối

Dữ liệu mới

Dự đoán nhãn ( dựa vào


thuật toán Softmax
Regression)

S Cập nhật bộ trọng số


Nhãn cũ ?? dành riêng cho nhãn
mới
Đ

Cập nhật bộ trọng số cho Lặp n lần xong đó gộp


nhãn cũ sử dụng SGD dữ liệu nhãn cũ

End

You might also like