Professional Documents
Culture Documents
Báo cáo học máy 1
Báo cáo học máy 1
Phạm Ngọc Vũ
1
CHƯƠNG 1. TỔNG QUAN VỀ HỌC MÁY
2
CNN,…
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
3
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)
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:
4
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, …
5
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.
6
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.
7
CHƯƠNG 2 THUẬT TOÁN K-MEANS CLUSTERING TRONG BÀI TOÁN
PHÂN CỤM
8
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 đó.
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à 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.
9
Để 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.
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 đó.
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.
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.
10
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.
Để 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.
11
CHƯƠNG 3 ỨNG DỤNG THUẬT TOÁN K-MEANS CLUSTERING
3.1.3. Bộ dữ liệu:
Nguồn: https://www.kaggle.com/uciml/red-wine-quality-cortez-et-al-2009
Bộ dữ liệu bao gồm các đặc trưng là các nồng độ các thành phần ảnh hưởng
đển chất lượng của rượu, bao gồm:
- fixed acidity: độ acid cố định
- volatile acidity: độ acid dễ bay hơi
- citric acid: nồng độ citric acid – được dùng để thêm độ tươi và hương vị
cho rượu vang
- residual sugar: lượng đường còn dư lại sau khi dừng lên men, thường lớn
hơn 1 gr/liter
- chlorides: độ mặn của rượu
- free sulfur dioxide: lượng chất SO2 còn tồn tại ở trạng thái cân bằng giữa
phân tử SO2 và bisulfite ion, nó ngăn cản vi sinh vật và sự oxi hóa ở rượu
- total sulfur dioxide: số lượng các dạng S02 tự do và ràng buộc; ở nồng độ
thấp, SO2 hầu như không thể phát hiện được trong rượu vang, nhưng ở nồng độ
SO2 tự do trên 50 ppm, SO2 trở nên rõ ràng trong mũi và mùi vị của rượu.
- density: tỉ trọng của nước
- pH: là thước đo của tính axit và bazo trên thang điểm 0 -14
12
- sulphates: một chất phụ gia rượu vang có thể góp phần vào mức khí sulfur
dioxide (S02), hoạt động như một chất chống vi khuẩn và chất chống oxy hóa
- alcohol: nồng độ cồn
- quality: chất lượng (là kết quả của một số mẫu rượu được đánh giá dựa trên
vị giác của người thử rượu, tuy nhiên bài toán phân cụm không cần đến đặc trưng
này)
for column in df.columns:
try:
df[column] = max_min_normalize(df[column])
except ZeroDivisionError:
df[column] = 0
clr = KMeans(n_clusters = 10,init = 'k-means++',random_state = 6)
clr.fit(df)
labels = clr.predict(df)
centroid_labels = clr.predict(clr.cluster_centers_)
predicted_df = pd.DataFrame(data = df,columns = ['PCA1','PCA2'])
predicted_df['Cluster'] = labels
centroid_df = pd.DataFrame(data = clr.cluster_centers_,columns = ['PCA1','PCA2'])
centroid_df['Cluster'] = centroid_labels
plt.scatter(predicted_df['PCA1'],predicted_df['PCA2'],c = labels,alpha = 0.5)
plt.scatter(centroid_df['PCA1'],centroid_df['PCA2'],marker = 'D',s = 100,c = cent
roid_labels)
plt.show()
14
Hình 3.2: Hình ảnh dữ liệu sau khi được phân cụm trên đồ thị
15
3.1.3. Bộ dữ liệu:
Nguồn: https://www.kaggle.com/residentmario/ramen-ratings
Bộ dữ liệu bao gồm các đặc trưng là các thông tin về mì ramen:
- Review: số thứ tự review
- Brand: Hãng sản xuất mì ramen
- Variety: Mô tả chung về mì ramen
- Style: Kiểu phục vụ (được đựng trong bát, khay, …)
- Country: quốc gia mà món đó được bán
- Star: Số sao mà món đó đạt được
- Top Ten: Điểm rating trên thang điểm 10 của món mì đó (tuy nhiên bài
toán phân cụm nên đặc trưng này bị lược bỏ)
16
rating = pd.read_csv('ramen-ratings.csv')
- Đặc trưng Stars có những giá trị ‘Unrated’ và vì giá trị Stars có ảnh hưởng lớn
đến kết quả phân cụm nên thay vì bỏ, gán cho những dữ liệu đó giá trị trung bình
Stars của toàn bộ dữ liệu
def tinh_trung_binh_star(column):
total = 0
for value in column:
total += float(value)
average = total/len(column)
return average
star_average = tinh_trung_binh_star(rating['Stars'].drop(rating[rating['Stars'] =
= 'Unrated'].index))
rating['Stars'] = rating['Stars'].apply(lambda x: star_average if x == 'Unrated'
else x)
rating['Stars'] = rating['Stars'].astype(float)
17
except ZeroDivisionError:
rating[column] = 0
TIẾN HÀNH PHÂN CỤM VÀ BIỂU DIỄN DỮ LIỆU ĐƯỢC PHÂN CỤM (2D):
rating = PCA(2).fit_transform(rating)
df = pd.DataFrame(data = rating,columns = ['PCA1','PCA2'])
print('-----Du lieu sau khi normalize-----\n',df.head(),'\n')
#Tao model
clr = KMeans(n_clusters = 10,init = 'k-means++',random_state = 6)
clr.fit(rating)
cluster_predicted = clr.predict(rating)
df['Cluster'] = cluster_predicted
print('-----Ket qua phan cum-----\n',df.head(),'\n')
print('-----Centroid-------\n',clr.cluster_centers_,'\n')
centroid_labels = clr.predict(clr.cluster_centers_)
centroid_df = pd.DataFrame(data = clr.cluster_centers_,columns = ['PCA1','PCA2'])
centroid_df['Cluster'] = centroid_labels
print('-----Ket qua phan cum cho centroid-----\n',centroid_df,'\n')
plt.scatter(df['PCA1'],df['PCA2'],c = cluster_predicted,s = 10)
plt.scatter(centroid_df['PCA1'],centroid_df['PCA2'],marker = 'D',s = 100,c = cent
roid_labels)
plt.title('K-means Clustering 2D')
plt.show()
18
Hình 3.5: Hình ảnh dữ liệu sau khi được phân cụm trên đồ thị 2D
TIẾN HÀNH PHÂN CỤM VÀ BIỂU DIỄN DỮ LIỆU ĐƯỢC PHÂN CỤM (3D):
rating = PCA(3).fit_transform(rating)
df = pd.DataFrame(data = rating,columns = ['PCA1','PCA2','PCA3'])
print('-----Du lieu sau khi normalize-----\n',df.head(),'\n')
#Tao model
clr = KMeans(n_clusters = 10,init = 'k-means++',random_state = 6)
clr.fit(rating)
cluster_predicted = clr.predict(rating)
df['Cluster'] = cluster_predicted
print('-----Ket qua phan cum-----\n',df.head(),'\n')
print('-----Centroid-------\n',clr.cluster_centers_,'\n')
centroid_labels = clr.predict(clr.cluster_centers_)
centroid_df = pd.DataFrame(data = clr.cluster_centers_,columns = ['PCA1','PCA2','
PCA3'])
centroid_df['Cluster'] = centroid_labels
print('-----Ket qua phan cum cho centroid-----\n',centroid_df,'\n')
19
#Data Visualize
ax = plt.axes(projection = '3d')
ax.scatter3D(df['PCA1'],df['PCA2'],df['PCA3'],c = cluster_predicted)
ax.scatter3D(centroid_df['PCA1'],centroid_df['PCA2'],centroid_df['PCA3'],marker =
'D',s = 50,c = centroid_labels)
plt.title('Kmean Clustering 3D')
plt.show()
Hình 3.6: Hình ảnh dữ liệu sau khi được phân cụm trên đồ thị 3D
20
TÀI LIỆU THAM KHẢO
21