tín chỉ [1], Phương pháp lấy mẫu thuộc tính mới trong rừng ngẫu nhiên cho phân tích dữ liệu SNP [2], Nghiên cứu, xây dựng phương pháp trích chọn thuộc tính nhằm làm tăng hiệu quả phân lớ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA
HOÀNG XUÂN THIỆN
XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN VÀ DỰ ĐOÁN SẢN LƯỢNG ĐIỆN NĂNG TIÊU THỤ BẤT THƯỜNG CỦA
KHÁCH HÀNG
L UẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH
Đà Nẵng – Năm 2022
Trang 2TRƯỜNG ĐẠI HỌC BÁCH KHOA
HOÀNG XUÂN THIỆN
XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN VÀ DỰ ĐOÁN SẢN LƯỢNG ĐIỆN NĂNG TIÊU THỤ BẤT THƯỜNG CỦA
KHÁCH HÀNG
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01
LUẬN VĂN THẠC SĨ NGÀNH KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS Bùi Thị Thanh Thanh
Đà Nẵng – Năm 2022
Trang 3LỜI CAM ĐOAN
Nội dung của nghiên cứu này được tôi thực hiện dưới sự hướng dẫn tận tình của
TS Bùi Thị Thanh Thanh và ông Hoàng Ngọc Hoài Quang (Phó Giám đốc Công ty Điện lực Thừa Thiên Huế)
1 Tất cả các tài liệu tham khảo được sử dụng trong luận văn là miễn phí và được chia sẻ cho cộng đồng
2 Các dữ liệu điện khách hàng sử dụng trong đề tài nghiên cứu được bảo mật theo đúng quy định an toàn thông tin của Tập đoàn Điện lực Quốc gia Việt Nam
3 Mọi sai sót về bản quyền có trong luận văn này, tôi xin chịu trách nhiệm
4 Nghiên cứu đã được chấp nhận và trình bày tại Hội thảo khoa học quốc tế CITA
2022 và đảm bảo không vi phạm bản quyền (Trang 72-82, Hội thảo Khoa học Quốc Gia - CITA 2022, ISBN 978-604-84-6711-1)
Tác giả
Hoàng Xuân Thiện
Trang 4MỤC LỤC
LỜI CAM ĐOAN i
MỤC LỤC ii
DANH SÁCH CÁC BẢNG v
DANH SÁCH HÌNH ẢNH vi
DANH SÁCH CƠNG THỨC vii
DANH SÁCH TỪ VIẾT TẮT viii
TĨM TẮT x
MỞ ĐẦU 1
1 Tính cấp thiết và lý do chọn đề tài 1
2 Mục tiêu và nội dung nghiên cứu 3
3 Đối tượng và phạm vi nghiên cứu 3
4 Phương pháp nghiên cứu 3
5 Dự kiến kết quả đạt được 4
6 Ý nghĩa khoa học và thực tiễn 4
7 Bố cục của luận văn 5
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 6
1.1 Học máy (Machine Learning) 6
1.1.1 Khái niệm 6
1.1.2 Cây quyết định (Decision Tree) 7
1.2 Thuật tốn Rừng ngẫu nhiên (Random Forest) 9
1.2.1 Giới thiệu 9
1.2.2 Các ứng dụng của Rừng ngẫu nhiên 12
1.2.3 Ưu điểm và nhược điểm của Rừng ngẫu nhiên 13
1.2.3.1 Ưu điểm của Rừng ngẫu nhiên 13
1.2.3.2 Nhược điểm của Rừng ngẫu nhiên 13
1.2.4 Các bước thực hiện 13
1.3 Thuật tốn Nạve Bayes 14
1.3.1 Giới thiệu 14
1.3.2 Định lý Bayes 15
1.3.3 Cách hoạt động 15
1.4 Cơng nghệ sử dụng 16
1.4.1 Nodejs 16
1.4.2 Microsoft SQL Server 17
1.4.3 Angular 18
Trang 51.4.4 Python 20
1.4.5 Docker Compose 20
1.4.6 Google Colaboratory 21
1.5 Các giao thức và mơ hình 22
1.5.1 HTTP 22
1.5.2 Định dạng JSON 23
1.5.3 Chuyển giao trạng thái đại diện (REST) 24
1.5.4 REST API 26
1.5.5 Mơ hình MVC 27
CHƯƠNG 2: ỨNG DỤNG THUẬT TỐN RANDOM FOREST 29
VÀO BÀI TỐN 29
2.1 Thu thập dữ liệu 29
2.1.1 Quy trình thu thập dữ liệu từ hệ thống CMIS 29
2.1.2 Quy trình thu thập dữ liệu các khách hàng trộm cắp điện 30
2.1.3 Xử lý dữ liệu khách hàng gây nhiễu 31
2.2 Áp dụng mơ hình học máy vào nhận diện 32
2.2.1 Các ràng buộc 32
2.2.1.1 Các mùa trong năm 32
2.2.1.2 Giá điện bậc thang dành cho khách hàng sinh hoạt 33
2.2.1.3 Dữ liệu sản lượng điện của khách hàng trong 05 tháng gần nhất 35
2.2.2 Xây dựng tập dữ liệu gốc (Original Dataset) 36
2.2.3 Xây dựng tập dữ liệu khởi động (Bootstrapped Dataset) 36
2.2.4 Xây dựng các cây quyết định 37
CHƯƠNG 3: TRIỂN KHAI HỆ THỐNG VÀ ĐÁNH GIÁ KẾT QUẢ 39
3.1 Thiết kế hệ thống 39
3.2 Mơ hình hoạt động hệ thống 40
3.3 Triển khai các chức năng 40
3.3.1 Triển khai ứng dụng Web với Angular và API Nodejs 40
3.3.2 Triển khai hệ thống AI nhận diện khách hàng bất thường bằng ngơn ngữ Python chạy trên Docker Compose 41
3.4 Kết quả 42
3.5 Đánh giá kết quả 44
3.5.1 So sánh thuật tốn Random Forest và Nạve Bayes 44
3.5.2 Kết quả đạt được 46
KẾT LUẬN VÀ KIẾN NGHỊ 48
DANH MỤC CƠNG TRÌNH KHOA HỌC ĐÃ ĐƯỢC CƠNG BỐ 50
Trang 6DANH MỤC TÀI LIỆU THAM KHẢO 51 PHỤ LỤC 01 HỆ THỐNG THỐNG THÔNG TIN QUẢN LY KHÁCH
HÀNG NGÀNH ĐIỆN EVN (CMIS) 53 PHỤ LỤC 02 HỆ THỐNG THU THẬP DỮ LIỆU 57
ĐO XA RF-SPIDER 57
Trang 7DANH SÁCH CÁC BẢNG
Bảng 1.1 Bảng quan hệ giữa SQL và HTTP 27
Bảng 2.1 06 khách hàng trộm cắp điện năm 2019 30
Bảng 2.2 Bảng giá điện ngành sản xuất 33
Bảng 2.3 Giá khối hành chính sự nghiệp 34
Bảng 2.4 Giá điện kinh doanh 34
Bảng 2.5 Giá điện sinh hoạt 34
Bảng 2.6 Sản lượng điện 05 tháng của 05 khách hàng thuộc TTHPC 2021 36
Bảng 2.7 Tập dữ liệu gốc gồm n dữ liệu (sample) 36
Bảng 2.8 Tập dữ liệu khởi động 37
Bảng 3.1 Bảng dữ liệu sản lượng điện tiêu thụ trong năm của một khách hàng trộm cắp điện 45
Bảng 3.2 Bảng Dữ liệu samble được từ một khách hàng trộm cắp điện: 45
Bảng 3.3 Bảng so sánh giữa 02 thuật toán 46
Bảng 3.4 Danh sách khách hàng trộm cắp điện năm 2022 46
Bảng 3.5 Chi tiết sản lượng điện từ tháng 01/2021 đến 01/2022 của 03 khách hàng trộm cắp điện năm 2022 47
Trang 8DANH SÁCH HÌNH ẢNH
Figure 1.1 Mô hình học có giám sát 7
Hình 1.2 Mô hình học không giám sát 7
Hình 1.3 Mô hình thuật toán Random Forest 12
Hình 1.4 Ví dụ khi áp dụng thuật toán RF trong lựa chọn trái cây 12
Hình 1.5 Mô hình bỏ phiếu phân loại của thuật toán Rừng ngẫu nhiên 14
Hình 1.6 Lịch sử phiên bản phát triển Angular 19
Hình 1.7 Docker Container và máy ảo 21
Hình 1.8 Cấu hình phần cứng Google colab cung cấp 22
Hình 1.9 Client Server model 24
Hình 1.10 Stateless 25
Hình 0.11 REST API 26
Hình 1.12 Kiến trúc MVC 27
Hình 2.1 Sản lượng điện tiêu thụ 12 tháng năm 2021 của khách hàng PC03BB0101051 30
Hình 2.2 Biểu đồ sản lượng trong năm 2019 06 khách hàng trộm cắp điện 31
Hình 2.3 Biểu đồ dữ liệu sản lượng điện 2 năm của một khách hàng ăn trộm ít biến động 32
Hình 2.4 Một cây quyết định ngẫu nhiên trong tập cây quyết định 38
Hình 3.1 Biểu đồ Use Case hệ thống 39
Hình 3.2 Sơ đồ hoạt động của hệ thống 40
Hình 3.3 Giao diện Web dành cho người dùng chạy tại DNS http://gsdn.pctth.vn:83 41
Hình 3.4 Thanh công cụ điều hướng 41
Hình 3.5 API AI dự đoán khách hàng 42
Hình 3.6 Danh sách khách hàng được dự đoán tự động 42
Hình 3.7 Danh sách khách hàng trộm cắp điện 43
Hình 3.8 Tra cứu khách hàng 43
Hình 3.9 Mẫu phiếu kiểm tra khách hàng 44
Trang 9DANH SÁCH CÔNG THỨC
Công thức (1.1) 15
Công thức (1.2) 15
Công thức (1.3) 16
Công thức (1.4) 16
Công thức (1.5) 16
Công thức (1.6) 16
Công thức (3.1) 45
Trang 10DANH SÁCH TỪ VIẾT TẮT
CMIS Hệ thống thông tin quản lý khách hàng dùng điện
HTTP/HTTPS Hyper Text Transfer Protocol
REST Representational State Transfer
Super Admin Super Administrator
Trang 11URI Uniform Resource Identifier
EVNCPC Tổng công ty Điện lực miền Trung
Trang 12TĨM TẮT
XÂY DỰNG HỆ THỐNG AI NHẬN DIỆN VÀ DỰ ĐỐN SẢN LƯỢNG ĐIỆN
NĂNG TIÊU THỤ BẤT THƯỜNG CỦA KHÁCH HÀNG
Học viên: Hồng Xuân Thiện Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01 Khĩa: K41 Trường Đại học Bách khoa – ĐH Đà Nẵng
Tĩm tắt - Bài báo xây dựng hệ thống AI dự đốn khách hàng sử dụng điện bất thường
qua sản lượng điện tiêu thụ Thuật tốn Random Forest được sử dụng để đánh giá và phát hiện các khách hàng cĩ hành vi ăn cắp điện dựa vào hồ sơ dữ liệu cĩ sẵn về các khách hàng ăn trộm điện trước đây Dữ liệu huấn luyện được lấy từ kho dữ liệu khách hàng của Tổng cơng ty Điện lực miền Trung (CPC) Qua thực nghiệm, việc thiết lập các tham số đầu vào và kích cỡ dữ liệu huấn luyện ảnh hưởng khơng nhỏ đến kết quả nhận diện Ở chế độ dự đốn khách hàng từ dữ liệu sản lượng điện trong 3 tháng gần nhất, kết quả nhận diện đúng trên 60% và với dữ liệu sản lượng 5 tháng gần nhất là trên 80% Vào cuối năm 2021, hệ thống được thí điểm tại Cơng ty Điện lực Thừa Thiên Huế (TTHPC) và đã phát hiện phát hiện, xử lý trộm cắp điện: 74 vụ
Từ khĩa - Sản lượng điện bất thường; Rừng ngẫu nhiên; Bayes Nạve; Học cĩ giám
sát; Cây quyết định
BUILDING AI SYSTEM IDENTIFICATION AND PREDICTION OF UNNORMAL ELECTRIC QUANTITY CONSUMPTION OF CUSTOMERS Abstract - The article builds an AI system that predicts abnormal electricity usage by
customers through electricity consumption The Random Forest algorithm is used to evaluate and detect customers who have stolen electricity based on availa-ble data records on previous customers who steal electricity The training data is taken from the customer database of the Central Power Corporation (CPC) Through experiment, the setting of input parameters and training data size have a significant influence on the recognition results In the customer prediction mode from the power output data of the last 3 months, the correct identification results are over 60% and with the output data
of the last 5 months, it is over 80% At the end of 2021, the system was piloted at Thua Thien Hue Power Company (TTHPC) and detected and handled electricity theft: 74 cases
Keywords - Unnormal Electric Quantity; Random Forest; Bayes Nạve; Supervised
Learning; Decision tree
Trang 13MỞ ĐẦU
1 Tính cấp thiết và lý do chọn đề tài
Ngành điện là một ngành đã và đang đóng vai trò vô cùng thiết yếu trong cuộc sống hiện nay từ kinh doanh, sản xuất cho đến sinh hoạt hàng ngày của tất cả mọi người Ngành này có nhiệm vụ quan trọng trong việc đảm bảo sự vận hành ổn định của nguồn điện, đồng thời phát triển hệ thống truyền tải điện an toàn, hợp lí và hiệu quả phục vụ hoạt động sản xuất công, nông nghiệp; thương mại dịch vụ và dân sinh
Từ đầu năm 2020, dịch bệnh Covid-19 bắt đầu bùng phát tại Việt Nam khiến các ngành công nghiệp lớn nhỏ phải đóng cửa Điều này cũng khiến tỉ trọng sử dụng điện năng tại các hộ gia đình cũng tăng cao Ngoài ra với môi trường khác nghiệt của miền Trung nói chung và tỉnh Thừa Thiên Huế nói riêng, vào những mùa hè nắng nóng, nhu cầu sử dụng điện năng cho các thiết bị làm mát của khách hàng cũng tăng nên sản lượng tiêu dùng cũng tăng cao khiến các khách hàng đặt nhiều nghi vấn Công ty Điện lực Thừa Thiên Huế luôn quan tâm đến khách hàng và tiến hành kiểm tra định kỳ và đột xuất đối với các khách hàng nghi vấn bất thường qua các chương trình đo đếm theo dõi số liệu từ xa Qua qua trình rà quét, Công ty tiến hành kiểm tra 73.852 khách hàng trên tổng 317.203 khách hàng Trong đó số vụ phát hiện vi phạm
là 3.038 vụ (đạt 178,7% kế hoạch năm) và số vụ trộm cắp điện là 62 vụ (đạt 152,5%
kế hoạch năm) Năm 2020, sản lượng truy thu của Công ty là 62.820 kWh và tổng số tiền bồi thường là 1.004.691.941 VNĐ Có thể thấy, các chỉ tiêu này đã vượt kế hoạch khiến nạn ăn trộm điện ngày càng tăng với các thủ đoạn ngày càng tinh vi Ngoài những hành vi ăn trộm cắp điện thì việc xảy ra chạm chập điện và mùa nóng cũng khiến sản lượng điện của khách hàng có thể tăng cao hoặc giảm mạnh Ngày nay, nhiều hành vi trộm cắp điện với tinh vi cao khiến Công ty gặp nhiều khó khăn trong việc giám sát và xử lý
Cùng với sự phát triển của trí tuệ nhân tạo, con người đã nghiên cứu và đưa ra nhiều thuật toán Machine Learning khác nhau giúp việc huấn luyện các AI trở nên đa dạng và đạt kết quả tốt hơn, chính xác hơn và có thể làm thay các công việc của con người giúp giảm thời gian công việc tăng năng suất lao động Cùng với sự phát triển của trí tuệ nhân tạo, con người đã nghiên cứu và đưa ra nhiều thuật toán Machine Learning khác nhau giúp việc huấn luyện các AI trở nên đa dạng và đạt kết quả tốt hơn, chính xác hơn và có thể làm thay các công việc của con người giúp giảm thời gian công việc tăng năng suất lao động Một số đề tài đã áp dụng thuật toán Rừng ngẫu nhiên như Ứng dụng Random Forest để tư vấn chọn lộ trình học trong học chế
Trang 14tín chỉ [1], Phương pháp lấy mẫu thuộc tính mới trong rừng ngẫu nhiên cho phân tích
dữ liệu SNP [2], Nghiên cứu, xây dựng phương pháp trích chọn thuộc tính nhằm làm tăng hiệu quả phân lớp đối với dữ liệu đa chiều [3], Sử dụng dữ liệu ảnh viễn thám kết hợp kỹ thuật GIS để phân tích biến động tài nguyên rừng [4], Ứng dụng kỹ thuật phân loại ảnh hướng đối tượng nhằm phân loại trạng thái rừng theo thông tư số [5] và
So sánh phương pháp phân loại dựa vào điểm ảnh phân loại định hướng đối tượng chiết xuất thông tin lớp phủ bề mặt [6].Nói chung sử dụng phương pháp Rừng ngẫu nhiên (RF) để phân loại ảnh viễn thám hiện nay chưa có nhiều tác giả đề cập, một số
ít nghiên cứu chủ yếu được thực hiện ở rừng ôn đới hoặc rừng trồng Đến nay chưa
có nghiên cứu nào thực hiện tại các khu rừng bị tác động như ở Việt Nam, vì vậy đây vẫn là một chủ đề đang bỏ ngõ và cần được tiếp cận để có thể nâng cao hiệu quả trong phân loại ảnh vệ tinh để xây dựng các bản đồ rừng phục vụ cho các mục đích lâm nghiệp
Hiện nay, Tập đoàn điện lực Việt Nam đã triển khai nhiều chương trình AI trong nhiều lĩnh vực như hệ thống khôi phục lưới điện thông minh, hệ thống nhận dạng hình ảnh quản lý đầu tư xây dựng… Sản lượng điện năng là một phần thiết yếu trong dịch vụ kinh doanh khách hàng, các chuyên viên tại phòng Kinh doanh và Kiểm tra Giám sát mua bán điện đang sử dụng các cách thủ công như Microsoft Excel hoặc các chương trình theo dõi đo đếm từ xa theo thời gian trên nền tảng website Từ đó, bằng các khả năng nghiệp vụ, họ đặt ra các tiêu chí riêng để phát hiện các khách hàng có hành vi bất thường cần kiểm tra Vì vậy với tình hình hiện nay, EVN đang sử dụng những giải pháp thủ công để kiểm tra khách hàng như xem một khách hàng có biểu hiện sử dụng điện như thế nào trong năm, tự đánh giá theo tiêu chí của mỗi chuyên viên Điều này làm ảnh hưởng tới hiệu năng làm việc của mỗi người Tại TTHPC nói riêng và EVN nói chung rất cần một hệ thống AI để tự động thu thập tính toán và đánh giá các hành vi của khách hàng dự trên sản lượng điện tiêu thụ khách hàng đó
Mục tiêu của nghiên cứu này là sử dụng kho dữ liệu sản lượng điện tiêu thụ của khách hàng và thuật toán phân loại Rừng ngẫu nhiên nhằm phát hiện ra các khách hàng có hành vi bất thường nguy cơ có thể trộm cắp điện, từ đó đánh giá được hiệu quả và độ chính xác của kết quả phân loại
Từ những vấn đề trên, chúng tôi đã tiến hành tìm kiếm các mô hình thuật toán huấn luyện và dự đoán phù hợp với mô hình và dữ liệu sử dụng điện năng của khách hàng mua điện thuộc quản lý của Công ty
Vì những lý do như trên, tôi đề xuất chọn đề tài luận văn cao học:
Trang 15“Xây dựng hệ thống AI dự đoán khách hàng sử dụng điện bất thường qua
sản lượng điện tiêu thụ”
2 Mục tiêu và nội dung nghiên cứu
2.1 Mục tiêu
Xây dựng hệ thống AI nhận diện được các khách hàng có hành vi bất
thường theo sản lượng điện tiêu thụ của tháng Nhằm đảm bảo xử lý nhanh và kịp thời, hệ thống đồng bộ với hệ thống CMIS của Tập đoàn Điện lực Quốc gia Việt Nam và sẽ tự động hoạt động ngay khi sản lượng điện khách hàng được ra hóa đơn theo tháng để có số liệu chính xác nhất
Nắm rõ được các cơ chế hoạt động của các thuật toán học máy Đặc biệt là thuật toán Rừng ngẫu nhiên trong việc áp dụng tính ngẫu nhiên để đưa ra quyết
định
2.2 Mục đích
Giảm thời gian xử lý công việc của các cán bộ chuyên viên giúp tăng năng
suất lao động, nâng cao hiệu quả công việc qua các hệ thống học máy Khẳng định được về lợi ích của học máy trong công việc Tăng lòng tin của khách hàng với ngành điện
2.3 Nội dung nghiên cứu
Tìm hiểu lý thuyết học máy và các ứng dụng của học máy trong thời đại công nghệ 4.0 nhất là bám sát chủ đề Chuyển đổi số của Bộ Thông tin và Truyền thông năm 2021
Nghiên cứu lý thuyết thuật toán Rừng ngẫu nhiên và cách xây dựng thuật toán Hiểu rõ các ưu điểm và nhược điểm của thuật toán trong việc nhận diện khách hàng
3 Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
Sản lượng điện năng (kWh) tiêu thụ của khách hàng đăng ký cấp điện trên địa bàn tỉnh miền Trung – Tây Nguyên (Chi tiết nội dung nguồn dữ liệu như Phụ lục 01)
3.2 Phạm vi nghiên cứu
Sử dụng dữ liệu của khách hàng mua bán điện trên địa bàn tỉnh Thừa Thiên Huế trong quá trình nhận diện tự động hằng ngày Tập dữ liệu huấn luyện cần thu thập mỗi tháng trên địa bàn miền Trung để tăng số lượng dữ liệu huấn luyện để tăng độ chính xác của thuật toán
4 Phương pháp nghiên cứu
4.1 Phương pháp lý thuyết
Trang 16Cơ sở lý thuyết về thuật tốn Rừng ngẫu nhiên, Cây quyết định và học cĩ giám sát Hiểu rõ cơ chế hoạt động và các ưu nhược điểm của thuật tốn với các loại học máy cịn lại
Hiểu sâu cấu trúc thuộc tình của một khách hàng mua bán điện với Cơng
ty Điện lực và cách nhận diện một khách hàng trộm cắp điện thường cĩ những hành vi như thế nào Sử dụng các khách hàng ngẫu nhiên cĩ hành vi tương tự để đánh giá kết quả tự dự đốn
4.2 Phương pháp thực nghiệm
Thu thập dữ liệu khách hàng trộm cắp điện trên địa bàn miền Trung và xử
lý các khách hàng gây nhiễu trong quá trính huấn luyện mơ hình dự đốn Xây dựng hệ thống AI nhận diện với thuật tốn Rừng ngẫu nhiên với các tham số đầu vào là Sản lượng điện năng các tháng liền kề, thời gian vi phạm, bậc giá điện hiện tại Sử dụng tập các dữ liệu gộp chung khách hàng trộm cắp và khách hàng bình thường để làm tập kiểm thử nhằm kiểm tra độ chính xác của hệ thống nhận diện
5 Dự kiến kết quả đạt được
5.2 Về thực nghiệm
Sử dụng cùng 1 bộ cơ sở dữ liệu để huấn luyện qua 2 giải thuật Random
Forest và Nạve Bayes Ngồi ra, bộ dữ liệu cần dự đốn cũng giống nhau để so sánh được tốc độ huấn luyên, dự đốn cũng như tỷ lệ chính xác của thuật tốn Xây dựng phần mềm AI ứng dụng dự đốn sản lượng điện bất thường của khách hàng với độ chính xác nhận diện khách hàng bất thường khoảng 80% Ngồi ra cịn bổ sung thêm các chức năng như giám sát sản lượng điện năng của khách hàng và tạo phiếu kiểm tra với các khách hàng bất thường
6 Ý nghĩa khoa học và thực tiễn
6.1 Ý nghĩa khoa học
Tổng quan, đánh giá được độ chính xác của thuật tốn Rừng ngẫu nhiên khi áp dụng vào dự đốn sản lượng điện năng theo tháng của khách hàng
Trang 17Đề tài đã đóng góp một vai trò lớn trong quá trình nâng cao độ tin cậy cho thuật toán Rừng ngẫu nhiên nói riêng và học máy nói chung trong việc nhận diện chính xác các đối tượng cần nghiên cứu dự đoán
6.2 Ý nghĩa thực tiễn
Đề xuất giải pháp này góp phần giúp Công ty Điện lực Thừa Thiên Huế
nhận ra các khách hàng bất thường một cách tự động, giảm công rà soát sản lượng điện khách hàng mỗi ngày các các Giám sát viên Qua đó, có hướng xử lý kịp thời ngay lập tức và giúp các khách hàng tin tưởng ngành điện Hệ thống đã góp phần phổ biến ứng dụng sử dụng trí tuệ nhân tạo trong ngành Điện giúp nâng cao hiệu quả công việc
7 Bố cục của luận văn
Dự kiến luận văn được trình bày bao gồm các phần chính như sau:
Chương 1: Cơ sở lý thuyết
Giới thiệu về học máy, các mô hình học máy thông dụng hiện nay, thuật
toán Rừng ngẫu nhiên và các điểm mạnh điểm yếu các thuật toán Rừng ngẫu nhiên Cơ sở lý thuyết thuật toán Naive Bayes Các lý thuyết sử dụng trong đề tài
Chương 2: Ứng dụng thuật toán Random Forest vào bài toán
Giới thiệu thuật toán Random Forest, xây dựng mô hình học máy, xây dựng tập dữ liệu gốc, tập dữ liệu khởi động, tập kiểm thử, giới thiệu cách hệ thống làm việc qua từng bước trong quá trình huấn luyện và dự đoán sản lượng điện năng của khách hàng
Chương 3: Triển khai và đánh giá
Cài đặt cấu hình các môi trường làm việc cho hệ thống Lập trình các chức
năng cho hệ thống Thu thập dữ liệu theo thời gian xuất hóa đơn của khách hàng mỗi khi CMIS có dữ liệu để tiến hành dự đoán kịp thời So sánh đánh giá kết quả dự đoán khách hàng qua 02 thuật toán Random Forest và thuật toán Naive Bayes Phân tích ưu nhược điểm của 02 thuật toán
Trang 18CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Học máy (Machine Learning)
1.1.1 Khái niệm
Machine learning (ML) hay máy học là một nhánh của trí tuệ nhân tạo
(AI), nó là một lĩnh vực nghiên cứu cho phép máy tính có khả năng cải thiện
chính bản thân chúng dựa trên dữ liệu mẫu (training data) hoặc dựa vào kinh
nghiệm (những gì đã được học) Machine learning có thể tự dự đoán hoặc đưa
ra quyết định mà không cần được lập trình cụ thể Một vài ứng dụng nổi tiếng
sử dụng học máy như Cảnh báo giao thông (trên ứng dụng Google Maps) Giờ
đây, Google Maps có lẽ là ứng dụng được sử dụng với tần suất nhiều nhất mỗi
khi bạn tham gia giao thông Đặc biệt khi các ứng dụng khác về di chuyển như
Grab, Be được áp dụng rộng rãi, đồng nghĩa Google Maps được sử dụng liên
tục để chỉ đường cho nhà cung cấp dịch vụ hay người sử dụng dịch vụ Những
thông tin về quãng đường tối ưu, thời gian di chuyển nhanh nhất cũng được
phân tích cùng lúc trên Google Maps Thực tế, dữ liệu lịch sử của tuyến đường
đó đã được thu thập theo thời gian và một số dữ liệu có từ các nguồn khác Mọi
người sử dụng bản đồ đều cung cấp vị trí, tốc độ trung bình, tuyến đường
Những thông tin này Google thu thập và tổng hợp thành Dữ liệu lớn về lưu
lượng truy cập, thông qua các thuật toán phân tích phức tap trên Machine
Learning, những thông tin này trở nên có nghĩa, chúng giúp Google dự đoán
lưu lượng sắp tới và điều chỉnh tuyến đường của bạn theo cách tối ưu nhất
Mạng xã hội Facebook là một trong những ứng dụng phổ biến nhất của
Machine Learning là Đề xuất gắn thẻ bạn bè tự động trên Facebook hoặc bất kỳ
nền tảng truyền thông xã hội nào khác Facebook sử dụng tính năng nhận diện
khuôn mặt và nhận dạng hình ảnh để tự động tìm thấy khuôn mặt của người
phù hợp với Cơ sở dữ liệu của họ và do đó đề nghị người dùng gắn thẻ người
đó dựa trên DeepFace Dự án DeepFace của Facebook thực hiện nhiệm vụ nhận
diện khuôn mặt và xác định đối tượng cụ thể trong ảnh Nó cũng cung cấp Thẻ
Alt (Thẻ thay thế) cho hình ảnh đã được tải lên trên facebook
Có rất nhiều cách phân loại machine learning, thông thường thì machine
learning sẽ được phân làm hai loại chính sau:
− Supervised learning: học có giám sát
− Unsupervised learning: học không giám sát
Ngoài ra, machine learning còn có thể phân làm các loại sau:
Trang 19− Semi-supervised learning: học bán giám sát
− Deep learning: học sâu (về một vấn đề nào đó)
− Supervised learning
Supervised learning là việc cho máy tính học trên dữ liệu đã được gán
nhãn (label), hay nói cách khác, với mỗi đầu vào Xi, chúng ta sẽ có nhãn Yi
tương ứng
Hình 1.1 Mô hình học có giám sát
Unsupervised learning là cho máy tính học trên dữ liệu mà không được
gán nhãn, các thuật toán machine learning sẽ tìm ra sự tương quan dữ liệu, mô
hình hóa dữ liệu hay chính là làm cho máy tính có kiến thức, hiểu về dữ liệu, từ
đó chúng có thể phân loại các dữ liệu về sau thành các nhóm, lớp (clustering)
giống nhau mà chúng đã được học hoặc giảm số chiều dữ liệu (dimension
reduction)
Hình 1.2 Mô hình học không giám sát
1.1.2 Cây quyết định (Decision Tree)
Trong lĩnh vực máy học, cây quyết định là một kiểu mô hình dự báo
(predictive model), nghĩa là một ánh xạ từ các quan sát về một sự vật/hiện
tượng tới các kết luận về giá trị mục tiêu của sự vật/hiện tượng Mỗi một nút
Trang 20trong (internal node) tương ứng với một biến; đường nối giữa nó với nút con
của nó thể hiện một giá trị cụ thể cho biến đó Mỗi nút lá đại diện cho giá trị dự
đoán của biến mục tiêu, cho trước các giá trị của các biến được biểu diễn bởi
đường đi từ nút gốc tới nút lá đó Kỹ thuật học máy dùng trong cây quyết định
được gọi là học bằng cây quyết định, hay chỉ gọi với cái tên ngắn gọn là cây
quyết định
Trong ngành công nghiệp phần mềm tại công ty phát triển tài chính nguồn
nhân lực, Khi có dự án cần phần mềm tự động phân tích nguồn nhân lực và tài
chính giúp đóng góp phần quan trọng trong tiến độ dự án Hay về công ty phần
mềm khi có khách hàng ra các yêu cầu cần cây quyết định để phân tích các
chuyên gia viết đúng chuyên mô và đủ kinh nghiệm Nếu các yêu cầu thỏa mản
thì sẽ chuyến bước tiếp theo
Cây quyết định được sử dụng để giải quyết cả vấn đề phân loại và hồi quy
Nhưng nhược điểm chính của cây quyết định là nó thường dẫn đến việc
overfitting dữ liệu Hãy thảo luận chi tiết về ưu và nhược điểm của nó Ưu điểm
của cây quyết định Clear Visualization: Thuật toán đơn giản để hiểu, diễn giải
và trực quan vì ý tưởng chủ yếu được sử dụng trong cuộc sống hàng ngày của
chúng ta Đầu ra của cây quyết định có thể được con người giải thích một cách
dễ dàng đơn giản và dễ hiểu: Cây quyết định trông giống như các câu lệnh
if-else đơn giản và rất dễ hiểu Cây quyết định có thể được sử dụng cho cả bài
toán phân loại và bài toán hồi quy Cây quyết định có thể xử lý cả biến liên tục
và biến phân loại Không yêu cầu feature scaling: Không yêu cầu feature
scaling (standardization và normalization) trong trường hợp cây quyết định vì
nó sử dụng phương pháp tiếp cận dựa trên quy tắc thay vì tính toán Xử lý các
tham số phi tuyến tính một cách hiệu quả: Các tham số phi tuyến tính không
ảnh hưởng đến hiệu suất của cây quyết định không giống như các thuật toán
dựa trên đường cong Vì vậy, nếu có sự không tuyến tính cao giữa các biến độc
lập, cây quyết định có thể hoạt động tốt hơn so với các thuật toán dựa trên
đường cong khác Cây quyết định có thể tự động xử lý các giá trị bị thiếu Cây
quyết định thường mạnh mẽ đối với các trường hợp ngoại lệ và có thể xử lý
chúng một cách tự động Thời gian đào tạo ít hơn: Thời gian đào tạo ít hơn so
với rừng ngẫu nhiên (Random Forest) vì nó chỉ tạo ra một cây không giống như
rừng của các cây trong Random Forest Nhược điểm của Cây quyết định là
Overfitting: Đây là vấn đề chính của cây quyết định Nó thường dẫn đến việc
quá khớp dữ liệu mà cuối cùng dẫn đến dự đoán sai Để fit với dữ liệu (ngay cả
dữ liệu nhiễu), nó tiếp tục tạo ra các nút mới và cuối cùng cây trở nên quá phức
Trang 21tạp để diễn giải, dẫn đến mất khả năng tổng quát hóa Nó hoạt động rất tốt trên
dữ liệu được đào tạo nhưng bắt đầu mắc nhiều lỗi trên dữ liệu không nhìn thấy
được Phương sai cao: Như đã đề cập ở điểm 1, cây quyết định thường dẫn đến
việc quá khớp dữ liệu Chính vì thế, có rất nhiều khả năng sai lệch cao trong
đầu ra, dẫn đến nhiều sai sót trong ước tính cuối cùng và cho thấy kết quả
không chính xác cao Quá khớp dẫn đến phương sai cao Không ổn định: Việc
thêm một điểm dữ liệu mới có thể dẫn đến việc tạo lại cây tổng thể và tất cả các
nút cần được tính toán lại và tạo lại Bị ảnh hưởng bởi nhiễu: Một chút dữ liệu
nhiễu có thể làm cho nó không ổn định, dẫn đến dự đoán sai Không phù hợp
với tập dữ liệu lớn: Nếu kích thước dữ liệu lớn, thì một cây đơn lẻ có thể phát
triển phức tạp và dẫn đến quá khớp Vì vậy, trong trường hợp này, chúng ta nên
sử dụng Random Forest thay vì một cây quyết định
1.2 Thuật toán Rừng ngẫu nhiên (Random Forest)
1.2.1 Giới thiệu
Rừng ngẫu nhiên hoặc rừng quyết định ngẫu nhiên là một phương pháp
học tập tổng hợp để phân loại, hồi quy và các nhiệm vụ khác hoạt động bằng
cách xây dựng vô số cây quyết định tại thời điểm đào tạo Đối với các nhiệm vụ
phân loại, đầu ra của rừng ngẫu nhiên là loại được chọn bởi hầu hết các cây
Đối với các nhiệm vụ hồi quy, giá trị trung bình hoặc dự đoán trung bình của
các cây riêng lẻ được trả về Rừng quyết định ngẫu nhiên phù hợp với thói quen
thích nghi quá mức của cây quyết định đối với tập huấn luyện của chúng Rừng
ngẫu nhiên nhìn chung tốt hơn cây quyết định, nhưng độ chính xác của chúng
thấp hơn cây tăng cường độ dốc Tuy nhiên, đặc điểm dữ liệu có thể ảnh hưởng
đến hiệu suất của chúng
Thuật toán đầu tiên cho các khu rừng quyết định ngẫu nhiên được tạo ra
vào năm 1995 bởi Tin Kam Ho [7] bằng cách sử dụng phương pháp không gian
con ngẫu nhiên, theo công thức của tác giả, là một cách để thực hiện phương
pháp "phân biệt ngẫu nhiên" để phân loại do Eugene Kleinberg đề xuất Các
khu rừng ngẫu nhiên thường được sử dụng làm mô hình chính ở các dự án AI
trong các doanh nghiệp, vì chúng tạo ra các dự đoán hợp lý trên nhiều loại dữ
liệu trong khi yêu cầu cấu hình ít
Các phương pháp bỏ phiếu cho các thuật toán phân loại, chẳng hạn như
đóng gói (Bagging) và AdaBoost, đã được chứng minh là rất thành công trong
việc cải thiện độ chính xác của một số bộ phân loại nhất định cho các bộ dữ liệu
Trang 22nhân tạo và thế giới thực [8] Rừng ngẫu nhiên có thể giải quyết cả bài toán hồi
quy và phân loại Trên thực tế, mỗi cây cung cấp một giá trị gần đúng cho phần
sau đầy đủ, trong đó các đặc điểm được chọn phụ thuộc vào nhánh được đi
ngang Do số lượng và tính chất của các truy vấn, việc xây dựng cây quyết định
tiêu chuẩn dựa trên vectơ đặc trưng có độ dài cố định là không khả thi Thay
vào đó, một vài thử nghiệm được đặt ra trong đó một số mẫu truy vấn ngẫu
nhiên nhỏ tại mỗi nút, hạn chế độ phức tạp của chúng tăng theo độ sâu của cây
và phát triển nhiều cây Các nút đầu cuối được gắn nhãn bằng các ước lượng về
sự phân bố phía sau tương ứng trên các lớp hình dạng [9]
Thuật toán Rừng ngẫu nhiên cho ra kết quả chính xác cao nhờ yếu tố ngẫu
nhiên ra quyết định qua đó bỏ phiếu theo số đông cây quyết định [10] Các thử
nghiệm trên tập dữ liệu thực và mô phỏng bằng cách sử dụng cây phân loại và
hồi quy cũng như lựa chọn tập hợp con trong hồi quy tuyến tính cho thấy rằng
việc đóng gói có thể mang lại mức độ chính xác đáng kể [11] Ngoài ra, việc
đóng gói có thể làm giảm hiệu quả phương sai của các yếu tố dự báo hồi quy,
trong khi vẫn giữ nguyên độ chệch [12]
Rừng ngẫu nhiên được đề xuất bởi Breiman vào năm 2001 Đây là thuật
toán phân loại có kiểm định dựa trên cây quyết định và kỹ thuật bagging and
bootstrapping đã được cải tiến Bootstrapping là một phương pháp rất nổi tiếng
trong thống kê được giới thiệu bởi Efron vào năm 1979 [15] Phương pháp này
được thực hiện như sau: từ một quần thể ban đầu lấy ra một mẫu L = (x1,
x2 xn) gồm n thành phần để tính toán các tham số mong muốn Trong các
bước tiếp theo lặp lại b lần tạo ra mẫu Lb cũng gồm n phần từ L bằng cách lấy
lại mẫu với sự thay thế các thành phần trong mẫu ban đầu sau đó tính toán các
tham số mong muốn (Đồng Thị Ngọc Lan, 2011) [3] Phương pháp Bagging
được xem như là một phương pháp tổng hợp kết quả có được từ các
bootstraping sau đó huấn luyện mô hình từ các mẫu ngẫu nhiên này và cuối
cùng đưa ra dự đoán phân loại dựa vào số phiếu bầu cao nhất của lớp phân loại
(Đồng Thị Ngọc Lan, 2011) [3] Cây quyết định là một sơ đồ phát triển có cấu
trúc dạng cây phân nhánh đi từ gốc cho đến lá, giá trị các lớp phân loại của mẫu
được đưa vào kiểm tra trên cây quyết định Mỗi mẫu tương ứng có một đường
đi từ gốc-tức là dữ liệu đầu vào đến lá-tức là các kết quả phân loại dự đoán đầu
ra, biểu diễn dự đoán giá trị phân lớp mẫu đó Mỗi sơ đồ cây trong tập mẫu
được tạo thành từ tập hợp các điểm ảnh huấn luyện được lựa chọn ngẫu nhiên
để huấn luyện mô hình phân loại RF (mỗi tập mẫu bootstrap sẽ cho ra một tree
và ntree tương ứng với nbootstrap) Khi một tập mẫu được rút ra từ tập huấn
Trang 23luyện (bootstrap) với sự thay thế có hoàn lại, thì theo ước tính có khoảng 1/3
các phần tử không nằm trong mẫu này và vì thế chúng không tham gia vào quá
trình huấn luyện (Breiman L., 2001, 2007) [13], [14] Điều này có nghĩa là chỉ
có khoảng 2/3 các phần tử trong tập huấn luyện tham gia vào trong các tính
toán để phân loại (in of bag), và 1/3 các phần tử này dùng để kiểm tra sai số
được gọi là dữ liệu out-of-bag (OOB) Dữ liệu out-of-bag được sử dụng để ước
lượng sai số tạo ra từ việc kết hợp các kết quả phân loại riêng lẻ sau đó được
tổng hợp trong mô hình RF cũng như dùng để ước tính các biến quan trọng
(variable important) bằng chức năng Importance
Việc ước tính các biến quan trọng được xem xét theo hai chỉ số là: i) độ
chính xác giảm bình quân cho mỗi biến (MDA - Mean Decrease Accuracy) và
ii) sự giảm bình quân hệ số Gini đối với mỗi biến (MDG - Mean Decrease
Gini) MDA là độ chính xác của mỗi biến độc lập phân loại dựa trên đánh giá tỉ
lệ sai số OOB Hệ số Gini cho phép đo độ đồng nhất của mỗi lớp Hệ số Gini
(1909) [16] càng giảm khi một lớp cụ thể nào đó có các phần tử được gán sai
nhãn trong kết quả phân loại càng ít
Phân loại RF chứa một lượng lớn các cây, mỗi cây được phát triển từ các
pixel huấn luyện (training pixels) được lựa chọn ngẫu nhiên Hai tham số cần
được xác định trong thuật toán phân loại này là ntree (số lượng cây được phát
triển) và mtry (số lượng biến để phân chia tại mỗi node) Số ntree được lựa
chọn phụ thuộc vào khoảng thời gian xử lý ngắn nhất để kết quả đạt được độ sai
số thấp nhất, ntree chạy từ 1 đến 500 cây và mtry biến động từ số biến độc lập
tối thiểu (bằng 1) đến số biến độc lập tối đa được sử dụng trong phân loại
Trang 24Hình 1.3 Mô hình thuật toán Random Forest
Hình 1.4 Ví dụ khi áp dụng thuật toán RF trong lựa chọn trái cây
Sau khi mô hình Rừng ngẫu nhiên được tạo thành, mỗi kết quả của các
boostrap trong tập hợp sẽ bỏ phiếu cho lớp phổ biến nhất và cho ra một kết quả
phân loại Mô hình được tạo thành dựa vào phân loại có số phiếu bầu nhiều
nhất của mỗi sơ đồ cây quyết định ntree (Breiman L., 2001) [14]
1.2.2 Các ứng dụng của Rừng ngẫu nhiên
Một số lĩnh vực phổ biến mà Rừng ngẫu nhiên thường được sử dụng:
− Ngân hàng: Lĩnh vực ngân hàng chủ yếu sử dụng thuật toán này để
xác định rủi ro cho vay
− Y học: Với sự trợ giúp của thuật toán này, các xu hướng bệnh và
nguy cơ của bệnh có thể được xác định
Trang 25− Sử dụng đất: Chúng tôi có thể xác định các khu vực sử dụng đất
tương tự bằng thuật toán này
− Tiếp thị: Các xu hướng tiếp thị có thể được xác định bằng cách sử
dụng thuật toán này
1.2.3 Ưu điểm và nhược điểm của Rừng ngẫu nhiên
1.2.3.1 Ưu điểm của Rừng ngẫu nhiên
Thuật toán giải quyết tốt các bài toán có nhiều dữ liệu nhiễu, thiếu giá trị
Do cách chọn ngẫu nhiên thuộc tính nên các giá trị nhiễu, thiếu ảnh hưởng
không lớn đến kết quả Có những sự ước lượng nội tại như độ chính xác của mô
hình phỏng đoán hoặc độ mạnh và liên quan giữa các thuộc tính (Out of bag)
Dễ dàng thực hiện song song Thay vì một máy thực hiện cả thuật toán, ta có
thể sử dụng nhiều máy để xây dựng các cây sau đó ghép lại thành rừng
Các sai số được giảm thiểu do kết quả của Random Forest được tổng hợp
thông qua nhiều người học (Cây phân lớp) Việc chọn ngẫu nhiên tại mỗi bước
trong Random Forest sẽ làm giảm mối tương quan giữa các người học trong
việc tổng hợp các kết quả Lỗi chung của một rừng các cây phân lớp phụ thuộc
vào lỗi riêng của từ Dữ liệu huấn luyện cần được đa dạng hóa và cân bằng về số
nhãn lớp
1.2.3.2 Nhược điểm của Rừng ngẫu nhiên
Cân bằng nhãn lớp khiến kết quả dự đoán của thuật toán có thể lệch về số
đông nhãn lớp
Thời gian huấn luyện của rừng có thể kéo dài tùy số cây và số thuộc tính
phân chia.ng cây trong rừng cũng như mối tương quan giữa các cây
1.2.4 Các bước thực hiện
Đầu tiên thuật toán Rừng ngẫu nhiên được xây dựng dựa trên một tập thể
cây quyết định Cây quyết định là các khối xây dựng của một thuật toán rừng
ngẫu nhiên Cây quyết định là một kỹ thuật hỗ trợ quyết định tạo thành một cấu
trúc giống như cây Tổng quan về cây quyết định sẽ giúp chúng ta hiểu cách
hoạt động của các thuật toán rừng ngẫu nhiên
Cây quyết định bao gồm ba thành phần: nút quyết định, nút lá và nút gốc
Thuật toán cây quyết định chia tập dữ liệu huấn luyện thành các nhánh, tập dữ
liệu này sẽ tách biệt thành các nhánh khác Trình tự này tiếp tục cho đến khi đạt
được một nút lá Nút lá không thể được phân tách thêm
Trang 26Các nút trong cây quyết định đại diện cho các thuộc tính được sử dụng để
dự đốn kết quả Các nút quyết định cung cấp một liên kết đến các lá Sơ đồ sau
đây cho thấy ba loại nút trong cây quyết định
Hình 1.5 Mơ hình bỏ phiếu phân loại của thuật tốn Rừng ngẫu nhiên
Ở bước huấn luyện thì mình sẽ xây dựng nhiều cây quyết định, các cây
quyết định cĩ thể khác nhau Sau đĩ ở bước dự đốn, với một dữ liệu mới, thì ở
mỗi cây quyết định mình sẽ đi từ trên xuống theo các điểm nút điều kiện để
được các dự đốn, sau đĩ kết quả cuối cùng được tổng hợp từ kết quả của các
cây quyết định
1.3 Thuật tốn Nạve Bayes
1.3.1 Giới thiệu
Naive Bayes Classification (NBC) là một thuật tốn dựa trên định lý
Bayes về lý thuyết xác suất để đưa ra các phán đốn cũng như phân loại dữ liệu
dựa trên các dữ liệu được quan sát và thống kê Naive Bayes Classification là
một trong những thuật tốn được ứng dụng rất nhiều trong các lĩnh vực
Machine learning dùng để đưa các dự đốn chính xác nhất dự trên một tập dữ
liệu đã được thu thập, vì nĩ khá dễ hiểu và độ chính xác cao Nĩ thuộc vào
nhĩm Supervised Machine Learning Algorithms (thuật tốn học cĩ hướng dẫn),
tức là máy học từ các ví dụ từ các mẫu dữ liệu đã cĩ
Ví dụ như ta cĩ thể ứng dụng vào việc thiết kế một ứng dụng nghe nhạc cĩ
thể phán đốn được sở thích của nghe nhạc của người dùng dựa trên các hành vi
như nhấn nút “thích” bài hát, “nghe đi nghe” lại nhiều lần các bài hát “bỏ qua”
các bài hát khơng thích … Dựa trên tập dữ liệu đĩ ta cĩ thể áp dụng NBC để
Trang 27tính toán ra các phong cách nhạc mà người dùng thích nhất, từ đó chúng ta có
thể đưa ra các “gợi ý” nghe nhạc gần đúng nhất cho người dùng từ việc học hỏi
từ những thói quen đó
1.3.2 Định lý Bayes
Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A
khi biết sự kiện liên quan B đã xảy ra Xác suất này được ký hiệu là P(A|B), và
đọc là "xác suất của A nếu có B" Đại lượng này được gọi là xác suất có điều
kiện hay xác suất hậu nghiệm vì nó được rút ra từ giá trị được cho của B hoặc
phụ thuộc vào giá trị đó
Theo định lý Bayes, xác suất xảy ra A khi biết B sẽ phụ thuộc vào 3 yếu
tố:
Xác suất xảy ra A của riêng nó, không quan tâm đến B Ký hiệu là P(A) và
đọc là xác suất của A Đây được gọi là xác suất biên duyên hay xác suất tiên
nghiệm, nó là "tiên nghiệm" theo nghĩa rằng nó không quan tâm đến bất kỳ
thông tin nào về B
Xác suất xảy ra B của riêng nó, không quan tâm đến A Ký hiệu là P(B) và
đọc là "xác suất của B" Đại lượng này còn gọi là hằng số chuẩn hóa
(normalising constant), vì nó luôn giống nhau, không phụ thuộc vào sự kiện A
đang muốn biết
Xác suất xảy ra B khi biết A xảy ra Ký hiệu là P(B|A) và đọc là "xác suất
của B nếu có A" Đại lượng này gọi là khả năng (likelihood) xảy ra B khi biết A
đã xảy ra Chú ý không nhầm lẫn giữa khả năng xảy ra B khi biết A và xác suất
xảy ra A khi biết B
Khi biết ba đại lượng này, xác suất của A khi biết B cho bởi công thức:
𝑃(𝐴|𝐵) =𝑃(𝐵|𝐴)𝑃(𝐴)
𝑙𝑖𝑘𝑒𝑙𝑖ℎ𝑜𝑜𝑑 ∗ 𝑝𝑟𝑖𝑜𝑟𝑛𝑜𝑟𝑚𝑎𝑙𝑖𝑧𝑖𝑛𝑔𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡
Côn
g thức (1.1)
Từ đó dẫn tới:
𝑃(𝐴|𝐵)𝑃(𝐵) = 𝑃(𝐴⋂𝐵) = 𝑃(𝐵|𝐴)𝑃(𝐴) Công thức (1.2)
1.3.3 Cách hoạt động
Bước 1 Gọi D là tập dữ liệu huấn luyện, trong đó mỗi phần tử dữ liệu X
được biểu diễn bằng một vector chứa n giá trị thuộc tính
Trang 28𝐴1, 𝐴2… 𝐴𝑛 = {𝑥1, 𝑥2, … 𝑥𝑛} Công thức (1.3) Bước 2 Giả sử có m lớp C1, C2…Cm Cho một phần tử dữ liệu X, bộ
phân lớp sẽ gán nhãn cho X là lớp có xác suất hậu nghiệm lớn nhất Cụ thể, bộ
phân lớp Bayes sẽ dự đoán X thuộc vào lớp Ci nếu và chỉ nếu:
𝑃(𝐶𝑖|𝑋) > 𝑃(𝐶𝑗|𝑋) (1 <= 𝑖, 𝑗 <= 𝑚, 𝑖 ! = 𝑗) Công thức (1.4) Giá trị này sẽ tính dựa trên định lý Bayes
Bước 3 Để tìm xác suất lớn nhất, ta nhận thấy các giá trị P(X) là giống
nhau với mọi lớp nên không cần tính Do đó ta chỉ cần tìm giá trị lớn nhất của
P(X|Ci) * P(Ci) Chú ý rằng P(Ci) được ước lượng bằng |Di|/|D|, trong đó Di là
tập các phần tử dữ liệu thuộc lớp Ci Nếu xác suất tiền nghiệm P(Ci) cũng
không xác định được thì ta coi chúng bằng nhau
𝑃(𝐶1) = 𝑃(𝐶2) = = 𝑃(𝐶𝑚) Công thức (1.5) khi đó ta chỉ cần tìm giá trị P(X|Ci) lớn nhất
Bước 4 Khi số lượng các thuộc tính mô tả dữ liệu là lớn thì chi phí tính
toàn P(X|Ci) là rất lớn, dó đó có thể giảm độ phức tạp của thuật toán Naive
Bayes giả thiết các thuộc tính độc lập nhau Khi đó ta có thể tính:
dịch Just-In-Time mà V8 thực hiện Nhờ đó, mã JavaScript chạy trong Node.js
có thể trở nên rất hiệu quả
Một số tính năng quan trọng:
− Không đồng bộ và theo hướng sự kiện - Tất cả các API của thư viện Node.js là không đồng bộ, nghĩa là không chặn Về cơ bản, nó có nghĩa là một máy chủ dựa trên Node.js không bao giờ đợi API trả về dữ liệu Máy chủ
Trang 29chuyển đến API tiếp theo sau khi gọi nó và cơ chế thông báo Sự kiện của Node.js giúp máy chủ nhận được phản hồi từ lệnh gọi API trước đó
− Rất nhanh - Được xây dựng trên Công cụ JavaScript V8 của Google Chrome, thư viện Node.js thực thi mã rất nhanh
− Đơn luồng nhưng có khả năng mở rộng cao - Node.js sử dụng mô hình một luồng với vòng lặp sự kiện Cơ chế sự kiện giúp máy chủ phản hồi theo cách không bị chặn và làm cho máy chủ có khả năng mở rộng cao so với các máy chủ truyền thống tạo ra các luồng giới hạn để xử lý các yêu cầu Node.js sử dụng một chương trình luồng đơn và chương trình tương tự có thể cung cấp dịch vụ cho số lượng yêu cầu lớn hơn nhiều so với các máy chủ truyền thống như Apache HTTP Server
− Không đệm - Các ứng dụng Node.js không bao giờ đệm bất kỳ dữ liệu
nào Các ứng dụng này chỉ đơn giản xuất dữ liệu theo từng phần
− Giấy phép - Node.js được phát hành theo giấy phép MIT
Một số lĩnh vực mà Node.js đang chứng tỏ mình là một đối tác công nghệ
hoàn hảo
− Các ứng dụng ràng buộc I / O
− Ứng dụng truyền dữ liệu
− Ứng dụng thời gian thực chuyên sâu về dữ liệu (DIRT)
− Ứng dụng dựa trên API JSON
− Ứng dụng trang đơn
1.4.2 Microsoft SQL Server
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ do Microsoft
phát triển Là một máy chủ cơ sở dữ liệu, nó là một sản phẩm phần mềm có
chức năng chính là lưu trữ và truy xuất dữ liệu theo yêu cầu của các ứng dụng
phần mềm khác Có thể chạy trên cùng một máy tính hoặc trên một máy tính
khác trong mạng (bao gồm cả Internet)
Microsoft đưa ra thị trường ít nhất một chục phiên bản Microsoft SQL
Server khác nhau, nhắm mục tiêu đến các đối tượng khác nhau và khối lượng
công việc khác nhau, từ các ứng dụng máy đơn nhỏ đến các ứng dụng Internet
lớn với nhiều người dùng đồng thời
SQL là một ngôn ngữ phi thủ tục và không yêu cầu bất kỳ quyền truy cập
nào vào cơ sở dữ liệu Tất cả các thông điệp SQL đều dễ sử dụng và không có
lỗi
SQL cung cấp các tập lệnh phong phú cho các tác vụ truy vấn dữ liệu như:
Trang 30− Chèn, xóa và cập nhật các hàng trong một mối quan hệ
− Chạm, thêm, xóa và sửa đổi các đối tượng trong cơ sở dữ liệu
− Kiểm soát quyền truy cập vào cơ sở dữ liệu và các đối tượng cơ sở
dữ liệu để đảm bảo tính bảo mật, tính nhất quán và tính ràng buộc của
cơ sở dữ liệu
Đối tượng của máy chủ SQL là bảng dữ liệu với các cột và hàng Các cột
được gọi là trường dữ liệu và các hàng là các bản ghi của một bảng Các cột dữ
liệu và kiểu dữ liệu xác định tạo nên cấu trúc của bảng
Khi một bảng được tổ chức thành một hệ thống cho một mục đích cụ thể, nó
sẽ trở thành một cơ sở dữ liệu
1.4.3 Angular
Angular là một nền tảng phát triển và khung thiết kế ứng dụng để tạo các
ứng dụng một trang hiệu quả và phức tạp
Các tài liệu Angular này giúp bạn tìm hiểu và sử dụng khung Angular và
nền tảng phát triển, từ ứng dụng đầu tiên của bạn đến việc tối ưu hóa các ứng
dụng một trang phức tạp cho doanh nghiệp Hướng dẫn và hướng dẫn bao gồm
các ví dụ có thể tải xuống để tăng tốc các dự án của bạn
Với cơ chế Single Page, Angular có sức mạnh trong việc xây dựng một
website nhanh về mặt tốc độ tải dữ liệu Việc sử ít chuyển Router cũng giúp
trang website ít phải reload giúp chương trình thân thiện người dùng hơn
➢ Phiên bản Angular
Phiên bản sớm nhất của Angular được đặt tên là Angular 2 Sau đó đổi
tên thành Angular Nhóm Angular sau đó đã phát triển một phiên bản thông
thường mới và phiên bản ổn định mới nhất là Angular 11
Hiện có phiên bản beta của Angular 11 được phát hành vào ngày 25 tháng 1 năm 2022
➢ Lịch sử phát hành
Trang 31Hình 1.6 Lịch sử phiên bản phát triển Angular
➢ Yêu cầu
Angular yêu cầu hiểu biết về JavaScript, HTML và CSS Nó cũng cần
kiến thức về OOP Và kiến thức về AngularJS là không cần thiết Bạn sẽ sử
dụng TypeScript để viết mã và nếu bạn có kiến thức về C # hoặc Java thì việc
học sẽ dễ dàng hơn
➢ Giới thiệu về Angular
Angular 2 được biết đến rộng rãi với cái tên Angular hiện tại Nó là một
khuôn khổ cho giao diện người dùng và phiên bản tiếp theo của AngularJS
Angular là mã nguồn mở giúp chúng tôi xây dựng các Ứng dụng Trang Đơn
(SPA)
Angular cũng đang xây dựng cả ứng dụng Di động và Máy tính để bàn
Nó được xây dựng bằng JavaScript Bạn phải sử dụng nó để xây dựng một ứng
dụng hoàn chỉnh kết hợp HTML, CSS và JavaScript
Angular có nhiều cải tiến so với AngularJS Nó có nhiều cải tiến giúp dễ
dàng tìm hiểu và phát triển các ứng dụng cho doanh nghiệp Bạn có thể xây
dựng một ứng dụng dễ mở rộng, bảo trì và thử nghiệm
➢ Tính năng của Angular
Angular được tải bằng Power-packaged Một số tính năng được liệt kê ở
đây:
− Cơ chế liên kết dữ liệu hai chiều: Đây là tính năng thú vị nhất của
Angular Liên kết dữ liệu tự động và rất nhanh chóng có nghĩa là bất
kỳ thay đổi nào trên khung nhìn đều được tự động cập nhật vào lớp
thành phần và ngược lại
Trang 32− Hỗ trợ cơ chế định tuyến mạnh mẽ: Angular có cơ chế định tuyến tải
trang không đồng bộ trên cùng một trang cho phép chúng ta tạo SPA
− Mở rộng HTML: Angular cho phép chúng ta sử dụng cấu trúc lập trình
như điều kiện if, vòng lặp for… để kết xuất các điều khiển
− Thiết kế mô-đun: Tiếp cận góc cạnh theo hướng thiết kế mô-đun Bạn
phải tạo Mô-đun Angular để tổ chức và quản lý mã nguồn tốt hơn
− Hỗ trợ làm việc với hệ thống Backend: Angular được xây dựng để hỗ
trợ làm việc với backend server và thực thi bất kỳ logic nào và nhận dữ
liệu
− Cộng đồng tốt: Angular được cung cấp bởi Google và cộng đồng
Angular được thay đổi rất nhiều so với AngularJS Angular đã được thiết
kế lại từ đầu nên nhiều khái niệm đã thay đổi so với AngularJS Ngày này với
những tiện lợi của Angular11 thì nhiều công cụ hỗ trợ cho lập trình viên hơn
việc xây dựng các giao diện chức năng cũng tăng đáng kể
1.4.4 Python
Python là ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, được
tạo ra bởi Guido van Rossum Nó dễ dàng để tìm hiểu và đang nổi lên như một
trong những ngôn ngữ lập trình nhập môn tốt nhất cho người lần đầu tiếp xúc
với ngôn ngữ lập trình Python hoàn toàn tạo kiểu động và sử dụng cơ chế cấp
phát bộ nhớ tự động Python có cấu trúc dữ liệu cấp cao mạnh mẽ và cách tiếp
cận đơn giản nhưng hiệu quả đối với lập trình hướng đối tượng Cú pháp lệnh
của Python là điểm cộng vô cùng lớn vì sự rõ ràng, dễ hiểu và cách gõ linh
động làm cho nó nhanh chóng trở thành một ngôn ngữ lý tưởng để viết script và
phát triển ứng dụng trong nhiều lĩnh vực, ở hầu hết các nền tảng
1.4.5 Docker Compose
Docker Compose là một công cụ dùng để định nghĩa và chạy các chương
trình Docker sử dụng nhiều container (multi-container) Với Docker Compose, chúng ta sử dụng một file YAML để thiết lập các service cần thiết cho chương trình Cuối cùng, với một câu lệnh, chúng ta sẽ create và start tất cả service từ các thiết lập đó
Docker là một nền tảng dành cho developer và system administrator, cung
cấp cho họ những thành phần để build, run và share những chương trình thông
qua những container Việc sử dụng container để triển khai chương trình được
gọi là containerization
Trang 33Một chương trình bình thường nếu chạy ở các server sẽ có ba lớp từ trên
xuống là: chương trình (Application), Hệ điều hành (Operating System) và Máy
chủ vật lí (Physical Server)
Hình 1.7 Docker Container và máy ảo
1.4.6 Google Colaboratory
Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google
Research, nó cho phép chạy các dòng code python thông qua trình duyệt, đặc
biệt phù hợp với Data analysis, machine learning và giáo dục Colab không cần
yêu cầu cài đặt hay cấu hình máy tính, mọi thứ có thể chạy thông qua trình
duyệt, bạn có thể sử dụng tài nguyên máy tính từ CPU tốc độ cao và cả GPUs
và cả TPUs đều được cung cấp cho bạn
Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s and
P100s, tuy nhiên người dùng không thể chọn loại GPU trong Colab, GPU trong
Colab thay đổi theo thời gian Vì là dịch vụ miễn phí, nên Colab sẽ có những
thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống, cũng như giới hạn thời
gian sử dụng, thời gian sử dụng tối đa lên tới 12 giờ
Google Colab hiện cũng cung cấp một nền tảng trả phí có tên Google
Colab Pro, có giá 9,99$/tháng Khi sử dụng, bạn có thể nhận được GPU Tesla
T4 hoặc Tesla P100 và tùy chọn chọn một phiên bản có RAM cao khoảng 27
GB Ngoài ra, thời gian sử dụng tối đa của bạn được nhân đôi từ 12 giờ lên 24
giờ
Trang 34Hình 1.8 Cấu hình phần cứng Google colab cung cấp
1.5 Các giao thức và mô hình
Với kiến trúc hướng dịch vụ, chúng tôi quyết định sử dụng Angular để
phát triển trang web giao diện người dùng và Node JS để xây dựng các API để
tương tác với dữ liệu lưu tại cơ sở dữ liệu tại Công ty Ngoài ra tôi cũng sử
dụng Google Colab để triển khai các chương trình huấn luyện trên đám mây
Tôi triển khai hệ thống của mình đến máy chủ của công ty TTHPC Chúng tôi
sẽ nói về những công nghệ này trong phần này, nhưng trước hết chúng tôi sẽ
trình bày các lý thuyết cơ bản
1.5.1 HTTP
Giao thức truyền siêu văn bản (HTTP) là một giao thức ứng dụng cho các
hệ thống thông tin phân tán, cộng tác và siêu phương tiện Nó là một giao thức
chung, không trạng thái, có thể được sử dụng cho nhiều tác vụ ngoài việc sử
dụng cho siêu văn bản, chẳng hạn như máy chủ định danh và hệ thống quản lý
đối tượng phân tán, thông qua việc mở rộng các phương thức yêu cầu, mã lỗi và
tiêu đề của nó HTTP là nền tảng của giao tiếp dữ liệu cho World Wide Web
HTTP hoạt động như một giao thức phản hồi yêu cầu trong mô hình tính
toán máy khách-máy chủ Ví dụ: một trình duyệt web có thể là máy khách và
một ứng dụng chạy trên máy tính lưu trữ một trang web có thể là máy chủ Máy
khách gửi một thông báo yêu cầu HTTP đến máy chủ Máy chủ, nơi cung cấp
các tài nguyên như tệp HTML và nội dung khác, hoặc thực hiện các chức năng
khác thay mặt máy khách, trả về một thông báo phản hồi cho máy khách Phản
hồi chứa thông tin trạng thái hoàn thành về yêu cầu và cũng có thể chứa nội
dung được yêu cầu trong nội dung thư của nó
HTTP được thiết kế để cho phép các phần tử mạng trung gian cải thiện
hoặc cho phép giao tiếp giữa máy khách và máy chủ Trình duyệt là một máy
khách HTTP vì nó gửi các yêu cầu đến máy chủ HTTP (máy chủ Web), máy
chủ này sau đó sẽ gửi phản hồi trở lại máy khách Cổng tiêu chuẩn (và mặc
định) cho các máy chủ HTTP để lắng nghe là 80, mặc dù chúng có thể sử dụng
bất kỳ cổng nào Dòng yêu cầu có ba phần, được phân tách bằng dấu cách: tên
Trang 35phương thức, đường dẫn cục bộ của tài nguyên được yêu cầu và phiên bản
HTTP đang được sử dụng
HTTP xác định các phương thức để chỉ ra hành động mong muốn được
thực hiện trên tài nguyên đã xác định Tài nguyên này đại diện cho điều gì, cho
dù là dữ liệu có từ trước hay dữ liệu được tạo động, phụ thuộc vào việc triển
khai của máy chủ Thông thường, tài nguyên tương ứng với một tệp hoặc đầu ra
của tệp thực thi nằm trên máy chủ Đặc tả HTTP / 1.0 xác định các phương thức
GET, POST và HEAD và đặc tả HTTP / 1.1 đã thêm 5 phương thức mới:
OPTIONS, PUT, DELETE, TRACE và CONNECT
Với các URL và phương thức, máy khách có thể khởi tạo các yêu cầu tới
máy chủ Đổi lại, máy chủ phản hồi bằng mã trạng thái và thông báo Mã trạng
thái rất quan trọng và cho máy khách biết cách diễn giải phản hồi của máy chủ
Thông số HTTP xác định các phạm vi số nhất định cho các loại phản hồi cụ thể:
1xx: Tin nhắn thông tin Lớp mã này được giới thiệu trong HTTP / 1.1 và
hoàn toàn là tạm thời
2xx: Thành công Loại mã trạng thái này cho biết rằng yêu cầu của khách
hàng đã được nhận, hiểu và chấp nhận thành công Mã phổ biến nhất là 200
OK
3xx: Chuyển hướng Điều này yêu cầu khách hàng thực hiện thêm hành
động Trường hợp sử dụng phổ biến nhất là chuyển đến một URL khác để tìm
nạp tài nguyên
4xx: Lỗi máy khách Các mã này được sử dụng khi máy chủ cho rằng máy
khách bị lỗi, do yêu cầu tài nguyên không hợp lệ hoặc đưa ra yêu cầu không
hợp lệ Mã phổ biến nhất trong lớp này là 404 Not Found, nó chỉ ra rằng tài
nguyên không hợp lệ và không tồn tại trên máy chủ
5xx: Lỗi Máy chủ Loại mã này được sử dụng để chỉ ra lỗi máy chủ trong
khi xử lý yêu cầu Mã lỗi phổ biến nhất là Lỗi máy chủ nội bộ 500
1.5.2 Định dạng JSON
JSON hoặc JavaScript Object Notation là một định dạng trao đổi dữ liệu
văn bản thuần túy Nó dựa trên một tập hợp con của phiên bản thứ ba của tiêu
chuẩn ECMA-262 JSON được sử dụng như một cơ chế để tuần tự hóa cấu trúc
dữ liệu thành chuỗi Các chuỗi này thường được gửi qua các mạng, được ghi để
xuất tệp hoặc được sử dụng để gỡ lỗi
Về mặt ngữ pháp, JSON rất giống với cú pháp theo nghĩa đen của đối
tượng JavaScript Danh sách sau đây mô tả các quy tắc để tạo chuỗi JSON:
Trang 36− Các đối tượng JSON bắt đầu bằng dấu ngoặc nhọn mở ‘{‘ và kết
thúc bằng dấu ngoặc nhọn đóng ‘}”
− Giữa các dấu ngoặc nhọn là không hoặc nhiều cặp khóa / giá trị
được gọi là thành viên
− Các thành viên được phân tách bằng dấu phẩy
− Khóa và giá trị của mỗi phần tử được phân tách bằng dấu hai chấm
− Khóa là chuỗi và phải được bao quanh bởi dấu ngoặc kép
− Định dạng của giá trị phụ thuộc vào kiểu dữ liệu
Ví dụ: {“name": "xuanthien", "age": 26, "city": "thành phố Huế"} là một
đối tượng JSON Các khóa của nó là tên, tuổi và thành phố Giá trị tương ứng
của nó là xuanthien, 26 và thành phố Huế
JSON hỗ trợ nhiều kiểu dữ liệu gốc của JavaScript Cụ thể, JSON hỗ trợ
số, chuỗi, Boolean, mảng, đối tượng và null Vì định dạng JSON chỉ là văn bản
nên nó có thể dễ dàng được gửi đến và đi từ máy chủ và được sử dụng làm định
dạng dữ liệu bởi bất kỳ ngôn ngữ lập trình nào
1.5.3 Chuyển giao trạng thái đại diện (REST)
Chuyển giao trạng thái đại diện (REST) xác định một tập hợp các nguyên
tắc kiến trúc mà bạn có thể thiết kế các dịch vụ Web tập trung vào tài nguyên
của hệ thống, bao gồm:
➢ Client - Server
Điều này về cơ bản tách các mối quan tâm về giao diện người dùng khỏi mối quan tâm về lưu trữ dữ liệu Có nghĩa là ứng dụng máy khách và ứng dụng
máy chủ phải có khả năng phát triển riêng biệt mà không phụ thuộc vào nhau
Khách hàng chỉ nên biết URI tài nguyên và đó là tất cả Điều này về cơ bản cho
phép ứng dụng khách trên nhiều nền tảng và ứng dụng máy chủ có thể mở rộng
➢ Stateless
Trang 37Máy chủ sẽ không lưu trữ bất cứ điều gì về ứng dụng khách yêu cầu HTTP
mới nhất được thực hiện Nó sẽ coi mỗi và mọi yêu cầu là mới Mỗi yêu cầu từ
máy khách đến máy chủ phải chứa tất cả thông tin cần thiết để hiểu được yêu cầu và không thể tận dụng bất kỳ ngữ cảnh được lưu trữ nào trên máy chủ
Không có phiên, không có lịch sử Bất kỳ trạng thái phiên nào đều do khách
hàng nắm giữ
Lý do cho điều này về cơ bản là khi số lượng máy khách tăng lên, máy chủ
sẽ không thể theo dõi tất cả các máy khách đang giao tiếp với nó, điều này sẽ
mất rất nhiều thời gian Vì vậy, điều này về cơ bản là cần thiết để đảm bảo quy
mô của hệ thống Nhưng về cơ bản điều này làm cho hệ thống REST thiếu một
số chức năng cơ bản như đăng nhập, đăng xuất Để xác thực và ủy quyền máy
khách, máy chủ kiểm tra thông tin đăng nhập của từng yêu cầu, do đó máy
khách cần lưu trữ thông tin đăng nhập và gửi chúng trong mỗi yêu cầu
Hình 1.10 Stateless
➢ Uniform interface
Bằng cách áp dụng nguyên tắc chung của kỹ thuật phần mềm cho giao diện
thành phần, kiến trúc hệ thống tổng thể được đơn giản hóa và khả năng hiển thị
của các tương tác được cải thiện Để có được một giao diện thống nhất, cần có
nhiều ràng buộc kiến trúc để hướng dẫn hành vi của các thành phần REST
được định nghĩa bởi bốn ràng buộc giao diện: xác định tài nguyên; thao túng
các nguồn lực thông qua các đại diện; thông điệp tự mô tả; và, siêu phương tiện
như động cơ của trạng thái ứng dụng
➢ Cacheable
Như trên WWW, máy khách có thể lưu vào bộ nhớ cache các phản hồi
Do đó, các phản hồi phải tự xác định một cách rõ ràng hoặc rõ ràng là có thể lưu
vào bộ nhớ cache hoặc không, để ngăn máy khách sử dụng lại dữ liệu cũ hoặc
Trang 38không phù hợp để phản hồi các yêu cầu khác Bộ nhớ đệm được quản lý tốt sẽ
loại bỏ một phần hoặc hoàn toàn một số tương tác giữa máy khách và máy chủ,
cải thiện hơn nữa khả năng mở rộng và hiệu suất
➢ Layered system
Thông thường, một máy khách không thể biết liệu nó được kết nối trực
tiếp với máy chủ cuối hay với một bên trung gian trên đường đi Máy chủ trung gian có thể cải thiện khả năng mở rộng hệ thống bằng cách cho phép cân bằng
tải và bằng cách cung cấp bộ nhớ đệm dùng chung Họ cũng có thể thực thi các
chính sách bảo mật
➢ Code on demand (optional)
Hầu hết thời gian, bạn sẽ gửi các biểu diễn tĩnh của tài nguyên dưới dạng XML hoặc JSON Nhưng khi cần, bạn có thể tự do trả lại mã thực thi để hỗ trợ
một phần của ứng dụng Nó được phép để làm mà không bị ngăn cản bởi các
API web phía máy chủ là giao diện lập trình bao gồm một hoặc nhiều điểm cuối được hiển thị công khai với hệ thống thông báo yêu cầu-phản hồi đã xác định, thường được thể hiện bằng JSON hoặc XML, được hiển thị qua web - phổ biến nhất là dựa trên HTTP máy chủ web API web phía máy khách là một giao diện có lập trình để mở rộng chức năng trong trình duyệt web hoặc máy khách HTTP khác
API REST là một API tuân theo các ràng buộc của REST Nó cho thấy
URI giống cấu trúc thư mục, chuyển XML, JSON hoặc cả hai Các thành phần chính của giao thức chuẩn trong API REST được sử dụng để cung cấp các hành động CRUD (Create, Read, Update, Delete) cho các tài nguyên
Trang 39Bảng 1.1 Bảng quan hệ giữa SQL và HTTP
Trong thực tế, một API REST không được có đầy đủ 6 ràng buộc của
REST Nhưng nếu một API REST đáp ứng tất cả các ràng buộc của REST, nó
được gọi là API RESTful
Mẫu MVC đã được nhiều nhà phát triển báo trước là một mẫu hữu ích cho
việc tái sử dụng mã đối tượng và một mẫu cho phép họ giảm đáng kể thời gian phát triển ứng dụng với giao diện người dùng
− View, là một tập hợp các lớp đại diện cho các phần tử trong giao diện người dùng (tất cả những thứ mà người dùng có thể nhìn thấy và phản hồi trên màn hình, chẳng hạn như các nút, hộp hiển thị, v.v.)
Trang 40− Controller, đại diện cho các lớp kết nối mô hình và khung nhìn và được
sử dụng để giao tiếp giữa các lớp trong mô hình và khung nhìn