Site icon saotuvi.com

Machine Learning là gì? Hướng dẫn Triển khai bài toán ML cơ bản

Trong kỷ nguyên công nghệ 4.0, Machine Learning không chỉ là một từ khóa “hot” mà đã trở thành nền tảng của nhiều ứng dụng từ nhận diện khuôn mặt, xử lý ngôn ngữ tự nhiên đến dự đoán xu hướng tài chính. Nhưng với rất nhiều thuật toán và kỹ thuật khác nhau, làm thế nào để chúng ta bắt đầu từ con số không?

Bài viết này sẽ giúp bạn hiểu rõ hơn về các thuật toán Machine Learning phổ biến và hướng dẫn bạn từng bước triển khai một bài toán cơ bản, từ khâu thu thập dữ liệu, xây dựng mô hình đến việc đánh giá kết quả. Hãy cùng khám phá thế giới đầy tiềm năng của Machine Learning và mở ra cánh cửa đến những ứng dụng thực tiễn mạnh mẽ.

1. Machine Learning là gì ?

Machine Learning (ML) hay Học máy thống kê là một nhánh của khoa học máy tính tập trung vào việc sử dụng dữ liệu và thuật toán để cho phép AI bắt chước cách học của con người, dần dần cải thiện độ chính xác của nó.

Theo Tom Mitchell trong cuốn sách “Machine Learning” xuất bản năm 1997, Machine Learning như 1 chương trình, nhiệm vụ của nó là thực hiện 1 nhiệm vụ T nào đó, khi thực hiện xong, ta thu được trải nghiệm E. Nhờ vào việc học hỏi trải nghiệm E, ta có thể thay đổi (hoặc không) để tiến tới thực hiện task T+1, và nhằm cải thiện hiệu suất P.

Ví dụ: AlphaGo – 1 chương trình máy tính chuyên để chơi cờ vây.

AlphaGo sẽ liên tục chơi (thực hiện nhiệm vụ T) để cập nhật kinh nghiệm E và nâng cao xác suất thắng P.

1.1 Quy trình triển khai thuật toán Machine Learning

Quy trình triển khai thuật toán Machine Learning thường bao gồm 6 bước như sau:

Bước 1: Thu thập dữ liệu (Gathering data/Data collection)

Bước 2: Tiền xử lý dữ liệu (Data preprocessing)

Bước 3: Phân tích dữ liệu (Data analysis)

Bước 4: Xây dựng mô hình máy học (Model building)

Bước 5: Huấn luyện mô hình (Model training)

Bước 6: Đánh giá mô hình (Model evaluation)

Trong số các bước này, thu thập dữ liệu, tiền xử lý và xây dựng bộ dữ liệu thường chiếm nhiều thời gian và công sức nhất. Đây là những bước cực kỳ quan trọng, quyết định đến hiệu quả của thuật toán máy học. Độ chính xác của kết quả phụ thuộc rất lớn vào lượng dữ liệu đầu vào.‌‌

1.2 Phân loại các phương pháp Machine Learning

1.2.1 Học có giám sát (Supervised Learning)

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ác 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.‌‌

Ví dụ: Trong nhận dạng chữ viết tay, ta có ảnh của hàng nghìn chữ số được viết bởi nhiều người khác nhau. Chúng ta đưa các bức ảnh này vào trong một thuật toán cụ thể và chỉ cho nó biết mỗi bức ảnh tương ứng với chữ số nào. Sau khi thuật toán tạo ra một mô hình, tức một hàm số mà đầu vào là một bức ảnh và đầu ra là một chữ số, sau đó khi nhận được một bức ảnh mới mà mô hình chưa nhìn thấy bao giờ, nó sẽ dự đoán bức ảnh đó chứa chữ số nào.                                                      

Ví dụ này khá giống với cách học của con người khi còn nhỏ. Ta đưa bảng chữ cái cho một đứa trẻ và chỉ cho chúng đây là chữ A, đây là chữ B. Sau một vài lần được dạy thì trẻ có thể nhận biết được đâu là chữ A, đâu là chữ B trong một cuốn sách mà chúng chưa nhìn thấy bao giờ.‌‌

1.2.2 Học không giám sát (Unsupervised Learning)

Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữ liệu đầu vào. Thuật toán unsupervised learning sẽ 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 (clustering) hoặc giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán.‌‌

Những thuật toán loại này được gọi là Unsupervised learning vì không giống như Supervised learning, chúng ta không biết câu trả lời chính xác cho mỗi dữ liệu đầu vào. Giống như khi ta học, không có thầy cô giáo nào chỉ cho ta biết đó là chữ A hay chữ B. Cụm không giám sát được đặt tên theo nghĩa này.‌‌

Ví dụ: Trong phân cụm khách hàng, chúng ta có dữ liệu đầu vào là thông tin về hành vi mua sắm của khách hàng như tần suất mua hàng, số tiền chi tiêu, loại sản phẩm đã mua. Mô hình phân chia khách hàng thanh các nhóm khác nhau dựa trên các đặc điểm tương tự, chẳng hạn nhóm khách hàng thường xuyên mua sắm, nhóm khách hàng mua hàng giá trị cao.

1.2.3 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 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.2.4 Học tăng cường (Reinforcement Learning)

Reinforcement learning là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the performance). Hiện tại, Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game Theory), các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.‌‌

Ví dụ: AlphaGo nổi tiếng với việc chơi cờ vây thắng cả con người. Cờ vây được xem là có độ phức tạp cực kỳ cao với tổng số nước đi là xấp xỉ 10761, so với cờ vua là 10120 và tổng số nguyên tử trong toàn vũ trụ là khoảng 1080!! Vì vậy, thuật toán phải chọn ra 1 nước đi tối ưu trong số hàng nhiều tỉ tỉ lựa chọn, và tất nhiên, không thể áp dụng thuật toán tương tự như IBM Deep Blue (IBM Deep Blue đã thắng con người trong môn cờ vua 20 năm trước).

Về cơ bản, AlphaGo bao gồm các thuật toán thuộc cả Supervised learning và Reinforcement learning. Trong phần Supervised learning, dữ liệu từ các ván cờ do con người chơi với nhau được đưa vào để huấn luyện. Tuy nhiên, mục đích cuối cùng của AlphaGo không phải là chơi như con người mà phải thậm chí thắng cả con người.

Vì vậy, sau khi học xong các ván cờ của con người, AlphaGo tự chơi với chính nó với hàng triệu ván chơi để tìm ra các nước đi mới tối ưu hơn. Thuật toán trong phần tự chơi này được xếp vào loại Reinforcement learning. ‌‌

2. Ứng dụng nổi bật của Machine Learning

3. Phân nhóm các thuật toán Machine Learning

Có hai cách phổ biến phân nhóm các thuật toán Machine Learning. Một là dựa trên phương thức học (Learning style), hai là dựa trên chức năng (Function) của mỗi thuật toán.

3.1 Phân nhóm dựa trên phương thức học

3.1.1 Các thuật toán Học có giám sát

Thuật toán học có giám sát còn được chia nhỏ ra thành 2 loại chính:

Microsoft có một ứng dụng dự đoán giới tính và tuổi dựa trên khuôn mặt. Phần dự đoán giới tính có thể coi là thuật toán Classification, phần dự đoán tuổi có thể coi là thuật toán Regression. Chú ý rằng phần dự đoán tuổi cũng có thể coi là Classification nếu ta coi tuổi là một số nguyên dương không lớn hơn 150, chúng ta sẽ có 150 class (lớp) khác nhau.

Các thuật toán Học có giám sát phổ biến như:

3.1.2 Các thuật toán Học không giám sát

Thuật toán học không giám sát còn được chia nhỏ thành 2 loại sau:

Các thuật toán Học không giám sát phổ biến như:

3.1.3 Các thuật toán Học bán giám sát

Các thuật toán Học bán giám sát phổ biến như:

3.1.4 Các thuật toán Học tăng cường

Các thuật toán Học tăng cường phổ biến như:

3.2 Phân nhóm dựa trên chức năng

3.2.1 Regression Algorithms

3.2.2 Classification Algorithms

3.2.3 Instance-based Algorithms

3.2.4 Regularization Algorithms

3.2.5 Bayesian Algorithms

3.2.6 Clustering Algorithms

3.2.7 Artificial Neural Network Algorithms

3.2.8 Dimensionality Reduction Algorithms

3.2.9 Ensemble Algorithms

4. Hướng dẫn Triển khai bài toán Machine Learning cơ bản

Bộ dữ liệu Iris là một trong những bộ dữ liệu phổ biến nhất trong lĩnh vực Machine Learning và thống kê. Nó được sử dụng để giải quyết các bài toán phân loại và minh họa các thuật toán học máy. Bộ dữ liệu này bao gồm thông tin về ba loại hoa Iris: Iris-setosa, Iris-versicolor, và Iris-virginica. Mỗi loại có 50 mẫu, tổng cộng là 150 mẫu.

Mỗi mẫu bao gồm bốn đặc trưng (feature) đo lường về hình thái của hoa:

Cột target biểu thị nhãn mục tiêu, đại diện cho loại hoa Iris tương ứng. Các giá trị nhãn mục tiêu là số nguyên từ 0 đến 2, tương ứng với ba loại hoa: 0: Iris-setosa, 1: Iris-versicolor, 2: Iris-virginica‌‌.

Bộ dữ liệu này giúp minh họa khả năng phân loại dựa trên các đặc trưng của hoa, và thường được sử dụng để thử nghiệm các thuật toán phân loại như K-Nearest Neighbors, Support Vector Machine, và Decision Tree. Dữ liệu này đã được xử lý sẵn, không có giá trị thiếu, giúp người dùng dễ dàng tập trung vào việc xây dựng và đánh giá mô hình.‌‌

Để triển khai một bài toán Machine Learning cơ bản, có thể thực hiện theo 6 bước sau:

Bước 1: Thu thập dữ liệu

Python

import pandas as pd from sklearn.datasets
import load_iris 
# Sử dụng bộ dữ liệu Iris có sẵn 
iris = load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
data['target'] = iris.target 
print("Dữ liệu Iris ban đầu:")
print(data.head()) 

Bước 2: Tiền xử lý dữ liệu

Python

# Không cần trích xuất thêm vì đã có sẵn 
features = data.iloc[:, :-1]  
# Các cột đặc trưng 
labels = data['target']       # Nhãn mục tiêu 

Python

# Kiểm tra và xử lý giá trị thiếu
print("nKiểm tra giá trị thiếu:")
print(data.isnull().sum())
# Bộ dữ liệu Iris không có giá trị thiếu
# Ví dụ: chuẩn hóa tên cột (tùy chọn) 
data.columns = [col.replace(' ', '_') for col in data.columns]

Python

from sklearn.preprocessing import StandardScaler
# Chuẩn hóa đặc trưng scaler = StandardScaler()
features_normalized = scaler.fit_transform(features)

Bước 3: Phân tích dữ liệu

Python

import matplotlib.pyplot as plt
import seaborn as sns
# Phân tích dữ liệu với biểu đồ sns.pairplot(pd.DataFrame(features_normalized, columns=iris.feature_names), diag_kind='kde')
plt.suptitle('Phân tích đặc trưng Iris', y=1.02)
plt.show()

‌ Bước 4: Xây dựng mô hình Machine Learning

Python

from sklearn.model_selection import train_test_split 
from sklearn.svm import SVC
# Chia tập dữ liệu thành tập huấn luyện và tập kiểm tra 
X_train, X_test, y_train, y_test = train_test_split(features_normalized, labels, test_size=0.2, random_state=42)
# Xây dựng mô hình máy học (Support Vector Machine) 
model = SVC(kernel='linear') 

Bước 5: Huấn luyện mô hình

Python

# Huấn luyện mô hình với tập huấn luyện
model.fit(X_train, y_train)

Bước 6: Đánh giá mô hình

Python

from sklearn.metrics import classification_report, accuracy_score 
# Dự đoán trên tập kiểm tra 
y_pred = model.predict(X_test) 
# Đánh giá độ chính xác 
accuracy = accuracy_score(y_test, y_pred)
print(f"nĐộ chính xác của mô hình: {accuracy * 100:.2f}%")
# Báo cáo phân loại chi tiết 
print("nBáo cáo phân loại:")
print(classification_report(y_test, y_pred, target_names=iris.target_names)) 

5. Kết luận

Machine Learning không còn là một lĩnh vực xa vời mà đã dần trở thành công cụ mạnh mẽ trong việc giải quyết nhiều vấn đề thực tiễn. Qua bài viết này, chúng ta đã cùng nhau tìm hiểu những thuật toán quan trọng và cách triển khai một bài toán Machine Learning cơ bản. ‌‌

Dù bạn mới bắt đầu hay đã có kinh nghiệm, việc hiểu rõ các bước từ thu thập dữ liệu, xử lý, lựa chọn mô hình cho đến đánh giá hiệu quả đều là nền tảng quan trọng để xây dựng những ứng dụng thành công. Hãy bắt đầu với những bài toán nhỏ, nâng cao kỹ năng của mình, và không ngừng khám phá những tiềm năng to lớn mà Machine Learning mang lại trong tương lai.

Bài viết liên quan:

Exit mobile version