Giá trị loss sau mỗi epoch

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống dự đoán khả năng nhập học của học sinh vào trường cao đẳng kỹ thuật công nghệ bà rịa vũng tàu (Trang 76 - 91)

+ Hàm mất mát loss:

Hàm loss sẽ chỉ ra mô hình đoán sai bao nhiêu so với giá trị thực tế. Dựa trên phản hồi, mô hình có thể sửa những lỗi sai trước đó. Quá trình này lặp đi lặp lại cho đến khi mô hình đạt đến một độ chính xác nhất định.

Với dữ liệu kiểm tra đầu ra của mạng cũng xấp xỉ đầu ra yêu cầu (tức là đầu ra thực của dữ liệu học). Qua đó cho thấy mạng nơron MLP học khá tốt.

+ Precision: trả lời cho câu hỏi trong các trường hợp được dự báo là tốt thì có bao nhiêu trường hợp là đúng. Và tất nhiên đọ chính xác càng cao thì mô hình của chúng ta càng tốt trong việc dự báo. Precision sẽ cho chúng ta biết mức độ chuẩn xác của mô hình đối với các mô hình được dự báo là xấu. [17]

Precision = 𝑇𝑃

total predicted positive=

+ Recall: đo lường tỷ lệ dự báo chính xác các trường hợp positive trên toàn bộ các mẫu thuộc nhóm positive. Để tính được recall thì chúng ta phải biết trước nhãn của dữ liệu. Do đó recall có thể được dùng để đánh giá trên tập train và validation vì chúng ta đã biết trước nhãn. Trên tập test khi dữ liệu được coi như mới hoàn toàn và chưa biết nhãn thì chúng ta sẽ sử dụng precision. [18]

Recall= 𝑇𝑃

total actual positive =

𝑇𝑃 𝑇𝑃 + 𝐹𝑁

+ F1 score: trung bình điều hòa giữa precision và recall. Do đó nó đại diện hơn trong việc đánh gía độ chính xác trên đồng thời precision và recall. Nó được sử dụng để đánh giá hiệu suất của mô hình phân loại hoặc khuyến cáo

F1 = 2

precision−1+recall−1

Các giá trị mức dự đoán đối với học sinh, sinh viên được đưa ra là 63/1432 và không cảnh báo là 1369/1432. Và các công cụ đo như Accuracy, Precision, Recall, f1-Score đặt mức trong khoảng 92%-97%, đây là mức tương đối cao với bài toán dự báo.

3.8. Kiểm tra mạng nơ-ron Test

Sau khi đã tạo và lưu mô hình ta kiểm tra trên tập kiểm tra (test) dùng dữ liệu tuyển sinh của năm 2018 với một số đặc trưng cơ bản.

Xử lý với 16 đầu vào với giá trị trung bình của các đặc trưng cơ bản bao gồm 1432 hàng.

Sau khi Test trên tập với 2 đầu ra.

Sử dung hàm mất mát Loss để kiểm thử tập dữ liệu với 1432 dòng với 35us/sample mất 0.2712, mạng nơron chạy khá tốt với tỉ lệ lên tới 93.58 %.

Như vậy kết quả dự báo sử dụng công cụ là mạng nơron truyền thẳng với thuật toán lan truyền ngược sai số cho kết quả khuyến cáo tương đối chính xác, sai số là chấp nhận được.

+ Qua các kết quả thực nghiệm thu được trong quá trình thử nghiệm trên công cụ dự báo trong luận văn đã chỉ ra được những điều sau:

- Mạng nơron nhân tạo ứng dụng tốt trong bài toán đưa ra.

- Mức độ chính xác của mô hình phụ thuộc vào rất nhiều thông số, tuy nhiên lại chưa có một phương pháp nào để xác định được chính xác định tính cũng như định lượng của các thông số. Do đó phải sử dụng phương pháp thực nghiệm để tìm ra giá trị thông số tối ưu.

- Số liệu của mỗi học sinh có đặc trưng riêng và thông số tối ưu thay đổi theo mức độ đặc trưng của số liệu.

TÓM TẮT CHƯƠNG 3

Như vậy, trong chương 3 tác giả đã giới thiệu khái quát về trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa Vũng Tàu, với những thông tin tổng quan về lịch sử hình thành của trường. Về quy trình nghiên cứu áp dụng cho luận văn, tác giả đã mô tả dữ liệu trình bày từng bước thực hiện các công đoạn nghiên cứu của mình và phân tích chọn lọc ra các đặc trưng có ảnh hưởng đến kết quả dự đoán khả năng nhập học của học sinh. Từ đó làm nền tảng cho việc thực hiện nghiên cứu chính thức đưa ra các biểu đồ giúp đánh giá dữ liệu từ huấn luyện, kiểm tra, đánh giá đo độ chính xác khả năng dự đoán.

NHẬN XÉT KẾT LUẬN, HƯỚNG PHÁT TRIỂN

Luận văn nghiên cứu mạng nơron nhân tạo, mô hình mạng nơron truyền thẳng được huấn luyện với giải thuật lan truyền ngược cho bài toán xây dựng mô hình dự đoán khả năng nhập học của học sinh sinh viên Trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa - Vũng Tàu.

1. Ưu điểm

- Luận văn đã nghiên cứu các kiến thức cơ bản về mạng nơ ron nhân tạo, đặc biệt tác giả đã nghiên cứu kỹ mạng nơ ron lan truyền thẳng được huấn luyện bằng thuật toán lan truyền ngược nhằm đạt tới kết quả tốt nhất.

- Luận văn cũng đã xây dựng được mô hình dự đoán khả năng nhập học của học sinh sinh viên Trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa - Vũng Tàu trong những năm tiếp theo.

- Kết quả dự đoán của mô hình đã đóng góp cho nhà trường lên những ý tưởng và đặt ra các chiến lược tuyển sinh thu hút học sinh tới nhập học tại trường.

2. Nhược điểm

- Tìm hiểu thực nghiệm thành công trên dữ liệu tuyển sinh của trường trong thời gian 5 năm từ 2015 đến 2019.

- Dữ liệu mới chỉ áp dụng cho trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa – Vũng Tàu và chưa thể áp dụng ngay cho nhiều đơn vị khác.

3. Phạm vi ứng dụng của đề tài

- Mô hình có thể áp dụng cho các trường Trung cấp, Cao đẳng, Đại học. Tuy nhiên cần điều chỉnh lại cho phù hợp với chiến lược tuyển sinh của từng trường.

- Cấu trúc mô hình chỉ phù hợp cho nhà trường, nếu đơn vị khác phải điều chỉnh lại mạng nơ ron cho phù hợp.

4. Hướng phát triển của đề tài trong năm tiếp theo

Việc sử dụng Mạng Nơron nhân tạo trong việc phân tích dữ liệu và đưa ra dự báo khả năng nhập học là một phương pháp hiệu quả, khách quan và khoa học nhằm nhằm hỗ trợ công tác tư vấn tuyển sinh ngày càng tốt hơn.

Những kết quả thực nghiệm khả quan dựa trên nghiên cứu về ứng dụng mạng nơron nhân tạo với thuật toán học là lan truyền ngược sai số trong bài toán bài toán xây dựng mô hình dự đoán khả năng nhập học của học sinh sinh viên vào Trường Cao đẳng Kỹ thuật Công nghệ Bà Rịa - Vũng Tàu trong năm tới cho thấy đây là một mô hình hiệu quả.

Do vậy, luận văn sẽ tiếp tục phát triển theo hướng cải thiện phương pháp dự báo để có kết quả chính xác nhất.

TÀI LIỆU THAM KHẢO

Tài liệu tiếng Việt:

[1] Bộ Lao động Thương binh & Xã hội. Thông tư 07/2019/TT-BLĐTBXH: Sửa đổi, bổ sung một số điều của thông tư số 05/2017/TT-BLĐTBXH ngày 02 tháng 3 năm 2017 của Bộ trưởng bộ Lao động Thương binh & Xã hội quy định quy chế tuyển sinh và xác định chỉ tiêu tuyển sinh trình độ Trung cấp, cao đẳng 2019.

[2] Vũ Hữu Tiệp, (2018). Machine Learning cơ bản, Nhà xuất bản Khoa học và Kỹ thuật.

[3] Nguyễn Xuân Khánh. Machine Learning book for Vietnamese, University of Maryland.

[4]Nordic Coder, (2019). Phân nhóm thuật toán Machine Learning những điều bạn cần phải biết.

[5] Nguyễn Quang Hoan (2005), Giáo trình mạng nơron nhân tạo, Học viện công nghệ bưu chính viễn thông.

[6] Trần Đức Minh (2002), Ứng dụng mạng nơron truyền thẳng trong dự báo dữ liệu, Luận văn thạc sỹ, Viện Công nghệ Thông tin.

[7] Dương Thu Trang (2017), Ứng dụng mạng nơron nhân tạo dự báo số học sinh tuyển vào Trung tâm GDNN-GDTX quận Đống Đa, Luận văn thạc sỹ, trường Đại học Công nghệ – Đại học Quốc gia Hà Nội.

[8] Đinh Văn Nhượng, (2013). Một số ứng dụng mạng nơron xây dựng mô hình nhận dạng và dự báo, Nhà xuất bản Khoa học và Kỹ thuật.

[9]. Đinh Mạnh Tường(2002), Trí tuệ nhân tạo, Nhà xuất bản Khoa học và Kỹ thuật

[10]. Nguyễn Đình Thúc (2000), Mạng nơron nhân tạo – phương pháp và ứng dụng, Nhà xuất bản Giáo dục.

[11]. Nguyễn Thanh Tuấn (2019), Deep learning cơ bản, Nhà xuất bản Khoa học và Kỹ thuật.

[12]. Phạm Thọ Hoàn, Phạm Thị Anh Lê (2011), Giáo trình Trí tuệ nhân tạo, Đại học Sư phạm Hà Nội.

[13]. Lê Mỹ Hà, Giáo trình mạng nơ ron học sâu và ứng dụng, Nhà xuất bản Đại học Quốc gia thành phố Hồ Chí Minh.

[14]. Dương Minh Trí (2003), Giáo trình Trí tuệ nhân tạo, Đại học Sư phạm Kỹ thuật thành phố Hồ Chí Minh.

Tài liệu tiếng Anh:

[15].Dipti Srinivasan, A.C. Liew, Jonh S., P. Chen (1991), “Short Term Forecasting Using Neural Networks Approach”, IEEE 91TH0374-9/91/0000-0012, pp 12- 16, 1991.

[16].Morioka Y., Sakurai K., Yokoyama A. Sekine Y. (1993), “Next Day Peak Load Forecasting Using a Multilayer Neural Network with an Additional Learning”, IEEE, 0-7803-1217-1/93, 1993.

[17]. Fico Corporation (2009), Understanding Predictive Analytics.

[18].Dean Abbott (2014), Applied Predictive Analytics: Principles and Techniques for the Professional Data Analyst, Wiley.

[19]. Robert J. Schallkoff (1997), Artificial Neural Networks, The McGraw – Hill Companies, Inc 1997.

[20] John C. Chambers, Satinder K. Mullick and Donald D. Smith (1971), How to Choose the Right Forecasting Technique, https://hbr.org/1971/07/how-tochoose- the-right-forecasting-technique.

[21].Petar Halachev (2012), “Prediction of e-Learning Efficiency by Neural Networks”, Cybernetics And Information Technologies – volume 12 – Nơron 12, Bulgarian Academy of Sciences.

[22].Hopfield, J.J (1982), “Neural Networks and Physical Systems with Emergent Collective Computational Abilities”, Proceeding of Natural Academic Sciences, USA, vol. 79, pp. 2.554 – 2.558.

[23].David Silverman, Jonh A. Dracup (2000), “Artificial Neural Networks and Long-Range Precipitation Prediction in California”, Journal of Applied Meteorology, vol 39 (Jan 2000), pp. 57-66. 51

PHỤ LỤC: CODE THUẬT TOÁN Entrée [1]: import os import numpy as np import pandas as pd import tensorflow as tf

from tensorflow import keras

from tensorflow.keras.layers import Dense from tensorflow.keras.models import Sequential from tensorflow.keras import metrics

from sklearn.metrics import accuracy_score from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.metrics import f1_score

from sklearn.metrics import classification_report

Entrée [2]:

import io

train_data = pd.read_csv('du-lieu_2015-2017.csv') print('train_data has shape:', train_data.shape) train_data.head() Entrée [3]: x_train = train_data.iloc[:, 9: 25] print(x_train.shape) x_train.head() Entrée [4]: x_train = x_train.values print(x_train) Entrée [5]:

print(y_train.shape) print(y_train) Entrée [6]: y_train = keras.utils.to_categorical(y_train, 2) print(y_train.shape) print(y_train) Entrée [7]: model = Sequential()

model.add(Dense(24, input_dim=16, activation='relu')) model.add(Dense(16, activation='relu')) model.add(Dense(2, activation='softmax')) model.summary() Entrée [8]: model.compile(loss='categorical_crossentropy',optimizer='adam', metrics=['accuracy'])

model.fit(x_train, y_train, epochs=500, batch_size=10)

Entrée [9]:

model.save('MLP-Student-In-Model.h5')

Entrée [10]:

oss, accuracy = model.evaluate(x_train, y_train)

print('Accuracy on training data: %.2f' % (accuracy * 100))

Load Model Entrée [11]:

loaded_model = keras.models.load_model("MLP-Student-In-Model.h5")

Kiểm tra trên tập test 2019 Entrée [12]:

test_data_2019 = pd.read_csv('du-lieu_2019.csv')

print('test_data_1_out has shape:', test_data_2019.shape) test_data_2019.head()

Entrée [13]:

x_test_2019 = test_data_2019.iloc[:, 9: 25].values print(x_test_2019.shape)

print(x_test_2019)

Entrée [14]:

y_test_2019 = test_data_2019.iloc[:, 0].values print(y_test_2019.shape)

print(y_test_2019)

Entrée [15]:

test_predictions_2019 = loaded_model.predict(x_test_2019) print("Prediction labels: ", test_predictions_2019)

Entrée [16]:

for i in np.arange(test_predictions_2019.shape[0]):

prediction_label = np.argmax(test_predictions_2019[i]) if prediction_label == 1:

print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2019[i], y_test_2019[i], test_predictions_2019[i], prediction_label))

Entrée [17]:

for i in np.arange(test_predictions_2019.shape[0]):

prediction_label = np.argmax(test_predictions_2019[i]) if prediction_label == 0:

print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2019[i], y_test_2019[i], test_predictions_2019[i], prediction_label))

Entrée [18]:

y_test_2019_bin = keras.utils.to_categorical(y_test_2019, 2) print(y_test_2019_bin.shape)

print(y_test_2019_bin)

Entrée [19]:

print('Accuracy on testing data (1) out: %.2f' % (accuracy * 100))

Entrée [20]:

test_prediction_labels_2019 = loaded_model.predict_classes(x_test_2019) print("Prediction labels: ", test_prediction_labels_2019)

Entrée [21]:

accuracy = accuracy_score(y_test_2019, test_prediction_labels_2019) print('Accuracy: %f' % accuracy)

Entrée [22]:

precision = precision_score(y_test_2019, test_prediction_labels_2019) print('Precision: %f' % precision)

Entrée [23]:

recall = recall_score(y_test_2019, test_prediction_labels_2019) print('Recall: %f' % recall)

Entrée [24]:

f1 = f1_score(y_test_2019, test_prediction_labels_2019) print('F1 score: %f' % f1)

Entrée [25]:

target_names_2019 = ['Ko nhap hoc', 'Nhap hoc']

print(classification_report(y_test_2019,test_prediction_labels_2019, target_names=target_names_2019))

Kiểm tra trên tập test 2018 Entrée [26]:

test_data_2018 = pd.read_csv('du-lieu_2018.csv')

print('test_data_1_out has shape:', test_data_2018.shape) test_data_2018.head()

Entrée [27]:

x_test_2018 = test_data_2018.iloc[:, 9: 25].values print(x_test_2018.shape)

Entrée [28]:

y_test_2018 = test_data_2018.iloc[:, 0].values print(y_test_2018.shape)

print(y_test_2018)

Entrée [29]:

test_predictions_2018 = loaded_model.predict(x_test_2018) print("Prediction labels: ", test_predictions_2018)

Entrée [30]:

for i in np.arange(test_predictions_2018.shape[0]):

prediction_label = np.argmax(test_predictions_2018[i]) if prediction_label == 1:

print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2018[i], y_test_2018[i], test_predictions_2018[i], prediction_label))

Entrée [31]:

for i in np.arange(test_predictions_2018.shape[0]):

prediction_label = np.argmax(test_predictions_2018[i]) if prediction_label == 0:

print("x: {} | y: {} | prediction: {} | pre_label: {}".format(x_test_2018[i], y_test_2018[i], test_predictions_2018[i], prediction_label))

Entrée [32]:

y_test_2018_bin = keras.utils.to_categorical(y_test_2018, 2) print(y_test_2018_bin.shape)

print(y_test_2018_bin)

Entrée [33]:

loss, accuracy = loaded_model.evaluate(x_test_2018, y_test_2018_bin) print('Accuracy on testing data (1) out: %.2f' % (accuracy * 100))

Entrée [34]:

print("Prediction labels: ", test_prediction_labels_2018)

Entrée [35]:

accuracy = accuracy_score(y_test_2018, test_prediction_labels_2018) print('Accuracy: %f' % accuracy)

Entrée [36]:

precision = precision_score(y_test_2018, test_prediction_labels_2018) print('Precision: %f' % precision)

Entrée [37]:

recall = recall_score(y_test_2018, test_prediction_labels_2018) print('Recall: %f' % recall)

Entrée [38]:

f1 = f1_score(y_test_2018, test_prediction_labels_2018) print('F1 score: %f' % f1)

Entrée [39]:

target_names_2018 = ['Ko nhap hoc', 'Nhap hoc']

print(classification_report(y_test_2018,test_prediction_labels_2018, target_names=target_names_2018))

Một phần của tài liệu (LUẬN văn THẠC sĩ) xây dựng hệ thống dự đoán khả năng nhập học của học sinh vào trường cao đẳng kỹ thuật công nghệ bà rịa vũng tàu (Trang 76 - 91)

Tải bản đầy đủ (PDF)

(91 trang)