lOMoARcPSD|59629529
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
NHẬP MÔN HỌC MÁY
Đ
T
I:
ỨNG DỤNG THUẬT TOÁN PHÂN CỤM KMEANS
CLUSTERING ĐỂ DỰ ĐOÁN NHÂN VẬT POKEMON
Sinh viên thực hiện
:
DƯƠNG ĐỨC ANH
PHẠM XUÂN CƯỜNG
NGUYỄN HỮU SƠN
Giảng viên hướng dẫn
:
VŨ VĂN ĐỊNH
Ngành
:
CÔNG NGHỆ THÔNG TIN
Chuyên ngành
:
CÔNG NGHỆ PHẦN MỀM
Lớp
:
D16CNPM5
Khóa
:
2021-2026
Hà Nội, tháng 12 năm 2024
PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:
lOMoARcPSD|59629529
Họ và tên
Chữ ký
Điểm
Dương Đức Anh
Phạm Xuân
Cường
Nguyễn Hữu Sơn
Giảng viên chấm:
Họ và tên
Ghi chú
Giảng viên chấm
1:
Giảng viên chấm
2:
MỤC LỤC
lOMoARcPSD|59629529
LỜI MỞ ĐẦU
Công nghệ ngày càng phổ biến và không ai có thể phủ nhận được tầm
quan trọng và những hiu quả mà nó đem lại cho cuộc sống chúng ta. Bất kỳ
trong lĩnh vực nào, sự góp mặt của trí tuệ nhân tạo sgiúp con người làm việc
hoàn thành tốt công việc hơn. gần đây, một thuật ngữ “machine learning”
rất được nhiều người quan tâm.Thay phải code phần mềm với cách thức
thủ công theo một bộ hướng dẫn cụ thể nhằm hoàn thành mt nhiệm vụ đề ra
thì máy sẽ tự “học hỏi” bằng cách sử dụng một lượng lớn dữ liệu cùng những
thuật toán cho phép nó thực hiện các tác vụ.
Đây là một lĩnh vực khoa học tuy không mới, nhưng cho thấy lĩnh vực
trí tuệ nhân tạo đang ngày càng phát triển thể tiến xa hơn trong tương
lai. Đồng thời, thời điểm này được xem một lĩnh vực “nóng” và dành rất
nhiều mối quan tâm để phát triển nó một cách mạnh mẽ, bùng nổ hơn.
Hiện nay, việc quan tâm machine learning càng ngày càng tăng lên
vì nhờ có machine learning giúp gia ng dung lượng lưu trữ các loại dữ liệu
sẵn, việc xử lý tính toán có chi phí thấp và hiệu quả hơn rất nhiều.
Những điều trên được hiểu là thể thực hiện tự động, nhanh chóng
để to ra những mô hình cho phép phân tích các dữ liệu có quylớn hơn
phức tạp hơn đồng thời đưa ra những kết quả một cách nhanh chính xác
hơn.
Chính sự hiệu quả trong công việc các lợi ích vượt bậc mà nó đem
lại cho chúng ta khiến machine learning ngày càng được chú trọng quan
tâm nhiều hơn. Vì vậy chúng em đã chọn đề tài ” ỨNG DỤNG THUẬT
TOÁN PHÂN CỤM KMEANS CLUSTERING ĐỂ DỰ ĐOÁN NHÂN VẬT
POKEMON”để làm báo cáo.
lOMoARcPSD|59629529
Chúng em xin chân thành gửi lời cảm ơn tới các thầy giáo trong
Trường Đại học Điện Lực nói chung các thầy giáo trong Khoa Công
nghệ thông tin nói riêng đã tận tình giảng dạy, truyền đạt cho chúng em những
kiến thức cũng như kinh nghiệm quý báu trong suốt quá trình học. Đặc biệt,
em gửi lời cảm ơn đến giảng viên Vũ Văn Định đã tận tình theo sát giúp đỡ,
trực tiếp chỉ bảo, hướng dẫn trong suốt quá trình nghiên cứu học tập của
chúng em.
lOMoARcPSD|59629529
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY
1.1. Khái niệm về học máy:
Học máy (Machine learning) mt lĩnh vực con của Trí tuệ nhân
tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính thể
học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách
ràng, cung cấp cho hệ thống khả năng tự động học hỏi và cải thiện hiệu suất,
độ chính xác dựa trên những kinh nghiệm từ dữ liệu đầu vào. Học máy tập
trung vào việc phát triển các phần mềm, chương trình máy tính thể truy cập
vào dữ liệu và tận dụng nguồn dữ liệu đó để tự học.
Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ
liệu sở lựa chọn các thuật phù hợp để phân tích dữ liệu. Đồng thời,
trước khi sử dụng, dữ liu phải sạch, không sai lệch không dữ liệu
giả.
Các nh học máy yêu cầu lượng dữ liệu đủ lớn để "huấn luyện"
đánh giá nh. Trước đây, các thuật toán học máy thiếu quyền truy cập
vào một lượng lớn dữ liệu cần thiết để mô hình hóa các mối quan hệ giữa các
dữ liu. Sự tăng trưởng trong dữ liệu lớn (big data) đã cung cấp các thuật toán
học máy với đủ dữ liệu để cải thiện độ chính xác của mô hình và dự đoán.
1.2. Phân nhóm các thuật toán học máy
1.2.1 Học có giám sát (Supervised Learning)
Là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để
suy luận ra quan hệ giữa đầu vào và đầu ra. Các dữ liệu này được gọi là dữ
liệu huấn luyện và chúng là cặp các đầu vào-đầu ra. Học có giám sát sẽ xem
xét các tập huấn luyện này để từ đó có thể đưa ra dự đn đầu ra cho 1 đầu
lOMoARcPSD|59629529
vào mới chưa gặp bao giờ. Ví dụ dự đoán giá nhà, phân loại email. Các mô
hình như mạng Nơ-ron, SVM, CNN,…
Hình 1.1. Mô hình học có giám sát
Supervised Learning thuât toán dự đoán đầu ra (outcome) của một
dữ liu mới (new input) dựa trên cặp (input, outcome) đã biết trước. Cặp
dữ liệu này còn đươc gi là data, label tức d liệu, nhãn. Supervised Learning
Là nhóm phổ biến nhất trong các thuật toán Machine learning.
1.2.2. Học phi giám sát (Unsupervised Learning)-UL
Khác với học có giám sát, học phi giám sát sử dụng những dữ liệu chưa
được gán nhãn từ tớc để suy luận. Phương pháp này thường được sử dụng
để tìm cấu trúc của tập dữ liu. Tuy nhiên lại không có phương pháp đánh g
được cấu trúc tìm ra được là đúng hay sai. Ví dụ như phân cụm dữ liệu, triết
xuất thành phần chính của một chất nào đó. K-mean Ứng dụng phổ biến nhất
của học không giám sát là gom cụm (cluster)
lOMoARcPSD|59629529
Hình 1.2. Mô hình học không giám sát
Trong thuật toán này, chúng ta không biết được dữ liệu đầu ra hay nhãn
chỉ dữ liệu đầu vào. Thuật toán Học không giám sát da vào cấu trúc
của dữ liệu để thực hiện một công việc nào đó, ví dụ như pn nhóm hoặc
giảm số chiều ca dữ liệu để thuận tiện trong việc lưu trữ và tính toán.
Một cách toán học, Học kng giám sát là khi chúng ta chỉ dữ liệu
vào X mà không biết nhãn Y tương ứng.
Sự khác nhau giữa học có giám sát và học không giám sát:
lOMoARcPSD|59629529
Hình 1.3: Sự khác biệt giữa 2 hình SL UL Học
giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học đầu vào và
đầu ra tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm thiểu
sai số lỗi (loss) của các dự đoán ti các vòng lặp huấn luyện. Sau quá trình
huấn luyện. hình sẽ có khả năng đưa ra dự đoán về đầu ra với một đầu vào
mới gặp (không có trong dữ liệu học). Nếu không gian đầu ra được biểu diễn
dứới dạng rời rạc, ta gọi đó bài toán phân loại (classification). Nếu không
gian đu ra được biểu diễn dưới dạng liên tục, ta gọi đó là bài tn hồi quy
(regression).
Học không giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu
học chỉ bao gồm đầu vào không đầu ra. hình sẽ được huấn luyện
cách để tìm cấu trúc hoặc mối quan hệ giữa các đầu vào. Một trong những
phương pháp học không giám sát quan trọng nhất phân cụm (clustering):
Tạo các cụm khác nhau với mỗi cụm biểu diễn một đặc trưng nào đó của dữ
liệu và phân các đầu vào mới vào các cụm theo các đặc tng của đầu vào đó.
Các phương pháp học không giám sát khác thể kể đến như: phát hiện điểm
bất thường (anomaly detection), Singular-value decomposition,…
lOMoARcPSD|59629529
1.2.3 Học tăng cường (reinforcement learning)
Phương pháp học tăng cường tập trung vào việc làm sao để cho 1 tác
tử trong môi trường thế hành động sao cho lấy được phần thưởng nhiều
nhất thể. Khác với học có giám sát nó không có cặp dliệu gán nhãn trước
làm đầu vào và cũng không có đánh giá các hành động là đúng hay sai.
1.2.4 Học bán giám sát (Semi-Supervised Learning)
Các bài toán khi chúng ta một lượng lớn dữ liệu X nhưng chỉ một
phần trong chúng được gán nn được gọi Semi-Supervised Learning.
Những bài tn thuộc nhóm này nằm giữa hai nhóm được nêu bên trên. Một
ví dụ điển hình của nhóm này là chỉ có một phần ảnh hoặc văn bản được gán
nhãn (ví dụ bức ảnh về người, đng vật hoặc các văn bản khoa học, chính trị)
phần lớn các bức ảnh/văn bản khác chưa được n nhãn được thu thập từ
internet.
Thực tế cho thấy rất nhiều các bài toán Machine Learning thuộc vào
nhóm này việc thu thp dữ liệu nhãn tốn rất nhiều thời gian và chi phí
cao. Rất nhiều loại dữ liệu thậm chí cần phải chuyên gia mới gán nhãn
được (ảnh y học chng hạn). Ngược lại, dữ liệu chưa có nhãn có thể được thu
thập với chi phí thấp từ internet.
1.3. Ứng dụng của học máy:
Nhiều hoạt động hàng ngày của chúng ta được trợ giúp bởi các thuật
toán machine learning, bao gồm:
Trong y tế: xác định bệnh lý của người bệnh mới dựa trên dữ liệu lịch sử của
các bệnh nhân có cùng bệnh cùng các đặc điểm đã được chữa khỏi trước
đây, hay xác định loại thuốc phù hợp
lOMoARcPSD|59629529
Trong lĩnh vực ngân hàng: xác định khả năng khách hàng chậm trả các khoản
vay hoặc rủi ro tín dụng do nợ xấu dựa trên phân tích Credit score; xác định
xem liệu các giao dịch có hành vi phạm tội, lừa đảo hay không.
Trong giáo dục: phân loại các học sinh theo hoàn cảnh, học lực để xem xem
cần hỗ trợ gì cho những học sinh ví dụ như hoàn cảnh sống khó khăn nhưng
học lực lại tốt.
Trong thương mại điện t: phân loại khách hàng theo sở thích cụ thể để hỗ tr
personalized marketing hay xây dựng hệ thống khuyến nghị, dựa trên dữ liệu
từ website, social media.
Trong kinh tế nói chung: giúp dự báo các sự kiện kinh tế trong tương lai, dự
báo tình hình thời tiết trong nông nghiệp, xác định xu hướng thị trường chứng
khoán để lên kế hoạch đầu tư thích hợp.
CHƯƠNG 2: THUẬT TOÁN K-MEANS CLUSTERING TRONG
BÀI TOÁN PHÂN CỤM
2.1 Tổng quan về thuật toán K-Means Clustering
Với thuật toán K-Means Clustering, chúng ta không biết nhãn (label)
của từng điểm dữ liệu. Mục đích làm thể nào để phân dữ liệu thành các cụm
(cluster) khác nhau sao cho dữ liu trong cùng một cụm tính cht giống
nhau. Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau
trong một không gian nào đó (không gian này có thể có rất nhiều chiều trong
trường hợp thông tin về một điểm dữ liệu là rất lớn). Hình bên dưới là mt ví
dụ về 3 cụm dữ liu (từ giờ tôi sẽ viết gọn là cluster).
lOMoARcPSD|59629529
Hình 2.1: Bài toán với 3 clusters
Giả sử mi cluster có một điểm đại diện (center) màu vàng. Và những
điểm xung quanh mỗi center thuộc vào cùng nhóm với center đó. Một cách
đơn giản nhất, xét một điểm bất kỳ, ta xét xem điểm đó gần với center nào
nhất thì nó thuộc về cùng nhóm với center đó.
2.2. Thuật toán K-Means Clustering:
2.2.1. Mô hình toán học:
Ta gọi điểm tại vị trí trung bình của tất cả các điểm dữ liệu trong một
cụm trung tâm cụm. Như vậy, nếu có K cụm thì sẽ có K trung tâm cụm và
lOMoARcPSD|59629529
mỗi trung tâm cụm sẽ nằm gần các điểm dữ liệu trong cụm tương ứng hơn các
trung tâm cụm khác. Trong hình ới đây, K = 3 và ta có 3 trung tâm cụm là
các điểm màu vàng.
Hình 2.2: Mô hình dữ liệu được phân cụm
Để phân cụm dữ liệu bằng K-Means Clustering, trước hết ta chọn K là
số cụm đphân chia chọn ngẫu nhiên K trong số m dữ liu ban đu làm
trung tâm cụm μ1, μ2, …, μK. Sau đó, với điểm dữ liệu x(i) ta sẽ gán nó cho
cụm c(i) là cụm có trung tâm cụm gần nó nhất.
lOMoARcPSD|59629529
Khi tất cả các điểm dữ liu đã được n về các cụm, bước tiếp theo
tính toán lại vị trí các trung tâm cụm bằng trung bình tọa độ các điểm dữ liệu
trong cụm đó.
với k1, k2, …, kn là chỉ số các dữ liệu thuộc cụm thứ k. Các bước trên
được lặp lại cho tới khi vị trí các trung tâm cụm không đổi sau một bước lặp
nào đó.
2.2.2. Độ chính xác của thuật toán:
Hàm mất mát của thuật toán K-Means Clustering đặc trưng cho độ
chính xác của sẽ càng lớn khi khoảng cách từ mỗi điểm dữ liệu tới trung
tâm cụm càng lớn.
2.2.3. Nghiệm của thuật toán K-Means Clustering:
Trong các bước của thuật toán, thực chất bước gán các điểm dữ liệu về
trung tâm cụm gần nhất bước thay đổi trung tâm cụm về vị trí trung bình
của các điểm d liệu trong cụm đều nhằm mục đích giảm hàm mất mát. Thuật
toán kết thúc khi vị trí các trung tâm cụm không đổi sau một bước lặp nào đó.
Khi đó hàm mất mát đạt giá trị nhỏ nhất.
Khi K càng nhỏ so với m, thuật toán càng dễ đi đến kết quả chưa phải
tối ưu. Điều này phụ thuộc vào cách chọn K trung tâm cụm ban đầu.
lOMoARcPSD|59629529
Để khắc phục điều này, ta cần lp lại thuật toán nhiều lần chọn
phương án có giá trị hàm mất mát nhỏ nhất.
2.2.4. Tóm tắt thuật toán:
Đầu vào: Dữ liệu XX và số lượng cluster cần tìm KK.
Đầu ra: Các center MM và label vector cho từng điểm dữ liệu YY.
Chọn KK điểm bất kỳ làm các center ban đầu.
Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất.
Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so vi
vòng lặp trước nó thì ta dừng thuật toán.
Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất
các các điểm dữ liệu đã được gán vào cluster đó sau bước 2.
Quay lại bước 2.
lOMoARcPSD|59629529
lOMoARcPSD|59629529
CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN K-MEANS
CLUSTERING
3.1. Dữ liệu:
3.1.1. Phát biểu bài toán:
Bài toán đưa ra những phân tích và trực quan hóa dữ liệu về các thuộc tính của các
Pokémon từ một tập dữ liệu CSV. Mục tiêu của bài toán là:
Phân loại các Pokémon thành các nhóm dựa trên các thuộc tính như Attack,
Defense, và HP.
Hiểu rõ hơn về sự phân bố của các Pokémon trong từng nhóm.
Trực quan hóa dữ liệu để cái nhìn tổng quan dễ hiểu về mối quan hệ
giữa các thuộc tính của các Pokémon.
Bài toán này giúp cho việc hiểu và phân tích dữ liệu về Pokémon một cách trực
quan và thú vị, có thể sử dụng để tìm ra các mẫu và đặc điểm phổ biến trong các
nhóm Pokémon khác nhau.
3.1.2. Yêu cầu:
- Lấy dữ liệu mô tả
- Trích chọn đặc trưng từ tập dữ liệu lấy được
- Xử lý, làm sạch dữ liệu
- Tiến hành phân cụm
- Dữ liệu hóa đồ thị
3.1.3. Bộ dữ liệu:
lOMoARcPSD|59629529
#: Số thứ tự của Pokémon.
Name: Tên của Pokémon.
Type 1: Loại chính của Pokémon.
Type 2: Loại phụ của Pokémon (có thể rỗng).
Total: Tổng điểm sức mạnh của Pokémon.
HP: Điểm máu của Pokémon.
Attack: Điểm tấnng của Pokémon.
Defense: Điểm phòng thủ của Pokémon.
Sp. Atk: Điểm tấn công đặc biệt ca Pomon.
Sp. Def: Điểm phòng thủ đặc biệt của Pokémon.
Speed: Tốc độ ca Pokémon.
Generation: Thế hệ ca Pokémon.
Legendary: Xác định liệu Pokémon phải huyền thoại hay không
(TRUE/FALSE).
Dữ liệu này cung cấp thông tin chi tiết về các thuộc tính của mỗi Pokémon, bao
gồm loại, điểm số, và các thuộc tính về sức mạnh và tốc độ.
3.1.4. Tiến hành phân cụm
- IMPORT THƯ VIỆN: import pandas as pd from sklearn.cluster import
KMeans import numpy as np
lOMoARcPSD|59629529
import matplotlib.pyplot as plt from
matplotlib.lines import Line2D from
scipy.spatial import ConvexHull
from scipy import interpolate
- ĐỌC FILE DỮ LIỆU CSV:
df = pd.read_csv('C:/1/NMHM/Pokemon.csv') - GIỮ LẠI NHỮNG DỮ LIỆU
CẦN THIẾT
types = df['Type 1'].isin(['Grass', 'Fire', 'Water'])
- BỎ NHỮNG DỮ LIỆU KHÔNG CẦN THIẾT
drop_cols = ['Type 1', 'Type 2', 'Generation', 'Legendary', '#']
- PHÂN THÀNH 2 CỤM ATTACK VÀ DEFENSE
lOMoARcPSD|59629529
from sklearn.cluster import KMeans import
numpy as np # k means kmeans =
KMeans(n_clusters=3, random_state=0)
df['cluster'] = kmeans.fit_predict(df[['Attack', 'Defense']])
# get centroids centroids =
kmeans.cluster_centers_ cen_x =
[i[0] for i in centroids] cen_y = [i[1]
for i in centroids]
## add to df df['cen_x'] = df.cluster.map({0:cen_x[0], 1:cen_x[1],
2:cen_x[2]}) df['cen_y'] = df.cluster.map({0:cen_y[0],
1:cen_y[1], 2:cen_y[2]})
# define and map colors colors = ['#DF2020',
'#81DF20', '#2095DF']
df['c'] = df.cluster.map({0:colors[0], 1:colors[1], 2:colors[2]})
- TRỰC QUAN HÓA CÁC CỤM BẰNG BIỂU ĐỒ
lOMoARcPSD|59629529
plt.scatter(df.Attack, df.Defense, c=df.c, alpha = 0.6, s=10)#s is size, c is color #
Visualize with size = Speed plt.scatter(df.Attack, df.Defense, c=df.c, s=df.Speed,
alpha = 0.6)
- PHÂN THÀNH 3 CỤM THEO ATTACK, DEFFENCE,HP
colors = ['#DF2020', '#81DF20', '#2095DF']

Preview text:

lOMoARcPSD| 59629529
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NHẬP MÔN HỌC MÁY
Đ TI:
ỨNG DỤNG THUẬT TOÁN PHÂN CỤM KMEANS
CLUSTERING ĐỂ DỰ ĐOÁN NHÂN VẬT POKEMON
Sinh viên thực hiện : DƯƠNG ĐỨC ANH PHẠM XUÂN CƯỜNG NGUYỄN HỮU SƠN
Giảng viên hướng dẫn : VŨ VĂN ĐỊNH Ngành :
CÔNG NGHỆ THÔNG TIN Chuyên ngành :
CÔNG NGHỆ PHẦN MỀM Lớp : D16CNPM5 Khóa : 2021-2026
Hà Nội, tháng 12 năm 2024 PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện: lOMoARcPSD| 59629529 Họ và tên Chữ ký Điểm Dương Đức Anh Phạm Xuân Cường Nguyễn Hữu Sơn Giảng viên chấm: Họ và tên Chữ ký Ghi chú Giảng viên chấm 1: Giảng viên chấm 2: MỤC LỤC lOMoARcPSD| 59629529 LỜI MỞ ĐẦU
Công nghệ ngày càng phổ biến và không ai có thể phủ nhận được tầm
quan trọng và những hiệu quả mà nó đem lại cho cuộc sống chúng ta. Bất kỳ
trong lĩnh vực nào, sự góp mặt của trí tuệ nhân tạo sẽ giúp con người làm việc
và hoàn thành tốt công việc hơn. Và gần đây, một thuật ngữ “machine learning”
rất được nhiều người quan tâm.Thay vì phải code phần mềm với cách thức
thủ công theo một bộ hướng dẫn cụ thể nhằm hoàn thành một nhiệm vụ đề ra
thì máy sẽ tự “học hỏi” bằng cách sử dụng một lượng lớn dữ liệu cùng những
thuật toán cho phép nó thực hiện các tác vụ.
Đây là một lĩnh vực khoa học tuy không mới, nhưng cho thấy lĩnh vực
trí tuệ nhân tạo đang ngày càng phát triển và có thể tiến xa hơn trong tương
lai. Đồng thời, thời điểm này nó được xem là một lĩnh vực “nóng” và dành rất
nhiều mối quan tâm để phát triển nó một cách mạnh mẽ, bùng nổ hơn.
Hiện nay, việc quan tâm machine learning càng ngày càng tăng lên là
vì nhờ có machine learning giúp gia tăng dung lượng lưu trữ các loại dữ liệu
sẵn, việc xử lý tính toán có chi phí thấp và hiệu quả hơn rất nhiều.
Những điều trên được hiểu là nó có thể thực hiện tự động, nhanh chóng
để tạo ra những mô hình cho phép phân tích các dữ liệu có quy mô lớn hơn và
phức tạp hơn đồng thời đưa ra những kết quả một cách nhanh và chính xác hơn.
Chính sự hiệu quả trong công việc và các lợi ích vượt bậc mà nó đem
lại cho chúng ta khiến machine learning ngày càng được chú trọng và quan
tâm nhiều hơn. Vì vậy chúng em đã chọn đề tài ” ỨNG DỤNG THUẬT
TOÁN PHÂN CỤM KMEANS CLUSTERING ĐỂ DỰ ĐOÁN NHÂN VẬT
POKEMON”để làm báo cáo. lOMoARcPSD| 59629529
Chúng em xin chân thành gửi lời cảm ơn tới các thầy cô giáo trong
Trường Đại học Điện Lực nói chung và các thầy cô giáo trong Khoa Công
nghệ thông tin nói riêng đã tận tình giảng dạy, truyền đạt cho chúng em những
kiến thức cũng như kinh nghiệm quý báu trong suốt quá trình học. Đặc biệt,
em gửi lời cảm ơn đến giảng viên Vũ Văn Định đã tận tình theo sát giúp đỡ,
trực tiếp chỉ bảo, hướng dẫn trong suốt quá trình nghiên cứu và học tập của chúng em. lOMoARcPSD| 59629529
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY
1.1. Khái niệm về học máy:
Học máy (Machine learning) là một lĩnh vực con của Trí tuệ nhân
tạo(Artificial Intelligence) sử dụng các thuật toán cho phép máy tính có thể
học từ dữ liệu để thực hiện các công việc thay vì được lập trình một cách rõ
ràng, cung cấp cho hệ thống khả năng tự động học hỏi và cải thiện hiệu suất,
độ chính xác dựa trên những kinh nghiệm từ dữ liệu đầu vào. Học máy tập
trung vào việc phát triển các phần mềm, chương trình máy tính có thể truy cập
vào dữ liệu và tận dụng nguồn dữ liệu đó để tự học.
Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ
liệu cơ sở và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời,
trước khi sử dụng, dữ liệu phải sạch, không có sai lệch và không có dữ liệu giả.
Các mô hình học máy yêu cầu lượng dữ liệu đủ lớn để "huấn luyện" và
đánh giá mô hình. Trước đây, các thuật toán học máy thiếu quyền truy cập
vào một lượng lớn dữ liệu cần thiết để mô hình hóa các mối quan hệ giữa các
dữ liệu. Sự tăng trưởng trong dữ liệu lớn (big data) đã cung cấp các thuật toán
học máy với đủ dữ liệu để cải thiện độ chính xác của mô hình và dự đoán.
1.2. Phân nhóm các thuật toán học máy
1.2.1 Học có giám sát (Supervised Learning)
Là phương pháp sử dụng những dữ liệu đã được gán nhãn từ trước để
suy luận ra quan hệ giữa đầu vào và đầu ra. Các dữ liệu này được gọi là dữ
liệu huấn luyện và chúng là cặp các đầu vào-đầu ra. Học có giám sát sẽ xem
xét các tập huấn luyện này để từ đó có thể đưa ra dự đoán đầu ra cho 1 đầu lOMoARcPSD| 59629529
vào mới chưa gặp bao giờ. Ví dụ dự đoán giá nhà, phân loại email. Các mô
hình như mạng Nơ-ron, SVM, CNN,…
Hình 1.1. Mô hình học có giám sát
Supervised Learning Là thuât toán dự đoán đầu ra (outcome) của một
dữ liệu mới (new input) dựa trên cặp (input, outcome) đã biết tư trước. Cặp
dữ liệu này còn đươc gọi là data, label tức dữ liệu, nhãn. Supervised Learning
Là nhóm phổ biến nhất trong các thuật toán Machine learning.
1.2.2. Học phi giám sát (Unsupervised Learning)-UL
Khác với học có giám sát, học phi giám sát sử dụng những dữ liệu chưa
được gán nhãn từ trước để suy luận. Phương pháp này thường được sử dụng
để tìm cấu trúc của tập dữ liệu. Tuy nhiên lại không có phương pháp đánh giá
được cấu trúc tìm ra được là đúng hay sai. Ví dụ như phân cụm dữ liệu, triết
xuất thành phần chính của một chất nào đó. K-mean Ứng dụng phổ biến nhất
của học không giám sát là gom cụm (cluster) lOMoARcPSD| 59629529
Hình 1.2. Mô hình học không giám sát
Trong thuật toán này, chúng ta không biết được dữ liệu đầu ra hay nhãn
mà chỉ có dữ liệu đầu vào. Thuật toán Học không giám sát dựa vào cấu trúc
của dữ liệu để thực hiện một công việc nào đó, ví dụ như phân nhóm hoặc
giảm số chiều của dữ liệu để thuận tiện trong việc lưu trữ và tính toán.
Một cách toán học, Học không giám sát là khi chúng ta chỉ có dữ liệu
vào X mà không biết nhãn Y tương ứng.
Sự khác nhau giữa học có giám sát và học không giám sát: lOMoARcPSD| 59629529
Hình 1.3: Sự khác biệt giữa 2 mô hình SL và UL Học có
giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu học có đầu vào và
đầu ra tương ứng đầu vào đó. Mô hình được huấn luyện bằng cách giảm thiểu
sai số lỗi (loss) của các dự đoán tại các vòng lặp huấn luyện. Sau quá trình
huấn luyện. mô hình sẽ có khả năng đưa ra dự đoán về đầu ra với một đầu vào
mới gặp (không có trong dữ liệu học). Nếu không gian đầu ra được biểu diễn
dứới dạng rời rạc, ta gọi đó là bài toán phân loại (classification). Nếu không
gian đầu ra được biểu diễn dưới dạng liên tục, ta gọi đó là bài toán hồi quy (regression).
Học không giám sát: Là cách huấn luyện một mô hình trong đó dữ liệu
học chỉ bao gồm đầu vào mà không có đầu ra. Mô hình sẽ được huấn luyện
cách để tìm cấu trúc hoặc mối quan hệ giữa các đầu vào. Một trong những
phương pháp học không giám sát quan trọng nhất là phân cụm (clustering):
Tạo các cụm khác nhau với mỗi cụm biểu diễn một đặc trưng nào đó của dữ
liệu và phân các đầu vào mới vào các cụm theo các đặc trưng của đầu vào đó.
Các phương pháp học không giám sát khác có thể kể đến như: phát hiện điểm
bất thường (anomaly detection), Singular-value decomposition,… lOMoARcPSD| 59629529
1.2.3 Học tăng cường (reinforcement learning)
Phương pháp học tăng cường tập trung vào việc làm sao để cho 1 tác
tử trong môi trường có thế hành động sao cho lấy được phần thưởng nhiều
nhất có thể. Khác với học có giám sát nó không có cặp dữ liệu gán nhãn trước
làm đầu vào và cũng không có đánh giá các hành động là đúng hay sai.
1.2.4 Học bán giám sát (Semi-Supervised Learning)
Các bài toán khi chúng ta có một lượng lớn dữ liệu X nhưng chỉ một
phần trong chúng được gán nhãn được gọi là Semi-Supervised Learning.
Những bài toán thuộc nhóm này nằm giữa hai nhóm được nêu bên trên. Một
ví dụ điển hình của nhóm này là chỉ có một phần ảnh hoặc văn bản được gán
nhãn (ví dụ bức ảnh về người, động vật hoặc các văn bản khoa học, chính trị)
và phần lớn các bức ảnh/văn bản khác chưa được gán nhãn được thu thập từ internet.
Thực tế cho thấy rất nhiều các bài toán Machine Learning thuộc vào
nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí
cao. Rất nhiều loại dữ liệu thậm chí cần phải có chuyên gia mới gán nhãn
được (ảnh y học chẳng hạn). Ngược lại, dữ liệu chưa có nhãn có thể được thu
thập với chi phí thấp từ internet.
1.3. Ứng dụng của học máy:
Nhiều hoạt động hàng ngày của chúng ta được trợ giúp bởi các thuật
toán machine learning, bao gồm:
• Trong y tế: xác định bệnh lý của người bệnh mới dựa trên dữ liệu lịch sử của
các bệnh nhân có cùng bệnh lý có cùng các đặc điểm đã được chữa khỏi trước
đây, hay xác định loại thuốc phù hợp lOMoARcPSD| 59629529
• Trong lĩnh vực ngân hàng: xác định khả năng khách hàng chậm trả các khoản
vay hoặc rủi ro tín dụng do nợ xấu dựa trên phân tích Credit score; xác định
xem liệu các giao dịch có hành vi phạm tội, lừa đảo hay không.
• Trong giáo dục: phân loại các học sinh theo hoàn cảnh, học lực để xem xem
cần hỗ trợ gì cho những học sinh ví dụ như hoàn cảnh sống khó khăn nhưng học lực lại tốt.
• Trong thương mại điện tử: phân loại khách hàng theo sở thích cụ thể để hỗ trợ
personalized marketing hay xây dựng hệ thống khuyến nghị, dựa trên dữ liệu từ website, social media.
• Trong kinh tế nói chung: giúp dự báo các sự kiện kinh tế trong tương lai, dự
báo tình hình thời tiết trong nông nghiệp, xác định xu hướng thị trường chứng
khoán để lên kế hoạch đầu tư thích hợp.
CHƯƠNG 2: THUẬT TOÁN K-MEANS CLUSTERING TRONG BÀI TOÁN PHÂN CỤM
2.1 Tổng quan về thuật toán K-Means Clustering
Với thuật toán K-Means Clustering, chúng ta không biết nhãn (label)
của từng điểm dữ liệu. Mục đích là làm thể nào để phân dữ liệu thành các cụm
(cluster) khác nhau sao cho dữ liệu trong cùng một cụm có tính chất giống
nhau. Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau
trong một không gian nào đó (không gian này có thể có rất nhiều chiều trong
trường hợp thông tin về một điểm dữ liệu là rất lớn). Hình bên dưới là một ví
dụ về 3 cụm dữ liệu (từ giờ tôi sẽ viết gọn là cluster). lOMoARcPSD| 59629529
Hình 2.1: Bài toán với 3 clusters
Giả sử mỗi cluster có một điểm đại diện (center) màu vàng. Và những
điểm xung quanh mỗi center thuộc vào cùng nhóm với center đó. Một cách
đơn giản nhất, xét một điểm bất kỳ, ta xét xem điểm đó gần với center nào
nhất thì nó thuộc về cùng nhóm với center đó.
2.2. Thuật toán K-Means Clustering:
2.2.1. Mô hình toán học:
Ta gọi điểm tại vị trí trung bình của tất cả các điểm dữ liệu trong một
cụm là trung tâm cụm. Như vậy, nếu có K cụm thì sẽ có K trung tâm cụm và lOMoARcPSD| 59629529
mỗi trung tâm cụm sẽ nằm gần các điểm dữ liệu trong cụm tương ứng hơn các
trung tâm cụm khác. Trong hình dưới đây, K = 3 và ta có 3 trung tâm cụm là các điểm màu vàng.
Hình 2.2: Mô hình dữ liệu được phân cụm
Để phân cụm dữ liệu bằng K-Means Clustering, trước hết ta chọn K là
số cụm để phân chia và chọn ngẫu nhiên K trong số m dữ liệu ban đầu làm
trung tâm cụm μ1, μ2, …, μK. Sau đó, với điểm dữ liệu x(i) ta sẽ gán nó cho
cụm c(i) là cụm có trung tâm cụm gần nó nhất. lOMoARcPSD| 59629529
Khi tất cả các điểm dữ liệu đã được gán về các cụm, bước tiếp theo là
tính toán lại vị trí các trung tâm cụm bằng trung bình tọa độ các điểm dữ liệu trong cụm đó.
với k1, k2, …, kn là chỉ số các dữ liệu thuộc cụm thứ k. Các bước trên
được lặp lại cho tới khi vị trí các trung tâm cụm không đổi sau một bước lặp nào đó.
2.2.2. Độ chính xác của thuật toán:
Hàm mất mát của thuật toán K-Means Clustering đặc trưng cho độ
chính xác của nó sẽ càng lớn khi khoảng cách từ mỗi điểm dữ liệu tới trung tâm cụm càng lớn.
2.2.3. Nghiệm của thuật toán K-Means Clustering:
Trong các bước của thuật toán, thực chất bước gán các điểm dữ liệu về
trung tâm cụm gần nhất và bước thay đổi trung tâm cụm về vị trí trung bình
của các điểm dữ liệu trong cụm đều nhằm mục đích giảm hàm mất mát. Thuật
toán kết thúc khi vị trí các trung tâm cụm không đổi sau một bước lặp nào đó.
Khi đó hàm mất mát đạt giá trị nhỏ nhất.
Khi K càng nhỏ so với m, thuật toán càng dễ đi đến kết quả chưa phải
tối ưu. Điều này phụ thuộc vào cách chọn K trung tâm cụm ban đầu. lOMoARcPSD| 59629529
Để khắc phục điều này, ta cần lặp lại thuật toán nhiều lần và chọn
phương án có giá trị hàm mất mát nhỏ nhất.
2.2.4. Tóm tắt thuật toán:
Đầu vào: Dữ liệu XX và số lượng cluster cần tìm KK.
Đầu ra: Các center MM và label vector cho từng điểm dữ liệu YY.
Chọn KK điểm bất kỳ làm các center ban đầu.
Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất.
Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so với
vòng lặp trước nó thì ta dừng thuật toán.
Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất
các các điểm dữ liệu đã được gán vào cluster đó sau bước 2. Quay lại bước 2. lOMoARcPSD| 59629529 lOMoARcPSD| 59629529
CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING 3.1. Dữ liệu:
3.1.1. Phát biểu bài toán:
Bài toán đưa ra những phân tích và trực quan hóa dữ liệu về các thuộc tính của các
Pokémon từ một tập dữ liệu CSV. Mục tiêu của bài toán là:
• Phân loại các Pokémon thành các nhóm dựa trên các thuộc tính như Attack, Defense, và HP.
• Hiểu rõ hơn về sự phân bố của các Pokémon trong từng nhóm.
• Trực quan hóa dữ liệu để có cái nhìn tổng quan và dễ hiểu về mối quan hệ
giữa các thuộc tính của các Pokémon.
Bài toán này giúp cho việc hiểu và phân tích dữ liệu về Pokémon một cách trực
quan và thú vị, có thể sử dụng để tìm ra các mẫu và đặc điểm phổ biến trong các nhóm Pokémon khác nhau. 3.1.2. Yêu cầu: - Lấy dữ liệu mô tả
- Trích chọn đặc trưng từ tập dữ liệu lấy được
- Xử lý, làm sạch dữ liệu - Tiến hành phân cụm
- Dữ liệu hóa đồ thị
3.1.3. Bộ dữ liệu: lOMoARcPSD| 59629529
#: Số thứ tự của Pokémon. Name: Tên của Pokémon.
Type 1: Loại chính của Pokémon.
Type 2: Loại phụ của Pokémon (có thể rỗng).
Total: Tổng điểm sức mạnh của Pokémon.
HP: Điểm máu của Pokémon.
Attack: Điểm tấn công của Pokémon.
Defense: Điểm phòng thủ của Pokémon.
Sp. Atk: Điểm tấn công đặc biệt của Pokémon.
Sp. Def: Điểm phòng thủ đặc biệt của Pokémon.
Speed: Tốc độ của Pokémon.
Generation: Thế hệ của Pokémon.
Legendary: Xác định liệu Pokémon có phải là huyền thoại hay không (TRUE/FALSE).
Dữ liệu này cung cấp thông tin chi tiết về các thuộc tính của mỗi Pokémon, bao
gồm loại, điểm số, và các thuộc tính về sức mạnh và tốc độ.
3.1.4. Tiến hành phân cụm
- IMPORT THƯ VIỆN: import pandas as pd from sklearn.cluster import KMeans import numpy as np lOMoARcPSD| 59629529
import matplotlib.pyplot as plt from
matplotlib.lines import Line2D from
scipy.spatial import ConvexHull from scipy import interpolate
- ĐỌC FILE DỮ LIỆU CSV:
df = pd.read_csv('C:/1/NMHM/Pokemon.csv') - GIỮ LẠI NHỮNG DỮ LIỆU CẦN THIẾT
types = df['Type 1'].isin(['Grass', 'Fire', 'Water'])
- BỎ NHỮNG DỮ LIỆU KHÔNG CẦN THIẾT
drop_cols = ['Type 1', 'Type 2', 'Generation', 'Legendary', '#']
- PHÂN THÀNH 2 CỤM ATTACK VÀ DEFENSE lOMoARcPSD| 59629529
from sklearn.cluster import KMeans import
numpy as np # k means kmeans =
KMeans(n_clusters=3, random_state=0)
df['cluster'] = kmeans.fit_predict(df[['Attack', 'Defense']]) # get centroids centroids =
kmeans.cluster_centers_ cen_x =
[i[0] for i in centroids] cen_y = [i[1] for i in centroids]
## add to df df['cen_x'] = df.cluster.map({0:cen_x[0], 1:cen_x[1],
2:cen_x[2]}) df['cen_y'] = df.cluster.map({0:cen_y[0], 1:cen_y[1], 2:cen_y[2]})
# define and map colors colors = ['#DF2020', '#81DF20', '#2095DF']
df['c'] = df.cluster.map({0:colors[0], 1:colors[1], 2:colors[2]})
- TRỰC QUAN HÓA CÁC CỤM BẰNG BIỂU ĐỒ lOMoARcPSD| 59629529
plt.scatter(df.Attack, df.Defense, c=df.c, alpha = 0.6, s=10)#s is size, c is color #
Visualize with size = Speed plt.scatter(df.Attack, df.Defense, c=df.c, s=df.Speed, alpha = 0.6)
- PHÂN THÀNH 3 CỤM THEO ATTACK, DEFFENCE,HP
colors = ['#DF2020', '#81DF20', '#2095DF']