Khái niệmChuẩn hóa Normalization là quá trình tách bảng phân rã thành các bảng nhỏ hơn dựa vào các phụ thuộc hàm.Mục đích của chuẩn hoá là loại bỏ các dư thừa dữ liệu, các lỗi khi thao t
Trang 1PHÂN TÍCH DỮ LIỆU TÀI CHÍNH QUY MÔ LỚN
Nhóm 02 - Lớp 02PHƯƠNG PHÁP
LÀM SẠCH
DỮ LIỆU
Trang 21 Chuẩn hoá dữ liệu2 Xử lý ngoại lệ
3 Scaling và Normalization
NỘI DUNG
Trang 31.1 Khái niệm
Chuẩn hóa (Normalization) là quá trình tách
bảng (phân rã) thành các bảng nhỏ hơn dựa
vào các phụ thuộc hàm.Mục đích của chuẩn hoá là loại bỏ các dư thừa
dữ liệu, các lỗi khi thao tác dư thừa và các lỗikhi thao tác dữ liệu (Insert, Delete, Update)
Tuy nhiên việc này cũng làm tăng thời gian
truy vấn do cần phải join nhiều bảng để lấy dữ
liệu.
1 Chuẩn hoá dữ liệu
Trang 41.2 Các dạng chuẩn hóa dữ liệu dạng chuẩn
Có 4 dạng cơ bản là dạng chuẩn: 1NF, 2NF, 3NF và BCNF Chuẩn BCNF sẽ bao gồm
3 loại chuẩn là 1NF, 2NF và 3NF Ngoài ra, còn có các dạng chuẩn hoá khác như:Chuẩn hoá dữ liệu 4NF, 5NF, 6NF.
Các dạng chuẩn hóa được sắp
Trang 51 Chuẩn hoá dữ liệu
1.2.1 Chuẩn hoá 1NF - First Normal Form
Một bảng (quan hệ) được gọi là ở dạngchuẩn 1NF nếu và chỉ nếu toàn bộ các
miền giá trị của các cột có mặt trongbảng (quan hệ) đều chỉ chứa các giá trị
phải chứa một giá trị duy nhất.
Trang 61 Chuẩn hoá dữ liệu
B21DCTC020Nguyen Trung Anh abc
123
stu.ptit.edu.vngmail.com
09123456780936782239 TC02
B21DCTC230Nguyen Thi Nhan hahaha
hihihi
stu.ptit.edu.vngmail.com
08372538280372986928 TC01
B21DCTC032Nguyen Van Doi doilathe
Doichanv
stu.ptit.edu.vngmail.com
06369263880378253863 TC02
1.2.1 Chuẩn hoá 1NF - First Normal Form
03
=> Bảng này đang vi phạm 1NF vì cột Mail chứa nhiều giá trị(nhiều mail) nên các giá trị trong cột không phải là nguyên tố.
Trang 71 Chuẩn hoá dữ liệu
B21DCTC020 Nguyen Trung Anhabcstu.ptit.edu.vn0912345678TC02
B21DCTC020 Nguyen Trung Anh123gmail.com0936782239TC02
B21DCTC230 Nguyen Thi Nhanhahahagmail.com0837253828TC01
B21DCTC230 Nguyen Thi Nhanhihihi stu.ptit.edu.vn0372986928TC01
B21DCTC032 Nguyen Van Doidoilathestu.ptit.edu.vn0636926388TC02
B21DCTC032 Nguyen Van DoiDoichanv gmail.com0378253863TC02
1.2.1 Chuẩn hoá 1NF - First Normal Form
Bảng dữ liệu trên sau khi đưa về dạng 1NF được biểu diễn như sau:
Trang 81 Chuẩn hoá dữ liệu
Mã SVHọ va tênMailDomainSDTLớp
B21DCTC020Nguyen Trung Anhabcstu.ptit.edu.vn0912345678TC02B21DCTC020Nguyen Trung Anh123gmail.com0936782239TC02B21DCTC230Nguyen Thi Nhanhahahagmail.com0837253828TC01B21DCTC230Nguyen Thi Nhanhihihi stu.ptit.edu.vn0372986928TC01B21DCTC032Nguyen Van Doidoilathestu.ptit.edu.vn0636926388TC02B21DCTC032Nguyen Van DoiDoichanv gmail.com0378253863TC02
1.2.1 Chuẩn hoá 1NF - First Normal Form
03
=> Bảng trên đã đạt chuẩn hoá 1NF vì:
Không có nhóm lặp trong bảng: tất cả các giá trị trong các cột đều là giá trị duy nhất vàkhông chứa nhóm lặp.
Mỗi hàng là duy nhất: mỗi hàng đại diện cho sự kết hợp duy nhất của các thuộc tính.Các cột có cấu trúc rõ ràng: các cột không chứa nhiều giá trị trong một ô, đảm bảo cấutrúc dạng chuẩn hoá 1NF
Trang 91 Chuẩn hoá dữ liệu
Để chuẩn hóa dạng 2NF, yêu cầu dữ liệu phảiđạt chuẩn 1NF và tất cả các thuộc tính khôngkhóa (non-key attributes) phải phụ thuộc
hoàn toàn vào khóa chính (primary key)
1.2.2 Chuẩn hoá 2NF - Second Normal Form
Chuẩn hóa dạng 2NF sẽ tách dữ liệuthành các bảng riêng biệt Mỗi bảng sẽcó khóa chính và khóa ngoại - là khóachính của bảng khác để liên kết các
bảng lại với nhau
Chuẩn hóa dạng 2NF giúp dữ liệu khôngbị trùng lặp, tối ưu không gian lưu trữ vàdễ dàng hơn trong việc quản lý và cậpnhập dữ liệu một cách nhất quán
Chuẩn hóa dạng 2NF cũng giúp bảo toàntính toàn vẹn của dữ liệu, khi đó các thaotác trên dữ liệu sẽ rõ ràng và chính xáchơn; tối ưu hóa hiệu suất truy vấn và dễ
dàng phát hiện sửa lỗi dữ liệu
Trang 101 Chuẩn hoá dữ liệu
B21DCTC020Nguyen Trung AnhTC02
B21DCTC230Nguyen Thi NhanTC01
B21DCTC032Nguyen Van DoiTC02
1.2.2 Chuẩn hoá 2NF - Second Normal Form
Chuẩn hóa bảng trên thành 2NF
Bảng 1 - Thông tin sinh viên
Bảng 2 - Thông tin liên lạc sinh viên
Trang 111 Chuẩn hoá dữ liệu
1.2.3 Chuẩn hoá 3NF - Third Normal Form
Để chuẩn hóa dạng 3, dữ liệu phải đạt chuẩn 2NF vàkhông có sự bắc cầu trong phụ thuộc hàm
Dạng chuẩn hóa thứ ba tiếp tục cải thiện cấu trúcbảng bằng cách loại bỏ các phụ thuộc bắc cầu giữacác thuộc tính không khóa với nhau
Phụ thuộc chuyển tiếp xảy ra khi một thuộc tính phụthuộc vào một thuộc tính khác không phải là khóachính
Trang 121 Chuẩn hoá dữ liệu
trong bảng phụ thuộc
vào khoá chính Tuy nhiên vẫn có sự phụ
thuộc lẫn nhau giữa cácthuộc tính không phải
khóa chính như: Mailphụ thuộc vào Domain.
Trang 131 Chuẩn hoá dữ liệu
1.2.3 Chuẩn hoá 3NF - Third Normal Form
Bảng 1 - Thông tin liên lạc SĐT
Bảng 2 - Thông tin liên lạc bằng mail
Trang 141 Chuẩn hoá dữ liệu
Sau khi chuẩn hóa, tách dữ liệu thành 2 bảng riêng biệt, ta loạibỏ được hoàn toàn sự phụ thuộc lẫn nhau giữa các thuộc tínhkhông khóa trong bảng
1.2.3 Chuẩn hoá 3NF - Third Normal Form
Chuẩn hóa dạng 3NF cũng có những lợi ích giống với chuẩnhóa loại 2 nhưng hiệu suất được tối ưu hóa hơn, nhanh hơn,chính xác hơn vì dữ liệu được tổ chức hợp lý mà không bị dưthừa
3NF là một dạng chuẩn hóa quan trọng giúp đảm bảo cơ sở dữliệu hoạt động hiệu quả và ít xảy ra lỗi liên quan đến dữ liệu
Trang 151 Chuẩn hoá dữ liệu
1.2.3 Chuẩn hoá 3NF - Third Normal Form
Đây là tổng quát để đạt được cấp chuẩn hoá 3NF trong
chuẩn hoá dạng chuẩn
Trang 161 Chuẩn hoá dữ liệu
1.2.4 Chuẩn hóa BCNF
Là dạng chuẩn hóa mạnh hơn so vớichuẩn hóa thứ 3 (3NF) BCNF giải quyếtcác vấn đề mà 3NF có thể bỏ sót khi một
bảng có nhiều khóa ứng viên (candidatekeys) và một trong các khóa này có thuộc
tính không khóa phụ thuộc vào nó
BCNF thường được áp dụng trong các trườnghợp mà 3NF không đủ để loại bỏ các phụ thuộcbất hợp lý, đặc biệt là khi có nhiều khóa ứng viên
trong một bảng BCNF đảm bảo rằng CSDL có
cấu trúc mạnh mẽ và đáng tin cậy hơn
Trang 171 Chuẩn hoá dữ liệu
1.2.4 Chuẩn hóa BCNF
Bảng lưu trữ về thông tin của các khóa học, trước khi chuẩn hóa BCNF
=> Bảng này dùng khóa chính kết hợp ClassID và Professor để xác định 1 lớp học Tuynhiên có phụ thuộc hàm là Professor → Room, nghĩa là mỗi giáo sư chỉ có thể dạytrong một phòng học cụ thể Điều này dẫn đến vấn đề khi một phòng học có thể
được gán cho nhiều lớp học khác nhau, và bảng không đạt chuẩn BCNF.
Trang 181 Chuẩn hoá dữ liệu
1.2.4 Chuẩn hóa BCNF
Dữ liệu được chuẩn hóa BCNF
Trang 191 Chuẩn hoá dữ liệu
1.3 Các dạng chuẩn hóa dữ liệu khác
Chuẩn hóa dữ liệu trong cơ sở dữ liệu khôngchỉ dừng lại ở các dạng chuẩn từ 1NF đếnBCNF, mà còn có các cấp cao hơn như chuẩn
hóa cấp 4 (4NF), cấp 5 (5NF), và thậm chí làcấp 6 (6NF) Những cấp chuẩn hóa này nhằm
mục đích tập trung vào việc loại bỏ các loạiphụ thuộc phức tạp hơn, đảm bảo tính toàn
vẹn và hiệu quả tối ưu của cơ sở dữ liệu
Trang 201 Chuẩn hoá dữ liệu
1.3.1 Chuẩn hoá dữ liệu 4NF
4NF tập trung vào việc loại bỏ cácphụ thuộc đa trị (Multivalued
Dependency - MVD) Một bảng được coi là đạt chuẩn4NF nếu nó đã đạt chuẩn Boyce-
Codd Normal Form (BCNF) vàkhông chứa các phụ thuộc đa trị
không cần thiết
Trang 211 Chuẩn hoá dữ liệu
1.3.2 Chuẩn hoá dữ liệu 5NF
5NF tập trung vào việc loại bỏ các phụ thuộc kết hợp(Join Dependency) Một bảng được coi là đạt chuẩn5NF nếu nó đã đạt chuẩn 4NF và không thể phân rãthành các bảng nhỏ hơn mà không làm mất thông tin
Trang 221 Chuẩn hoá dữ liệu
1.3.3 Chuẩn hoá dữ liệu 6NF
6NF là dạng chuẩn hóa cao nhất và tập trung vào việctách tất cả các thuộc tính vào các bảng có cấu trúc đơngiản nhất (atomic) Một bảng được coi là đạt chuẩn 6NF
nếu nó không thể phân tách thêm mà vẫn giữ nguyên
các phụ thuộc và quan hệ giữa các thuộc tính
Trang 23DEMO CODE
Trang 252 Xử lý ngoại lệ
2.2 Ngoại lệ trong chuẩn hoá dữ liệu là gì ?
“Điều kiện bất thường hoặc cần xử lý đặc biệt - thườngthay đổi luồng bình thường của việc thực hiện chương
trình” - theo WikipediaVà việc xử lý chúng đòi hỏi:
“Cấu trúc ngôn ngữ lập trình chỉ định rõ ràng hoặc cơ
Trang 262 Xử lý ngoại lệ
Ngoại lệ là một yếu tố cơbản của lập trình hiệnđại; nó tồn tại để làm cho
phần mềm của chúng tatốt hơn Thay vì sợ ngoạilệ, chúng ta nên nắm lấy
chúng và học cáchhưởng lợi từ chúng.
Trang 272 Xử lý ngoại lệ
“Ném” ngoại lệCuối cùng (Optional)
Lên cấp ngoại lệ
2.3 Cơ chế ngoại lệ hoạt động
Trang 282 Xử lý ngoại lệ
“Ném” ngoại lệ
Phát hiện ngoại lệ
2.3 Cơ chế ngoại lệ hoạt động
Khi một đoạn mã gặp lỗi hoặc tình huống bấtthường, một ngoại lệ (exception) được phát
sinh Ví dụ, khi chia cho 0 hoặc mở một tệpkhông tồn tại, hệ thống phát sinh ngoại lệ
Khi một lỗi xảy ra, hệ thống hoặc mã lệnh sẽ némmột đối tượng ngoại lệ (exception object) chứathông tin về lỗi Đối tượng này thường bao gồm
loại lỗi và thông điệp lỗi mô tả tình trạng
Trang 292 Xử lý ngoại lệ
Xử lý ngoại lệ
Khi một ngoại lệ được ném, chương trình sẽ tìmkiếm một khối mã có thể xử lý lỗi này Điều nàyđược thực hiện thông qua cấu trúc điều kiện màthường được gọi là "try-catch" ( Trong JAVA ) hoặc"try-except" ( Trong Python ) trong các ngôn ngữlập trình
try block: Đây là nơi mã lệnh có thể phát sinh
lỗi Nếu một lỗi xảy ra, chương trình sẽ chuyểnsang khối catch hoặc except
catch or except block: Đây là nơi mà bạn xử lý
ngoại lệ Bạn có thể ghi lại lỗi, hiển thị thôngbáo, hoặc thực hiện các hành động khôi phục
2.3 Cơ chế ngoại lệ hoạt động
Trang 302 Xử lý ngoại lệ
Cuối cùng (Optional)
Lên cấp ngoại lệ
Một số ngôn ngữ lập trình cungcấp khối finally để thực hiện cácthao tác dọn dẹp hoặc các hành
động cần thiết khác dù cho cóxảy ra ngoại lệ hay không
2.3 Cơ chế ngoại lệ hoạt động
Nếu khối catch không xử lý đượcngoại lệ, nó có thể được "ném" lên
cấp cao hơn trong chuỗi gọi hàm,cho đến khi được xử lý hoặc đạtđến điểm cao nhất của ứng dụng,
nơi chương trình có thể kết thúc
Trang 312.3 Cơ chế ngoại lệ hoạt động
Cơ chế hoạt động của Xử lý ngoại lệ trong Python
Trang 322.3 Cơ chế ngoại lệ hoạt động
Cơ chế hoạt động của Xử lý ngoại lệ trong Java
Trang 33Khi chuẩn hóa dữ liệu, việc xử lý ngoại lệ là rất quantrọng để đảm bảo rằng dữ liệu đầu vào không gây ra lỗitrong quá trình chuẩn hóa và mô hình hóa
Dưới đây là một số cách để xử lýngoại lệ trong chuẩn hóa dữ liệu
Trang 342 Xử lý ngoại lệ
2.4 Cách xử lý
Xử lý giá trị thiếu
01
Loại bỏ các bản ghi có giá trị thiếu: Nếu số lượng bản ghi
thiếu không nhiều, có thể loại bỏ chúng
Thay thế giá trị thiếu bằng giá trị trung bình, trung vịhoặc mode: Cách này giúp duy trì kích thước của tập dữ
liệu
Sử dụng các kỹ thuật imputation: Sử dụng các phương
pháp như KNN imputation hoặc hồi quy để ước lượng giátrị thiếu
Trang 352 Xử lý ngoại lệ
Phát hiện giá trị ngoại lệ: Sử dụng các phương pháp
thống kê như IQR (interquartile range) hoặc các kỹ thuậtnhư Z-score để phát hiện giá trị ngoại lệ
Xử lý giá trị ngoại lệ
(outliers)
02
Loại bỏ hoặc thay thế: Nếu giá trị ngoại lệ không phải là
thông tin quan trọng, có thể loại bỏ chúng hoặc thay thếbằng giá trị gần đúng hơn như trung bình hoặc trung vị
2.4 Cách xử lý
Trang 36Sửa lỗi: Nếu có lỗi chính tả
hoặc lỗi định dạng, cần sửachúng trước khi chuẩn hóa.
Trang 372 Xử lý ngoại lệKiểm tra và chuẩn hóa các giá trị ngoài
khoảng hợp lệ
04
2.4 Cách xử lý
Áp dụng các quy tắc chuẩn hóa: Đảm bảo rằng các giá trị được chuẩn hóa về
một khoảng giá trị hợp lệ (ví dụ: chuẩn hóa về [0,1] hoặc [-1,1]).
Trang 38Đảm bảo rằng tấtcả các dữ liệu liên
quan đến đơn vịđo lường được
chuyển đổi vềcùng một đơn vị
Chuẩn hóa tênbiến và định dạng
dữ liệu: Đảm bảo
rằng các tên biếnvà định dạng dữliệu là nhất quántrong toàn bộ tập
dữ liệu
Trang 402.5 Custom Ngoại lệ
Trang 41Kết quả trả về 2 Xử lý ngoại lệ
Trang 423 Scaling vàNormalization
Khi xử lý dữ liệu thô, chúng ta thườnggặp nhiều dạng dữ liệu phức tạp, khiếnviệc phân tích và tìm ra insights trở nênkhó khăn.
Biến đổi dữ liệu giúp mô hình học tốthơn và đưa ra dự đoán chính xác, gầnvới kết quả mong muốn.
Trang 433 Scaling và Normalization
Scaling là quá trình biến đổi giá trị của dữ liệu về mộtkhoảng nhất định, như 0 - 100 hoặc thường là 0 - 1
Việc scale dữ liệu giúp đảm bảo rằng các thay đổi nhỏ
trong dữ liệu không gây ra kết quả khó dự đoán
Quá trình scale cần được thực hiện nhất quán với
mục đích sử dụng của thước đo
12
34
3.1 Scaling
Trang 453 Scaling và Normalization
3.1.1 Simple Features Scaling
Phương pháp này hoạt động bằng cách chia từng giá trị trong một đặctrưng cho giá trị lớn nhất của đặc trưng đó, giúp đưa các giá trị về mộtkhoảng nhất định, thường là từ 0 đến 1.
Trang 46import numpy as npimport seaborn as snsimport matplotlib.pyplot as plt# set seed for reproducibilitynp.random.seed(0)
# generate 1000 data points randomly drawn from an exponential distribution and shift themoriginal_data = np.random.exponential(scale=50, size=1000) - 50
# Simple Features Scaling: divide each data point by the maximum value in the datasetsimple_scaled_data = original_data / np.max(original_data)
# plot both together to comparefig, ax = plt.subplots(1, 2, figsize=(12, 6))# Plot original data
sns.histplot(original_data, ax=ax[0], color='b', kde=True, edgecolor=None, alpha=0.6)ax[0].set_title("Original Data")
# Plot simple scaled datasns.histplot(simple_scaled_data, ax=ax[1], color='r', kde=True, edgecolor=None, alpha=0.6)ax[1].set_title("Simple Features Scaled Data")
plt.show()
3.1.1.SimpleFeaturesScaling
Trang 473 Scaling và Normalization
Trang 483.1.2 Min-Max Scaling
Mục tiêu của phương pháp này là đưa các giá trị về gần hơn với giá trịtrung bình của các đặc trưng Phương pháp này thường biến đổi các giátrị về một khoảng cụ thể, thường là [0,1] hoặc [−1,1].
Trang 49import numpy as npimport seaborn as snsimport matplotlib.pyplot as pltfrom sklearn.preprocessing import minmax_scale# set seed for reproducibility
np.random.seed(0)# generate 1000 data points randomly drawn from an exponential distribution and shift themoriginal_data = np.random.exponential(scale=50, size=1000) - 50
# min-max scale the data between 0 and 1min_max_scaled_data = minmax_scale(original_data)# plot both together to compare
fig, ax = plt.subplots(1, 2, figsize=(12, 6))# Plot original data
sns.histplot(original_data, ax=ax[0], color='b', kde=True, edgecolor=None, alpha=0.6)ax[0].set_title("Original Data")
# Plot min-max scaled datasns.histplot(min_max_scaled_data, ax=ax[1], color='g', kde=True, edgecolor=None, alpha=0.6)ax[1].set_title("Min-Max Scaled Data")
plt.show()
3.1.2 Max
Min-Scaling
Trang 503 Scaling và Normalization
3.1.2 Max
Min-Scaling
Trang 51Các giá trị được scale nằm trongkhoảng từ 0 đến 1, nhưng khôngđảm bảo rằng giá trị nhỏ nhất sẽ là0.
Giá trị nhỏ nhất được chuyển thành 0và giá trị lớn nhất được chuyển thành1, toàn bộ dữ liệu được điều chỉnh vàokhoảng [0, 1]
Ảnh hưởng của
ngoại lệ
Ít nhạy cảm hơn với ngoại lệ, nhưngvẫn có thể bị ảnh hưởng nếu giá trịlớn nhất là một ngoại lệ
Rất nhạy cảm với các giá trị ngoại lệ,vì các giá trị này có thể tác động
mạnh đến việc xác định giá trị nhỏnhất và lớn nhất
3.1.3 So sánh
Trang 523 Scaling và Normalization
Đặc điểmSimple Features ScalingMin-Max Scaling
Tác động đếnphân phối dữ liệu
Không làm thay đổi phân phối củadữ liệu, chỉ điều chỉnh các giá trị dựatrên giá trị lớn nhất
Giữ nguyên tương quan của dữ liệunhưng thay đổi giá trị nhỏ nhất và lớnnhất để phù hợp với phạm vi mới
Ứng dụng
Thích hợp cho các bài toán đơn giảnhoặc khi chỉ cần co giãn dữ liệu dựatrên giá trị lớn nhất, không quan
tâm đến giá trị nhỏ nhất
Thích hợp khi cần chuẩn hóa dữ liệuvào một phạm vi cố định [0, 1], đặcbiệt trong các mô hình học máy yêucầu xử lý dữ liệu đồng nhất về phạmvi giá trị
3.1.3 So sánh
Trang 533 Scaling và Normalization
3.2 Normalization
Mục tiêu của normalization là biến đổi dữ liệu để đạt được một phân phối chuẩn
3.2.1 Standardization hay Z-score normalization
Phương pháp này rất hữu ích đối với các dữ liệu có giá trị ngoại lệ,đặc biệt khi ta không muốn loại bỏ hoàn toàn ảnh hưởng của chúng