-
supervised learning
-
unsupervised learning
-
neutral network & LSTM
-
time series
-
Kết nối giao diện người dùng với AI và publish lên thành web-app responsive
-
Nhằm mục đích tăng tốc tính toán để mô hình có thể học trên tập dữ liệu lớn
Có 2 trường phái xử lý dữ liệu
-
xử lý bằng big data (tập hợp sức mạnh của nhiều phần cứng lại)
-
tăng tốc tính toán (sử dụng CPU)
- Ở industry practice thì qtam đến yếu tố interactive and reliability
-
phải giái thích đc vì sao mô hình lại đưa ra quyết định như vậy. dựa trên thông tin và gợi ý gì.
-
ví dụ: fraud detection -> ví dụ khách hàng sử dụng mô hình không đc như ý gây ra những thiệt hại. AI không thể tự chịu trách nhiệm. Nhiệm vụ của chúng ta là đưa ra lời gt cho khách hàng
-
Hệ thống khuyến nghị sản phẩm, tự động đề xuất cho kh những sp phù hợp
-
build chatbot = chatgpt
-
Case study: có 1 tập data set liên quan tới vấn đề có thật
-
Portfolio: small story telling (ex: tập dataset về khách hàng, sau khi phân tích thì kết quả phân tích phải đc sử dụng để phân loại khách hàng)
-
có điểm cộng khi tham gia đầy đủ vào các lớp học. có điểm engagement
- Machine learning và AI khác nhau ntn?
AI là trí tuệ nhân tạo, là hệ thống máy móc có suy nghĩ như con ngừoi. Machine learning là máy móc để tạo ra AI
2 hướng tiếp cận: instruction (traditional) và data driven (đây là hướng tiếp cận của machine learning)
- Vì sao để đào tạo AI có nhiều phương pháp nhưng vào ngày nay thì machine learning lại phổ biến hơn?
PP cổ điển: Khi chúng ta triển khai thực tế thì bảng hướng dẫn không thể bao gồm tất cả các tình huống xảy ra trong thực tế -> khi AI gặp tình huống k có trong tập hướng dẫn này thì sẽ bị đứng im. (Những pp cổ điển có tính tổng quát hoá generalization không cao
PP hiện tại: data nhiều -> mô hình phân tích càng chính xác-> phân tích đc nhiều tình huống mà chúng ta không nghĩ ra
-
Phầm lớn các bài toán trong ML tiếp cận theo hướng thống kê xác xuất hoặc hướng đại số tuyến tính
-
Deep learning là một field ngách của ML sử dụng mô hình kiến trúc nơ rong network đa lớp (vd: deep fake, chat gpt,..)
hidden pattern là những thông tin ẩn mà chúng ta thu thập đc trong qtrinh ML
1. supervised learning: học có giám sát
– Given: training data + desired outputs (labels)
thường thì supervised learning sẽ đưa ra kết quả chính xác hơn
-
Thường sẽ có 2 dạng thuật toán trong học có giám sát là Regression(đầu ra y là biến continous có thể có vô số giá trị), Classification(đầu ra y là biến categorical hữu hạn các giá trị có thể có)
-
Regression là bài toán dự đoán 1 giá trị
VD về bài toán Regression: dự đoán giá nhà, dự đoán điểm của sinh viên,...
VD về bài toán Classification: phân biệt 1 email là spam hay k spam, phân biệt review positive/negative
2. unsupervised learning: học không giám sát
– Given: training data (without desired outputs)
dữ liệu chưa đc đánh nhãn, dữ liệu mà chính chúng ta cũng chưa đưa ra lời giải thích dc (ví dụ như khám phá sao hoả
VD: sử dụng clustering(customer segmentation, market segmentation, social network analysis,..)
3. semi-supervised learning: học bán giám sát
– Given: training data + a few desired outputs
4. reinforcement learning
– Rewards from sequence of actions
ML is used when:
• Human expertise does not exist (navigating on Mars)
• Humans can’t explain their expertise (speech recognition)
ML có thể đưa ra được lời giải thích cho những vấn đề con người không thể giải thích
• Models must be customized (personalized medicine)
• Models are based on huge amounts of data (genomics)
-
Choose the training experience (có đầy đủ data)
-
Choose exactly what is to be learned (xác định rõ ràng đầu ra cần phải là gì để xác định chọn mô hình gì)
- Tập train và tập test phải có cùng 1 distribution thì mô hình mới có kq dự đoán tốt nhất được
-
Không đủ số lượng dữ liệu đào tạo (training data)
-
Dữ liệu đào tạo không đại diện (nonrepresentative)
sampling bias (xảy ra khi mẫu được chọn không đại diện cho tổng thể, dẫn đến các kết quả nghiên cứu hoặc dự đoán bị sai lệch), survival bias
- Dữ liệu có chất lượng kém (Poor-Quality Data)
missing data, irrelevant feature, duplicate
-
Thuộc tính không liên quan (Irrelevant Feature)
-
Overfitting dữ liệu huấn luyện: train tốt test lỏm
mô hình sensitive to noise, mức chênh lệch giữa dự đoán và thực tế rất lớn
Nguyên nhân: Điều này xảy ra khi tập dữ liệu huấn luyện có nhiễu (noise), hay mô hình quá phức tạp, tức là có quá nhiều tham số so với số dữ liệu quan sát được (thể hiện). Chính nhiễu đã gây tác động xấu tới quá trình dự đoán của mô hình với dữ liệu kiểm tra.
Cách sửa: Giảm nhiểu trong dữ liệu đào tạo, đơn gỉan hoá mô hình
- Underfitting dữ liệu huấn luyện: train lỏm test lỏm
Nguyên nhân: Điều này xảy xa khi mô hình đang xây dựng quá đơn giản so với tập dữ liệu.
bias là độ lệch giữa dự đoán của mô hình machine learning đưa ra so với thực tế, variance là độ phân tán của dữ liệu
bias và variance có tính trade off
- Sample (mẫu): row, record, example, instance, observation
-
variable(biến): attribute, field, feature, column, dimension
-
Data type (kiểu dữ liệu):
- Có khá nhiều nguồn có thể nhận dữ liệu (miễn phí/ trả phí) như:
UC Irvine Machine Learning Repository
Kaggle datasets
Amazon's AWS datasets
Wikipedia's list of Machine Learning datasets
Python, Scikit-learn
https://monkeylearn.com/blog/what-is-tf-idf/?authuser=0
https://machinelearningcoban.com
-
p(A): xác xuất diễn ra sự kiện A
-
p(A/B): xác xuất có điều kiện A xảy ra, giả sử rằng B đã done (conditional probility)
-
p(A,B): xác xuất để A và B xảy ra đồng thời
- Classification là Supervised
-
hoạt động khi biến output là biến categorical
-
trong trường hợp biến output là continous thì phỉa thay bằng
-
text classification (vd: phân loại bình luận, lọc thư rác,...)
-
Bayesian Classification
-
handwritten digit recognition
- Khuyết điểm:
Trong thực tế, giả định này thường không đúng vì các đặc trưng có thể có mối quan hệ phụ thuộc lẫn nhau.
Chỉ cần 1 cái bằng không thì kết quả tổng thể sẽ bị sai dù đã có cơ chế Laplace smoothing
Không xem xét và không coi trọng trật tự các từ trong câu (do thuật toán có tính giao hoán)
khi chúng ta dự đoán 1 mẫu chưa từng tồn tại trong data set thì sẽ ra kq = 0. Chúng ta sẽ cố gắng khắc phục bằng cơ chế Laplace smoothing
Bước 1: EDA
- data, bài toán dễ hay khó
Bước 2: Huấn luận mô hình trên tập trainning
Bước 3: Test
- Xem phân phối nhãn .valuecounts -> có thể visualize thấy đc dữ liệu balanced/imbalanced
Nếu imbalanced thì phải tìm cách khắc phục vì sẽ gây ra model bias
- xem xét dữ liệu trùng .duplicated
trong trường hợp bị duplicated , xem xét thêm nhãn của nó có consistant với nhau không, nếu chúng consistant với nhau thì nên giữ lại
-
xem statistic của từng mẫu
-
showing word cloud
-
import nltk là package xử lý ngôn ngữ tự nhiên
-
Chuyển dữ liệu từ text thành bảng số để mô hình có thể đọc và hiểu bằng CountVectorizer
Lưu ý
ở tập train dùng fit transfrom , tập test dùng transform
nếu dùng fit trên tập test thì sẽ bị trường hợp bias và data leaked
-
from sklearn.naive_bayes import MultinomialNB
-
from sklearn.feature_extraction.text import TfidfVectorizer (đổi từ CountVectorizer -> TfidfVectorizer)
-
kỹ thuật TF-IDF (TF-IDF cao có nghĩa là 1 từ xuất hiện nhiều lần trong văn bản hiện tại, và xuất hiện rất ít trong những văn bản khác -> đó thường là từ đặc trưng của chuyên ngành đó)
-
1 từ có TF-IDF càng cao thì càng là từ quan trọng và đặc trưng
Giả sử trong các review tích cực, từ "good" và "excellent" xuất hiện thường xuyên, trong khi trong review tiêu cực, từ "bad" và "terrible" lại phổ biến hơn.
TF-IDF sẽ giúp mô hình Naive Bayes nhận ra rằng "good" và "excellent" quan trọng hơn "the" hoặc "is" trong việc phân loại review thành tích cực, và tương tự với "bad" và "terrible" trong review tiêu cực.
https://www.gradio.app/guides/quickstart?authuser=1
https://www.mdpi.com/2227-7080/9/3/52?authuser=1
K-Nearest Neighbors (KNN) là một thuật toán thuộc nhóm Supervised Learning được sử dụng cho classification và regression.
Với classification, ouput là class dựa trên KNN trong training data. Với regression, output là trung bình các giá trị của target variable dựa trên KNN trong training data
-
Regression analysis là một dạng của kỹ thuật mô hình tiên đoán (predictive modelling technique)
-
dự đoán ra output là giá trị thật thuộc R, có thể có vô số các giá trị có thể có
-
cần data đã đc lable sẵn
-
predict: dự đoán -> bao gồm tất cả các dự đoán
-
forecast: dự báo, tiên đoán -> dự báo những gì chưa xảy ra
- dựa trên quy tắc major voting (đi theo số đông)
Q1: k = ? thì tốt?
-
giá trị k nhỏ sẽ gây ra overfitting. Vì chỉ dựa trên điểm gần nhất để đưa ra dự đoán -> chỉ cần một điểm dữ liệu lạ hoặc nhiễu là kết quả dự đoán có thể bị ảnh hưởng mạnh
-
chọn k phải là số lẻ
-
k != 1, k != N
-
phải khảo sát k = (3,5,7,...) -> giá trị nào tốt trên tập validation thì chọn
-
tìm optimal k: khảo sát trên 1 tập k và với mỗi giá trị k ghi lại train error và test error
Q2: phép đo distance có đk nào không?
-
gặp KNN thì phải scale dữ liệu (biến continous) (để đảm bảo rằng tất cả các đặc trưng được đối xử công bằng trong quá trình tính toán khoảng cách, từ đó giúp thuật toán phân loại chính xác hơn. Nếu bỏ qua bước này, các đặc trưng với giá trị lớn hơn sẽ chi phối kết quả và làm cho mô hình kém hiệu quả.)
-
biến categorical thì làm như sau
Ưu điểm
- có thể tự viết công thức tính khoảng cách, miễn là thoả mãn 3 điều kiện sau
pt tính kcach khi tính khoảng cách giữa 2 điểm trùng nhau (A và chính nó) thì kết quả trả và phải bằng 0
nguyên tắc đối xứng: dA,B = dB,
positive: dA>=0
Khuyết điểm
- cruise of high dimensionality
khi khảo sát 1 tập dữ liệu có quá nhiều biến thì Độ chính xác của KNN có thể bị suy giảm nghiêm trọng với dữ liệu kích thước cao do có rất ít sự khác biệt giữa hàng xóm gần nhất và xa nhất. -> có thể làm cho mô hình KNN hoạt động không tốt
- ảnh hưởng bởi data imbalance
- cải thiện bằng cách tăng chất lượng dataset (generate/collect, crawl dữ liệu, synthetic,...)
synthetic là sinh ra mẫu ão, hay còn gọi là augmentic đối với mẫu ảnh (ví dụ có thể flip, rotate lại độ để add vô dataset ban đầu để làm cho data set này tăng lên
https://www.kaggle.com/datasets/crawford/emnist?select=emnist-mnist-test.csv
- đạo hàm là rate of change
-
Thuật toán này dùng để tối ưu hoá 1 hàm số nào đó bằng cách sử dụng đạo hàm. Mục tiêu của Gradient Descent là tìm giá trị tối thiểu của một hàm mất mát (loss function) bằng cách điều chỉnh các tham số của mô hình (ví dụ như các trọng số trong mạng nơ-ron).
-
Gradient descent là xương sống của các thuật toán Machine Learning.
bước 3: update trọng số a và b sử dụng công thức sau
Cost (loss) function
- đo mức độ sai khác mà mô hình dự đoán so với giá trị thật. 2 trọng số a và b cần tìm là tại 2 trọng số đó giá trị của hàm cost function |y'-y|^2 là nhỏ nhất. lúc đó sai số của mô hình đưa ra cũng là nhỏ nhất. bài toán trở thành bài toán tìm a và b sao cho hàm số đạt GTNN
- α là learning rate sẽ có ảnh hưởng đến tốc độ trượt xuống đáy
learning rate quá nhỏ sẽ tốn thời gian lâu để tìm ra điểm cực tiểu của mô hình
learning rate quá lớn sẽ có khả năng đi lố -> bỏ qua điểm cực tiểu
-
Bài toán regression là bài toán đoán ra một output y nào đó có vô vàn giá trị thật (giá nhà, dự đoán nhu cầu của sản phẩm,..)
-
không dùng accuracy scrore để đánh giá hiệu quả của mô hình regression.
thay vào đó dùng các phép đo sau đây để đánh giá:
-
tuy nhiên, 2 metrics này có 1 vấn đề đó là sẽ không chính xác đối với những bài toán có đơn vị khômg đồng nhất và range không khớp với nhau.
-
MSE, MAE chỉ dùng để so sánh sai số tuyệt đối
Những phép đo dựa trên giá trị phần trăm sẽ không bị ảnh hưởng
- Mean absolute percentage error
-
Thuật toán cơ bản thuộc nhóm Supervised Learning (Học có giám sát).
-
Được sử dụng rất rộng rãi trong Regression Analysis (Phân tích hồi quy).
-
Mô hình được “xây dựng” bằng cách sử dụng phương pháp Bình phương tối thiểu (Least Squares method).
phuong pháp này có thể dùng close form (công thức có sẵn) hoặc gradient decent để tính
khuyết điểm
- rất nhạy cảm với nhiễu và cần phải giải quyết nhiễu trước khi làm liner regression
- đối với những mô hình phức tạp hơn thì không phù hợp để sử dụng mô hình liner regression
- khác liner ở chỗ poly có bậc. có thể mô hình được môi quan hệ phi tuyến tính, ví dụ như:
- giúp giải quyết vde của liner regression thông thường, thể hiện đc mối quan hệ phi tuyến tính
https://www.kaggle.com/code/deanmendes/linear-regression-usa-housing?authuser=0
-
xong bài toán regression thì phaải xem được ảnh hưởng của từng feature đối với biến output
-
nên áp dụng normalize với linear regression -> cơ sở công bằng để đánh giá ảnh hưởng của từng biến lên mô hình
-
phải có hint hoặc assumption trc khi áp dụng liner. trong trường hợp này thường dùng residual plot (residual plot là kĩ thuật để nhận ra giũa các biến này với biến target có mỗi quan hệ tuyến tính hay không)
-
khi gặp hiện tượng các điểm data points randomly spread xung quanh trục x thì chứng tỏ có một liner relation tồn tại giữa 2 biến này
-
giả sử có mỗi qhe tuyến tính giữa biến price và biến area population thì nó sẽ tìm 1 ptrinh liner regreesion đơn giản để giải thích mói quan hệ tuyến tính này. sau đó so sánh kết quả y' với biến y thực tế. giả sử data set có 1000 mẫu sẽ tính ra đc 1000 điểm chệnh lệch. từ 1000 điểm chênh lệch đó sẽ dùng để vẽ nên đồ thị residal plot này. khi đồ thị này có dạng random thì những điểm trong đồ thị này đến từ các điểm không mô hình hoá đc
-
train_test_split trong thư viện scikit-learn
test_size: Tỷ lệ hoặc số lượng mẫu sẽ được tách ra để làm tập kiểm tra. Ví dụ, nếu test_size=0.2, 20% dữ liệu sẽ được dùng làm tập kiểm tra, và 80% còn lại sẽ dùng để huấn luyện.
train_size: Tỷ lệ hoặc số lượng mẫu sẽ được tách ra để làm tập huấn luyện. Nếu không được chỉ định, phần còn lại sau khi tách test_size sẽ được dùng làm tập huấn luyện.
random_state: Số nguyên ngẫu nhiên được sử dụng để đảm bảo tính tái lập. Khi bạn chạy lại mã với cùng một random_state, bạn sẽ nhận được cùng một sự phân chia dữ liệu.
shuffle: Mặc định là True, dữ liệu sẽ được xáo trộn trước khi phân chia để đảm bảo tính ngẫu nhiên.
-
Personality Indentification using Deep Learning
-
Face Recognition
-
AUC-ROC curve & ứng dụng
https://www.datacamp.com/tutorial/pandas-profiling-ydata-profiling-in-python-guide?authuser=0
https://www.kdnuggets.com/2020/03/linear-logistic-regression-explained.html?authuser=0
https://www.kaggle.com/code/ericle3121/logistic-regression-for-heart-disease-classificati
https://www.kaggle.com/code/alexisbcook/pipelines?authuser=0
- tên là regression nhưng chủ yếu để làm classification task
-
biến output là biến categorical (hữu hạn gía trị có thể có)
-
classification là bài toán supervised (cần data có nhãn)
Phân loại
- cần có 2 thứ để đánh giá: giá trị thực ngoài đời và giá trị dự đoán
giá trị thực (actual values–y) và giá trị dự báo (predicted values – y predict).
Các thang đo mô hình classification
-
Khi dữ liệu bị mất cân bằng (imbalanced data), accuracy để đánh giá sẽ không đáng tin
-
Precision và Recall sử dụng trong trường hợp data bị imbalance
Recall dùng khi tiêu chí đánh giá là "nhầm còn hơn sót" -> ví dụ dự đoán ngừoi đó có bị tiểu đường hay không. Trong 100 ngừoi bị tiểu đường thì mô hình dự đoán đúng bao nhiêu người
Precision thể hiện "độ tự tin" của mô hình. ví dụ trong 100 ngừoi bị tiểu thì 90% trong số đó là thực sự bị tiểu đường
- F1score là metrics cân bàng giữa Precision và Recall . trường hợp muốn cân bằng cả 2 thì sử dụng F1score
ROC-AUC
-
AUC càng cao thì càng tốt. AUC Càng cao thì mô hình càng robust
-
thầy có gưỉ tài liệu tham khảo AUC.
Visualize class data
- Hàm sigmoid là hàm làm cho linear regression trở thành mô hình logistic regression (dự đoán ra 2 giá trị nằm trong khoảng 0 -> 1)
Ưu điểm
-
Dễ dàng mở rộng cho bài toán target có nhiều hơn hai loại
-
Huấn luyện nhanh, độ chính xác cao cho nhiều tập dữ liệu đơn giản
-
Có thể giải thích các hệ số mô hình cũng như các chỉ số về tầm quan trọng của tính năng
Khuyết điểm
- Decision boundary: chỉ phân biệt với trường hợp 2 nhãn là linearly separable. đôi với đường non-linear thì hoạt động không tốt.
- cách để biết nhãn của mình có bị non linear không?
C1: cách thử: cứ áp dụng log regression, nếu làm k tốt -> non linear
C2: dùng kỹ thuật pca để giảm không gian về 2 chiều và visualize
https://www.kaggle.com/code/alexisbcook/pipelines?authuser=0
- Pipelines are a simple way to keep your data preprocessing and modeling code organized.
ghép những step trong preprocessing, step trong mô hình vào chung 1 chỗ để cho code gọn hơn
https://www.kaggle.com/code/sravan1701/churn-prediction-using-random-forest-and-smote?authuser=1
https://varshasaini.in/glossary/smote/?authuser=1
-
vẽ ra 1 sơ đồ đi từ thời điểm ban đầu đến đích dựa vào việc trả lời các câu hỏi đưa ra
-
được sử dụng khá nhiều trong lĩnh vực finance
-
có tính giải thích cao (interpretibility)
-
decision tree là base model (thuật toán nền) để build mô hình random forest
-
đặc biệt đc dùng nhiều trong phân tích quyết định
-
-
ở trong noole sẽ khảo sát các giả trị có thể có của 1 biến, decison tree sẽ tìm cách chọn ra biến nào đặt vô node noà cho phù hợp
noole trên cùng đầu tiên gọi là root noole
tiêu chí lựa chọn biến để đưa vào noole của decison tree dựa trên "thuần khiết"
**Làm thế nào để xác định được phân chia tốt nhất?
- sự thuần khiết của 1 biến đc định nghĩa bằng cách chia sau khi chia data set theo biến đó.
Đo mức độ không thuần khiết
- để máy tính hiểu biến nào "thuần khiết" hơn thì cần sự dụng 1 phép đo để đo mức độ không đồng nhất khi cắt dữ liệu trong 1 node và thuật toán đó được gọi là gini index
-
gini thuộc R, gini thấp -> tính đồng nhất cao và ngược lại
-
một số người không thích dùng gini thì có thể dùng Information Gain. khác nhau ở chỗ sẽ lựa chọn biến có information gain cao nhất.
Ưu điểm
- Khi áp dụng trong regression (kết quả ra là một con số chứ không phải là phân loại) trong decision tree thì cả gini và information gain đều k dùng đc. Vì vậy cần áp dụng mô hình có cách hdong tương tự có tên là 'decision tree regression', mô hình này sử dụng các metrics như absolute_error, MSE,.. để đo sự giống nhau giữa những con số thực
Khuyết điểm
- nếu có biến continous thì không nên dùng decision tree, hoặc drop thử biến rồi xem decision tree còn hiệu quả k r mới dùng
-
random forest là một trong những mô hình manh nhất của machine learning
-
Nhược điểm chính của cây quyết định (Decision Tree) là chúng có khuynh hướng overfit dữ liệu huấn luyện.
-
Random Forest là một cách để giải quyết vấn đề này. Một Random Forest về bản chất là một tập hợp các cây quyết định, trong đó mỗi cây hơi khác so với các cây khác.
Ứng dụng
- Khi dự đoán, Random Forest sẽ kết hợp các dự đoán từ từng cây bằng cách sử dụng phương pháp bình chọn (major voting) cho bài toán classification hoặc trung bình (averaging) cho bài toán regression.
Ưu điểm
- ta có thể Nhận thấy tầm quan trọng của tính năng tương đối, giúp chọn các tính năng đóng góp nhiều nhất cho quá trình phân loại.
search "random forest feature importance."
-
ngoài ra chúng ta còn có thể tránh nhiều bằng cách remove bớt những thuộc tính có % đóng góp vào mô hình quá thấp. điều này cũng sẽ góp phần làm mô hình không bị nhiễu
-
biểu đồ đánh giá mức độ đóng góp cuả từng feature đối với hô hình -> hỗ trợ chúng ta lựa chọn feature selection dựa trên feature importantce. randome forest làm cách này bằng cách bỏ các feature ra khỏi mô hình. nếu feature đó làm mô hình sụt gỉam điểm số nhiều thì đó là feature quan trọng
Khuyết điểm
- chậm, tính giải thích thấp
-
ClassWeight là một kỹ thuật dùng để chống data imbalance bằng cách gán cho nhãn minority số điểm cao hơn. điều này giúp mô hình quan tâm nhiều hơn và học nhiều hơn đối với nhãn ít mẫu (ví dụ 90% nhãn survive 10% nhãn die). Class Weight: Phương pháp này liên quan đến việc điều chỉnh trọng số của các lớp trong quá trình huấn luyện mô hình. Điều này hữu ích khi bạn có dữ liệu không cân bằng, và bạn muốn mô hình tập trung hơn vào các lớp ít phổ biến hơn bằng cách tăng trọng số của chúng trong hàm mất mát.
-
nếu kaggle không cho chạy pandas profiling thì có thể dùng ydata-profiling cũng tương tự
-
ngoài mất cân bằng giữa các lable còn có trường hợp mất cân bằng nặng hơn là mất cân bằng cả trong pattern của lable đó. Các cách xử lý: xử lý outliers, over sampling,... -> thầy khuyên dùng cách over sampling = phương pháp SMOTE để an toàn hơn cho mô hình
btvn: edit notebook này dựa trên gợi ý feature importance và oversampling (có thể sử dụng pp SMOTE) để cải thiện model này
- Feature Importance: Đây là quá trình xác định và đánh giá tầm quan trọng của các đặc trưng (features) trong mô hình. Từ đó, bạn có thể chọn lọc những đặc trưng quan trọng nhất hoặc giảm bớt những đặc trưng ít quan trọng để giảm thiểu sự phức tạp của mô hình và cải thiện hiệu suất.
https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html
-
SMOTE stands for Synthetic Minority Oversampling Technique. kỹ thuật ov sampling dựa trên KNN, tập trung vào nhãn minority.
-
SMOTE (Synthetic Minority Over-sampling Technique): Đây là một kỹ thuật dùng để xử lý vấn đề dữ liệu không cân bằng bằng cách tạo ra các mẫu mới từ lớp thiểu số. SMOTE tạo ra các mẫu tổng hợp bằng cách kết hợp các điểm gần nhau trong không gian đặc trưng, giúp cân bằng lại tỉ lệ giữa các lớp trong dữ liệu huấn luyện.
-
nói về cách sử dụng pp SMOTE trên mô hình
Lưu ý: Nên chia dữ liệu thành tập train và test trước. Chỉ áp dụng SMOTE trên tập train để tạo ra các mẫu tổng hợp cho lớp thiểu số (minority class). Tập test giữ nguyên, không bị ảnh hưởng bởi SMOTE. Điều này đảm bảo rằng tập test là một tập dữ liệu "sạch", không bị tác động bởi bất kỳ kỹ thuật tiền xử lý nào dựa trên tập train.
-
SVM (Support Vector Machine) là một mô hình Machine Learning rất mạnh mẽ và linh hoạt, có khả năng thực hiện phân loại tuyến tính hoặc phi tuyển, hồi quy và thậm chí phát hiện ngoại lệ.
-
SVM là một trong những mô hình phổ biến nhất trong Machine Learning, và bất cứ ai quan tâm đến Machine Learning nên biết.
-
SVM đặc biệt thích hợp để phân loại các bộ dữ liệu phức tạp nhưng nhỏ hoặc vừa. (vì SVM chạy khá lâu)
-
Ngoài việc thực hiện phân loại tuyển tính, SVM có thể thực hiện hiệu quả phân loại phi tuyến tính bằng cách sử dụng "Kernel trick", ngầm ánh xạ các input vào không gian high-dimensional feature. (tránh được cruise of high dimensionality)
- Trong machine learning, nhiệm vụ của mô hình SVM (Support Vector Machine) là phân loại dữ liệu. Cụ thể, SVM tìm ra một siêu phẳng (hyperplane) tốt nhất để phân chia dữ liệu thành các lớp khác nhau. Siêu phẳng này được chọn sao cho khoảng cách (margin) giữa nó và các điểm dữ liệu gần nhất của mỗi lớp là lớn nhất.
- SVM phát biểu : bất kì mô hình nào có margin space rộng nhất thì sẽ là mô hình tốt nhất. Lý do: khi margin space lớn thì khả năng giảm nhiễu cao, giảm khả năng phân loại sai
Hard-margin SVM (Linear SVM)
Hard-margin SVM là một phiên bản của SVM được sử dụng khi dữ liệu có thể được phân tách hoàn toàn bằng một đường thẳng (hoặc siêu phẳng) mà không có lỗi. Cách nó hoạt động như sau:
-
Phân tách tuyến tính: Hard-margin SVM tìm kiếm một siêu phẳng (hyperplane) phân tách hoàn toàn hai lớp dữ liệu mà không có điểm nào bị phân loại sai.
-
Maximizing the Margin: SVM không chỉ tìm bất kỳ siêu phẳng nào mà cố gắng tối đa hóa khoảng cách (margin) giữa siêu phẳng đó và các điểm gần nhất thuộc hai lớp (các support vectors).
-
Không chấp nhận lỗi: Trong Hard-margin SVM, không có dữ liệu nào được phép nằm giữa hoặc bên phía sai của siêu phẳng. Điều này nghĩa là mô hình chỉ hoạt động tốt khi dữ liệu hoàn toàn có thể phân tách.
Vì vậy, Hard-margin SVM thích hợp cho các tập dữ liệu mà hai lớp có thể được phân tách hoàn toàn mà không có bất kỳ sự chồng chéo nào.
Soft margin SVM
Soft-margin SVM là một phiên bản của SVM cho phép một số lỗi phân loại để tạo ra một mô hình linh hoạt hơn. Cách nó hoạt động như sau:
-
Cho phép lỗi: Soft-margin SVM cho phép một số điểm dữ liệu nằm sai phía của siêu phẳng (hyperplane) hoặc nằm trong vùng margin giữa hai lớp. Điều này giúp mô hình hoạt động tốt hơn khi dữ liệu không thể phân tách hoàn toàn.
-
Cân bằng giữa lỗi và margin: Mô hình cố gắng tối đa hóa khoảng cách (margin) giữa siêu phẳng và các điểm dữ liệu gần nhất, nhưng đồng thời cũng cho phép một số điểm vi phạm margin (tức là bị phân loại sai). Số lượng và mức độ vi phạm được điều chỉnh bởi một tham số C, giúp cân bằng giữa việc có một margin lớn và số lượng lỗi.
-
Tính linh hoạt: Nhờ việc cho phép một số điểm dữ liệu bị phân loại sai, Soft-margin SVM linh hoạt hơn trong việc xử lý các tập dữ liệu có nhiễu hoặc không thể phân tách hoàn toàn.
Tóm lại, Soft-margin SVM giúp mô hình không quá cứng nhắc, làm việc tốt hơn với dữ liệu thực tế có chứa nhiễu hoặc không thể phân tách rõ ràng.
The “Kernel Trick”
- một số tình huống ở không gian thấp chiều thì các điểm không phân tách nhau ra rõ ràng đươch thế những khi đưa các điểm đó vào không gian 3 chiều thì lại có thể phân tách rõ ràng được
Ưu điểm
-
thường là mô hình đầu tay để dùng khảo sát độ khó trên tập dữ liệu
-
nếu áp dụng svm cho ra điểm số thấp thì chúng ta có thể thấy được đây là một bài toán thật sự phức tạp
Khuyết điểm
-
Boosting" hỗ trợ cho các mô hình Machine Learning để cải thiện độ chính xác của dự đoán.
-
Boosting algorithm (Thuật toán tăng cường) là một trong những thuật toán được sử dụng khá rộng rãi nhằm mục đích tăng cường thuật toán để cải thiện độ chính xác của các mô hình.
-
Đây là một thuật toán học quần thể bằng cách xây dựng nhiều thuật toán cùng lúc (ví dụ như Decision Tree) và kết hợp chúng lại. Mục đích là để có một cụm hoặc một nhóm các 'weak learner' rồi kết hợp chúng lại để tạo ra một 'strong learner' duy nhất.
-
AdaBoost (Adaptive Boosting) là một kỹ thuật boosting phổ biến giúp ta kết hợp nhiều 'weak classifier' (trình phân loại yếu) thành một 'strong classifier' (trình phân loại mạnh) duy nhất.
-
base model có thể là bất kì mô hình machine learning nào
-
hoạt động trên tư duy sửa lỗi: có 1 chuỗi model nối tiếp nhau, model sau sẽ học tập dựa trên sai lầm của model trước.
https://www.youtube.com/watch?v=PxgVFp5a0E4&t=14s
-
XGBoost không chỉ là một model mà còn là 1 thư viện machine learning like numpy, tensorflow, pytorch.
-
XGBoost là One of the Popular Tools of Winners is XGBoost.
-
base model của XGBoost là decision tree
-
hoạt động trên tư duy sửa lỗi: model sau sẽ DỰ ĐOÁN sai lầm của model trước
-
XGBoost là một thuật toán "boosting," có nghĩa là nó xây dựng một loạt các cây quyết định (decision trees) theo tuần tự, mỗi cây mới được thêm vào để sửa lỗi của cây trước đó.
https://sefiks.com/2020/05/13/xgboost-vs-lightgbm/
- XGBoost khi train từng cây decision tree thì sử dụng tư duy level wise còn Light BGM sử dụng tư duy leaf wise
Level-wise (XGBoost)
- Khi train 1 cây decision tree mà muốn rẽ xuống nhánh phía dứoi thì phải đợi cho tất cả các nhánh (node) phía trên hoàn thành hết thì mới được di chuyển xuống phía dưới
Leaf-wise (Light GBM)
-
Leaf-wise nghĩa là LightGBM mở rộng cây bằng cách chọn nút lá có độ lợi cao nhất (largest gain) để chia nhỏ trước, thay vì mở rộng tất cả các nút cùng cấp độ.
-
Light GBM dùng tư duy leaf-wise nên sẽ nhanh hơn XGBoost khoảng chừng 10 lần
Trong điều kiện lý tưởng với thời gian và tài nguyên vô hạn, cả Level-wise (XGBoost) và Leaf-wise (LightGBM) có thể đạt được kết quả tương tự, vì cả hai sẽ xây dựng được các cây quyết định tốt nhất có thể để tối ưu hóa hiệu suất mô hình. Tuy nhiên, nếu bạn giới hạn số lượng iterations (ví dụ: chỉ cho phép 300 iterations), kết quả sẽ khác nhau
Khuyết điểm của Light GBM
- dễ bị overfitting hơn XGBoost
https://www.youtube.com/watch?v=KXOTSkPL2X4
-
CatBoost Encoder sử dụng Ordered Target Mean Encoding. Điều này có nghĩa là nó chỉ sử dụng các thông tin từ dữ liệu trước đó để mã hóa từng điểm dữ liệu hiện tại, giúp tránh việc mô hình học thuộc (overfitting) từ toàn bộ dữ liệu huấn luyện.
-
CatBoost tiên tiến hơn trong xử lý biến categorical nhờ khả năng xử lý trực tiếp mà không cần mã hóa, sử dụng phương pháp Ordered Boosting để giảm overfitting, và tích hợp các kỹ thuật giảm sai số, giúp nó hoạt động hiệu quả hơn trên các tập dữ liệu có nhiều biến phân loại.
-
cơ chế xử lý biến categorical
Ích lợi
-
Tăng cường sự khác biệt giữa các mẫu -> tăng cường mối quan hệ giữa target variable -> tăng cường độ chính xác cho mô hình
-
Khi chuyển về giá trị số sẽ dễ dàng áp dụng các phương pháp áp dụng cho biến numberical (mean, mode,...)
https://scikit-learn.org/stable/api/sklearn.svm.html
https://www.kaggle.com/code/hongngcthuthng/svm-vs-xgboost-vs-random-forest
- khi rơi vào 2 tình huống:
tình huống A: all feature -> 95 điểm
tình huống B: drop 4 feature -> 95 điểm
-> vẫn nên drop vì 4 feature đó không quá quan trọng vì vẫn giữ nguyên performance, drop sẽ giúp mô hình chạy nhanh hơn
https://www.kaggle.com/code/hongngcthuthng/comparison-of-catboost-and-one-hot-encoding
Cách dùng Cat boost https://www.geeksforgeeks.org/categorical-encoding-with-catboost-encoder/
- This may prove that when we use random forest, GBDT, XGBoost, LightGBM and other tree model classification, we should probably reduce the use of one-hot encoding.
=> từ sau khi sử dụng các mô hình như random forest, GBDT, XGBoost, LightGBM thì đừng dùng các cách mã hoá như bình thường nữa mà hãy sử dụng catboost catboost encoding
- những nghiên cứ mới nhất về AI & ML
https://www.deeplearningbook.org/contents/numerical.html
Một số tính năng nổi trội của Pytorch
-
Native ONNX Support
-
Flexible Data Classes & DataLoader
Tensor
-
Thành phần cơ bản nhất của Pytorch là Tensor.
-
Về cơ bản, Tensor tương tự như Ndarray trong Numpy, nhưng có thể được tính toán nhanh hơn nhờ vào việc tăng tốc với GPU.
Tensor & Vector
Tensor & Differentiation(Tính đạo hàm với Pytorch)
f.backward() là câu lệnh tự tính đạo hàm
-
Neural Network là 1 thuật toán được đề xuất để mô phỏng hoạt động của các neural thần kinh trong bộ não con người.
-
Đây là thuật toán lõi trong deep learning
-
Mạng neural network đơn giản nhất được gọi là Perceptron.
-
Cấu tạo của 1 mạng neural network gồm 1 lớp input, 1 lớp output và 1 hoặc nhiều lớp hidden.
-
Mỗi node trong 1 lớp còn được gọi là 1 neural, mỗi neural trong lớp hiện tại sẽ được link tới toàn bộ neural của lớp tiếp theo, tạo thành 1 mạng lưới neural thần kinh dày đặc (dense neural network).
Cấu tạo của 1 neural network
- Chúng ta tiến hành mổ xẻ cách hoạt động của 1 neural:
1 neural gồm bộ phận tiếp nhận và bộ phận trả kết quả. bộ phận trả kết qủa sẽ có nhiệm vụ lấy kết quả mà bộ phận tiếp nhận vừa tính đem đi qua hàm g (hàm sidmoid) để kích hoạt kết quả đó.
Tại sao chúng ta cần có Activation Function (hàm g)
-
kết quả của hàm g chính là output của neural
-
Vai trò của Activation Function: đưa sự phi tuyến vào mô hình, chuẩn hoá giá trị đầu ra, tăng tốc độ học,..
Forward Propagation
-
Forward Propagation là quá trình tính toán đầu ra của mạng dựa trên đầu vào. Quá trình này diễn ra từ lớp đầu vào (input layer), qua các lớp ẩn (hidden layers), và cuối cùng đến lớp đầu ra (output layer). Mỗi nút trong lớp này sẽ nhận giá trị từ các nút của lớp trước đó, nhân với các trọng số (weights), cộng thêm một bias, sau đó áp dụng một hàm kích hoạt (activation function) để tính toán giá trị đầu ra.
-
Cơ chế feed forward giúp tính toán giá trị output của mạng neural network.
-
còn gọi là loss function, objective function, cost function
-
Tác dụng: nhận nhãn thực tế và kết quả mô hình dự đoán (y,y^) = numerical = z. khi độ lỗi/sai số lớn thì z càng lớn và ngược lại. thuật toán này sẽ tìm bộ trọng số thích hợp sao cho giá trị "Loss Value" (hay còn gọi là hàm lỗi) càng nhỏ càng tốt
-
Cơ chế backpropagation giúp tính toán các đạo hàm cần thiết, để từ đó Gradient Descent sẽ update các trọng số trong mô hình.
Stochastic Gradient Descent
Batch Gradient Descent
Mini-batch Gradient Descent
- sự kết hợp giữa 2 pp trên.
sử dụng mini batch gradient decent. batchsize = 32 mẫu, N = 320 mẫu. cứ 1 lầm mô hình đc update gọi là 1 interation . vậy 1 epoch = ? iteration? 5 epoch = ? iteration
1 epoch = 320/32 = 10 iteration -> 5 epoch = 50 iteration
- dense layer = fully connected layer. Dense layer hay còn gọi là Fully connected layer là 1 lớp của mạng neural network. Mỗi dense layer gồm nhiều node gọi là các neural, mà trong đó mỗi neural sẽ nhận đầu vào là các neural thuộc lớp trước đó.
Hiện tượng Gradient Vanishing là gì?
Gradient vanishing xảy ra khi các gradient (đạo hàm của hàm mất mát theo các trọng số) trở nên rất nhỏ trong quá trình truyền ngược (backpropagation), đặc biệt là ở các lớp gần đầu vào của mạng. Khi gradient trở nên quá nhỏ, các trọng số của các lớp này không được cập nhật một cách đáng kể trong quá trình huấn luyện, dẫn đến mạng không học được hoặc học rất chậm.
Các hàm kích hoạt thông dụng:
- Công dụng của hàm kích hoạt:
Đưa sự phi tuyến tính vào mô hình
Giúp giới hạn output của neural
Góp phần hạn chế gradient vanishing (trái ngược với gradient vanishing là exploding gradient)
Một số nguyên tắc:
-
Trong bài toán Binary Classification, giả sử neural network tại lớp output chỉ có 1 neural => dùng sigmoid làm hàm kích hoạt (vì hàm này giới hạn output từ 0-1)
-
Trong bài toán Multiclass classification, giả sử neural network tại lớp output có nhiều neural => dùng hàm softmaxlàm hàm kích hoạt.
Công thức của hàm Softmax
- có cách nào làm nhanh để tính đc mẫu này thuộc nhãn nào không -> Bạn không cần tính toàn bộ xác suất thông qua hàm Softmax, chỉ cần tìm giá trị lớn nhất trong vector đầu ra của lớp logits và xác định vị trí của nó. Nhãn tương ứng với vị trí này chính là nhãn của mẫu.
Hàm lỗi (Loss function)
-
Hàm lỗi hay còn gọi là hàm mất mát (cost function) là 1 thành phần bắt buộc phải xác định trong mọi mạng neural network.
-
Một số hàm lỗi thông dụng cho bài toán classification: binary cross entropy và categorical cross entropy.
Optimizer
-
Optimizer (hàm tối ưu) là các hàm được dùng để tinh chỉnh trọng số của mô hình.
-
Trong các phần trên, chúng ta đã tìm hiểu về thuật toán Gradient Descent, trên thực tế, ngoài Gradient Descent còn nhiều thuật toán tối ưu khác mà thư viện Pytorch hỗ trợ: Adam, Adagrad, RMSProp…
-
khuyên dùng thuật toán tối ưu Adam
Hyperparameters vs Parameters
-
Parameters là từ chỉ chung các trọng số của mô hình mà chúng ta phải update
-
Hyperparameters là từ chỉ các tham số phải được xác định trước khi quá trình training bắt đầu. (Ví dụ: Số lượng epoch, Batch size, Cấu trúc của mô hình (số lượng hidden layers, số lượng node trong 1 layer…), Các tham số của hàm mất mát, Learning rate…). Hyperparameters không update được mà phải dùng các phương pháp tunning để tìm ra bộ trọng số tốt nhất.
https://www.kaggle.com/code/hongngcthuthng/pytorch-mlp-mnist?scriptVersionId=192013873
CHUẨN BỊ DATA
- Bước 1: tạo data set class để đọc data
Tạo data loader để tìm cách đưa data đi vào model
- Bước 2: tạo ra class để đọc tập train
self.transform là biến lưu giữ các 1 pp augmentation mà chúng ta chọn (over sampling cho hình ảnh trong deeo learning)
-
Bước 3: tạo ra class để đọc tập test
-
Bước 4: Truyền đường dẫn
chuyển array thành dạng để cho pytorch đọc đc bằng câu lệnh: transform=transforms.ToTensor())
- Buơc 5: Chuẩn bị cách đọc data cho model
CẤU TRÚC MẠNG NEURAL NETWORK
-
What makes a model (Features, Hyper-parameters, Loss)
-
Hyper-parameters phải xác định trước khi quá trình trainning bắt đầu. Những siêu tham số này sẽ ảnh hưởng trực tiếp đến performance của mô hình.
- Cross-validation là 1 pp đánh giá performance của mô hình.
K-fold cross-validation
-
Thay vì chia dữ liệu thành các tập huấn luyện và kiểm định riêng biệt, K-Fold Cross-Validation cho phép sử dụng toàn bộ dữ liệu để huấn luyện và kiểm định, giúp tận dụng tối đa dữ liệu hiện có. (chia thành các phần rồi đánh giá trên từng phần của bộ dữ liệu sau đó tính performance trung bình)
-
K-Fold Cross-Validation giúp tránh được sampling bias bằng cách chia dữ liệu thành nhiều phần nhỏ, đảm bảo rằng mọi mẫu dữ liệu đều được sử dụng cả trong quá trình huấn luyện và kiểm định. Bằng cách lấy trung bình kết quả của nhiều lần kiểm định khác nhau, phương pháp này giảm thiểu khả năng thiên lệch và cung cấp một đánh giá chính xác hơn về hiệu suất của mô hình trên toàn bộ dữ liệu.
-
k thường là 5, 10, 20
-
Leave-One-Out Cross-Validation (LOO-CV) là một kỹ thuật kiểm định chéo đặc biệt của K-Fold Cross-Validation, trong đó K bằng với số lượng mẫu dữ liệu có trong tập dữ liệu.
-
Cross-validation liên quan đến việc lựa chọn hyperparameter (tham số siêu việt) như sau: Khi bạn có nhiều bộ tham số siêu việt (hyperparameters) khác nhau, chẳng hạn như bộ tham số A và B, cross-validation được sử dụng để đánh giá xem bộ tham số nào hoạt động tốt hơn cho mô hình.
-
Các tình huống sau nên sử dụng Cross validation: khi dataset ít, khi muốn tìm ra hyperparameter tốt cho mô hình, benchmarking with less bias (Đánh giá hiệu suất mô hình với ít thiên lệch hơn)
- Grid search nghĩa là có một tập hợp các mô hình khác nhau với các giá trị tham số của chúng, nằm trên một lưới. Những gì ta làm là đào tạo từng mô hình và đánh giá nó bằng cách sử dụng xác thực chéo. Sau đó chọn một mô hình thực hiện tốt nhất.
Ví dụ
-
GridSearchCV sẽ tạo ra tất cả các kết hợp có thể của các hyperparameters này. Trong trường hợp này, có 2 giá trị cho Criterion và 3 giá trị cho N_estimators, dẫn đến tổng cộng 2 x 3 = 6 kết hợp khác nhau. GridSearchCV sau đó sẽ huấn luyện mô hình trên mỗi tổ hợp này và sử dụng cross-validation để đánh giá hiệu suất của mô hình với từng tổ hợp hyperparameters.
-
Mục tiêu của GridSearchCV: Mục tiêu là tìm ra tổ hợp hyperparameters (trong trường hợp này là cặp giá trị của N_estimators và Criterion) cho kết quả tốt nhất dựa trên một metric đánh giá cụ thể. Sau khi GridSearchCV hoàn tất, nó sẽ trả về bộ hyperparameters tốt nhất (ví dụ: "gini", 100 hoặc "entropy", 50) và mô hình được huấn luyện với các tham số này có khả năng dự báo tốt nhất dựa trên dữ liệu và metric đánh giá của bạn.
Ưu điểm
- "Diệt nhằm còn hơn bỏ sót", nên thường được ưu tiên lựa chọn.
Khuyết điểm
-
đối với các model cần lập nhiều parameter và nhiều giá trị thì việc tunning sẽ mất rất nhiều thời gian, hàng giờ, vài giờ thậm chỉ có thể tính bằng ngày.
-
cách chọn tham số cho N_estimators, thường thì các tham số sẽ để dưới dạng logaric scale. Vì
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html
Cách search ra bộ siêu tham số tốt nhất (khắc phục những khuyết điểm của grid search CV
-
Hyperclassifiers search
-
pycaret -> kỹ thuật dành cho những ngừoi muốn lowcode khi làm machine learning
Hyperclassifiers search
- Cho phép thực hiện grid search CV hoặc random search CV trên nhiều câu lệnh cùng 1 lúc
Pycaret
- đây là kỹ thuật auto ML
https://github.com/janhenner/HyperclassifierSearch
https://pycaret.gitbook.io/docs
https://colab.research.google.com/drive/1C7AbOA7L1gfopuFzPtlG3yCXt1UAuIjz?usp=sharing&authuser=1
- low-code libery, đơn giản và dễ dùng hơn
- Search KNN sklearn imputer: https://scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html
(có thể đọc thêm trong slide preprocessing)
- Ngoài các kiểu cross validation bình thường thì Hyperclassifier còn chô phép chúng ta dùng tất cả các kiẻu cross validation mà sklearn hỗ trợ
https://scikit-learn.org/stable/api/sklearn.model_selection.html
https://pycaret.gitbook.io/docs
https://people.revoledu.com/kardi/tutorial/Clustering/Numerical%20Example.htm?authuser=1
-
cluser là cụm hoặc nhóm
-
Xem dữ liệu là 1 điểm trong không gian và sẽ nhóm những điểm dữ liệu nào gần nhau về chung 1 nhóm. giống classìication nhưng khác ở chỗ data ở đây chưa được gắn nhãn
-
Assumption: Có mối qhe về mặt không gian hoặc về mặt cấu trúc giữa các mẫu chung 1 nhãn (đây là 1 khuyết điểm ví dụ đối với data dạng hình ảnh 2 hình con chó thì không thể khẳng định nó có liên hệ nào về mặt cấu trúc hay không gian)
Ví dụ
Ghi chú: trong Cluster Analysis
- Không có khái niệm cluster "đúng"/sai, chỉ có phù hợp hơn
Độ phù hợp xét theo 2 tiêu chí
-
tiêu chí a, b (elbow method)
-
có domain knowledge-> xét xem cách chia nào phù hợp với bài toán hơn
-
cách chia nào interpretable hơn (dễ giải thích hơn)
Cách tính khoảng cách
Sử dụng kết quả phân cụm
- phải giải thích ý nghĩa kết quả phân cụm thì khi đó kết quả của chúng ta mới có ý nghĩa trong việc decision making in business
Một số thuật toán cluster
-
K-Means clustering
-
GMM
-
K-Means là một thuật toán thuộc nhóm Unsupervised Learning.
-
Được sử dụng khi ta có dữ liệu không có nhãn
Thuật toán kmeans thường có 3 bước lớn như sau
-
b1: chọn k điểm bất kì trong dataset. k điểm này sẽ là tâm của k cụm.
-
b2: lặp đi lặp lại 2 bước sau
a) lấy 1 điểm trong data set coi nó gần nhất với cái tâm nào -> gần điểm nào nhất thì 2 điểm đó nằm chung 1 nhóm. kết thúc bước này thì mỗi điểm trong dataset sẽ đc xác định nằm trong 1 điểm nào đó.
b) update tâm bằng cách lấy trung bình cộng của tất cả các điểm trong nhóm đó
- b3: lặp lại cho đến khi nào gặp điều kiện dừng
Điều kiện dừng
-
khi đạt được 1 số vòng lặp nào đó: iterations = 100
-
khi tâm của cụm không thay đổi nữa hoặc sự thay đổi quá ít (bé hơn 1 hằng số nào đó). centroid << theshold (khi thay đổi quá ít thì sẽ tự động dừng)
kmeans có cam kết là Guaranteed to converge in a finite number of iterations.
Ứng dụng
-
K-Means for Segmentation
-
Vector quantization
Khuyết điểm
- vì ban đầu là chọn điểm random nên trong 1 số trường hợp có thể dẫn đến kết quả chia rất xấu. => k means quá nhạy với random ban đầu nên dễ dính vào local optimum mà k đạt đc global optimum
ví dụ có 2 tâm đc random quá gần nhau sẽ dẫn tới 2 cluser bị trộn lẫn vào nhau
Kmeans
https://www.geeksforgeeks.org/ml-k-means-algorithm/
-
b1: Randomly select the first centroid from the data points.
-
b2: For each data point compute its distance from the nearest, previously chosen centroid.
-
b3: Select the next centroid from the data points such that the probability of choosing a point as centroid is directly proportional to its distance from the nearest, previously chosen centroid. (i.e. the point having maximum distance from the nearest centroid is most likely to be selected next as a centroid)
-
b4: Repeat steps 2 and 3 until k centroids have been sampled
Chọn giá trị k như thế nào cho phù hợp
- tiêu chí a, b (elbow method)
-
có domain knowledge-> xét xem cách chia nào phù hợp với bài toán hơn
-
cách chia nào interpretable hơn (dễ giải thích hơn)
Hard clusering (Kmeans) vs Soft clusering (GMM)
-
Hard Clustering thường được sử dụng khi các cụm trong dữ liệu được phân biệt rõ ràng và các điểm dữ liệu chỉ thuộc về một cụm duy nhất. (vdu phân loại khách hàng trung thành)
-
Soft Clustering nên được sử dụng khi các cụm trong dữ liệu không phân biệt rõ ràng và một điểm dữ liệu có thể có mối quan hệ với nhiều cụm. Điều này thường xảy ra trong các bài toán như phân loại văn bản, phân tích hành vi người dùng, xe tự hành hoặc trong các bài toán mà các lớp không tách biệt hoàn toàn.
https://www.analyticsvidhya.com/blog/2019/10/gaussian-mixture-models-clustering/
- Giả sử bạn có một tập hợp dữ liệu về chiều cao và bạn không biết rằng dữ liệu này thực sự gồm hai nhóm: nam và nữ. GMM sẽ giúp bạn phát hiện ra rằng dữ liệu có thể được mô tả bằng hai phân phối Gaussian khác nhau, một cho nam và một cho nữ. Sau đó, nó sẽ tính toán các tham số của các phân phối này và xác định xác suất mà mỗi chiều cao thuộc về nam hay nữ.
-
GMM sử dụng thuật toán EM để ước lượng các tham số (mean và standard deviation) của các phân phối Gaussian.
-
pi thể hiện 1 gausian chứa nhiều điểm hay ít điểm (độ quan trọng của 1 cluster)
ví dụ pi1 40% + pi2 60% = 1 => ta có thể nói có 60% điểm đó thuộc cluster pi2
Thuật toán EM lặp lại 3 bước:
-
B1: khởi tạo random 3 giá trị trong từng gaussian
-
Bước Expectation (E): Tính toán xác suất mà mỗi điểm dữ liệu thuộc về mỗi phân phối Gaussian.
-
Bước Maximization (M): Dựa trên những xác suất đó, cập nhật các tham số của các phân phối Gaussian để cải thiện mô hình.
https://www.analyticsvidhya.com/blog/2019/10/gaussian-mixture-models-clustering/
Ưu điểm
Khuyết điểm
- dùng trong dimensionality reduction (giảm chiều dữ liệu), visualization + cluser insight, nhận diện khuôn mặt eigent face (face id, định danh, chấm công), face matching (tìm danh tính 1 ngừoi trong kho thư viện danh tính)
Phân loại
- Projection (phép chiếu)
Nhưng Projection (phép chiếu) không phải là một cách tiếp cận tốt để dimensionality reduction.
- Manifold
-
PCA sẽ hạn chế việc information loss xảy ra khi giảm chiều dữ liệu (giữ lại nhiều thông tin nhất)
-
Mục tiêu chính của phân tích PCA là xác định các mẫu trong dữ liệu; PCA giúp phát hiện mối tương quan giữa các biến. Nếu có mối tương quan chặt chẽ giữa các biến tồn tại, nỗ lực giảm kích thước mới có ý nghĩa.
-
Trong PCA, lượng thông tin được giữ lại sẽ tỷ lệ thuận với đại lượng variance
-
PCA tìm kiếm các phương hướng (principal components) trong không gian nhiều chiều mà theo đó sự biến thiên của dữ liệu là lớn nhất (maximum variance). Những phương hướng này đại diện cho các tổ hợp tuyến tính của các biến gốc. PCA sau đó sẽ giữ lại một số ít các phương hướng chính này (các thành phần chính) để thay thế cho các biến gốc, từ đó giảm số chiều của dữ liệu.
-
PCA giúp giữ lại những thông tin quan trọng nhất từ dữ liệu bằng cách loại bỏ các chiều không cần thiết, giúp cho việc học máy trở nên hiệu quả hơn.
-
ví dụ không gian ban đầu là 15 chiều, tôi muốn giảm về kgian 3 chiều -> pca tính ma trận S covariance matrix -> sau đó tìm tất cả các eigent vector có thể có của ma trận S -> 3 chiều tương ứng với 3 trục toạ độ nên sẽ tiến hành chọn eigent vector nào giữ lại đc nhiều value nhất. Lượng thông tin đc giữ lại đc tính bằng cách lấy tổng 3 eigent value đó/tất cả các giá trị eigent value cộng lại với nhau.
-
dữ liệu -> tính ma trận hiệp phương sai -> muốn giảm về k chiều -> tìm k eigent vector của ma trận đó
-
mỗi eigent vector sẽ có eigent value tương ứng. chọn eigent vector tốt nhất bằng cách chọn xem eigent vector nào giữ lại đc nhiều value nhất.
https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
https://scikit-learn.org/stable/modules/generated/sklearn.mixture.GaussianMixture.html
-
kỹ thuật kneed sẽ khắc phục được khuyết điểm của pp elbow -> giúp chúng ta lựa chọn theo 1 cách khoa học hơn
-
kỹ thuật silhouette score là
-
time series là dữ liệu dạng chuỗi, ví dụ giá vàng, giá gạo,..
-
ứng dụng vào bài toán như predictive maintainance
-
điều kiện của data dạng time series:
data có yếu tố về thời gian, data dạng chuỗi (series/sequences), không nhất thiết phải ở dạng numberical mà còn là categorical, binary, hình,..
ARIMA kết hợp ba khái niệm chính:
AutoRegressive (AR) - Tự hồi quy
-
"tự động hồi quy". AutoRegressive (AR) là một cách để dự đoán giá trị tương lai của một chuỗi thời gian bằng cách sử dụng thông tin từ các giá trị trong quá khứ của chính chuỗi đó.
-
ví dụ: Giả sử bạn muốn dự đoán nhiệt độ hôm nay dựa trên nhiệt độ của những ngày trước đó. Nếu bạn dùng nhiệt độ của ngày hôm qua để dự đoán nhiệt độ hôm nay, đó là một mô hình AR(1) (tự hồi quy bậc 1). Nếu bạn dùng nhiệt độ của hai ngày trước đó để dự đoán nhiệt độ hôm nay, đó là một mô hình AR(2).
Integrated
Moving Average - Trung bình trượt
- Moving Average (MA) là một mô hình dự báo trong đó giá trị hiện tại của chuỗi thời gian được xác định bằng cách sử dụng trung bình có trọng số của các sai số trong quá khứ.
Để kiểm nghiệm xem data có tính seasonality không thì sẽ có phép thử chứ không cần thiết phải thực hiện theo cảm tính
ARIMA theo mùa (seasonal)
-
Được sử dụng khi chuỗi thời gian có các yếu tố mùa vụ rõ ràng. Ví dụ, khi bạn dự đoán doanh số bán hàng có chu kỳ tăng cao vào mùa lễ hội hoặc giảm mạnh vào mùa hè.
-
Nếu mô hình có thành phần theo mùa, chúng ta sử dụng mô hình ARIMA theo mùa (SARIMA). Trong trường hợp đó, sẽ có một bộ tham số khác: P, Dvà Q mô tả các liên kết tương tự như p, d và q, nhưng tương ứng với các thành phần theo mùa của mô hình (Seasonal model)
ARIMA không theo mùa (non-seasonal)
- Được sử dụng khi chuỗi thời gian không có yếu tố mùa rõ rệt. Ví dụ, khi bạn dự đoán doanh số bán hàng không bị ảnh hưởng bởi các yếu tố mùa vụ.
-
Time Series có một số tính năng chính như xu hướng (trend), tính thời vụ (seasonality) và nhiễu (noise). (noise ở đây chính là những gì mà mô hình không thể giải thích được
-
Công việc của chúng ta là phân tích các tính năng này của tập dữ liệu time series và sau đó áp dụng mô hình để d ự đoán trong tương lai.
-
Trong mô hình ARIMA có 3 tham số được sử dụng để giúp mô hình hóa các khía cạnh chính của một chuỗi thời gian: seasonality, trend, và noise. Các tham số này được gắn nhãn lần lượt là p, d và q.
p là tham số kết hợp với khía cạnh tự động hồi quy của mô hình (auto-regressive aspect - AR)
d (difference): là tham số kết hợp với phần tích hợp của mô hình (integrated part- l)
q: là tham số liên quan đến phần trung bình động của mô hình (moving average part - MA)
Dữ liệu theo stationary
Stationary data (dữ liệu tĩnh) là một chuỗi thời gian có các đặc tính thống kê như trung bình, phương sai, và hiệp phương sai không thay đổi theo thời gian. Nói cách khác, một chuỗi thời gian được gọi là tĩnh khi nó không có xu hướng rõ ràng (trend), không có yếu tố mùa vụ, và các biến động của nó ổn định qua thời gian. Trong bài toán ARIMA phải chuyển dữ liệu về stationary.
Đặc điểm của chuỗi thời gian tĩnh (Stationary):
- Mean (trung bình) của chuỗi không nên là một hàm theo thời gian. dữ liệu dạng stationary là dữ liệu có mean không thay đổi theo thời gian.
- Variance (phương sai) của chuỗi không nên là một hàm theo thời gian.
- Covariance (hiệp phương sai) của thời gian thứ i và thời gian thứ (i +m) không nên là một hàm theo thời gian.
- là một kỹ thuật phân tích được sử dụng để tách một chuỗi thời gian thành các thành phần cơ bản để hiểu rõ hơn về các yếu tố ảnh hưởng đến chuỗi đó. Mục tiêu của phân tích này là để chia chuỗi thời gian thành các phần mà mỗi phần đại diện cho một yếu tố đặc trưng khác nhau của dữ liệu.
Các thành phần cơ bản của Time Series Decomposition:
-
Trend
-
Seasonality
-
Cyclicity: Một chu kỳ xảy ra khi dữ liệu biểu hiện tăng và giảm không có tần số cố định. Những biến động này thường là do điều kiện kinh tế, và thường liên quan đến "business cycle". Thời gian của những biến động này thường tí nhất là 2 năm. (ví dụ: chu kì suy thoái kinh tế,..)
-
Residuals: độ lỗi trong dự đoán, những thứ mà time series không giải thích được
Decomposition (phân tích)
-
đây là kĩ thuật được dùng để phân tích xem dữ liệu của chúng ta thuộc Seasonality hay Cyclicity.
-
kỹ thuật này sẽ phân tích dữ liệu time series của chúng ta ra thành 3 phần: Trend (chuyển động lên hoặc xuống của đường cong dài hạn (long term), Seasonal component (thành phần theo mùa), Residuals
-
mô hình cộng (additive model): sự thay đổi tuyến tính
-
mô hình nhân (multiplicative model): sự thay đổi phi tuyến tính
AIC (The Akaike information criterion):
- Giá trị AIC cho phép so sánh mô hình phù hợp với dữ liệu và tính đến độ phức tạp của mô hình, vì vậy các mô hình phù hợp hơn trong khi sử dụng ít tính năng hơn sẽ nhận được điểm AIC tốt hơn (thấp hơn) các mô hình tương tự sử dụng nhiều tính năng hơn
DEMO Time Series Forecasting - ARIMA
https://www.capitalone.com/tech/machine-learning/understanding-arima-models/?authuser=0
https://colah.github.io/posts/2015-08-Understanding-LSTMs/
Recurrent neural network
-
dạng rolling
-
dùng để xử lý data dạng chuỗi (time series, NLP,...)
-
Word prediction, auto suggestion,.. (dựa vào những thông tin đã có sẽ dự đoán ra những thông tin tiếp theo)
DEMO LSTM
nếu muốn sửa lại thành dữ đoán nhiều loại sản phẩm cùng 1 lúc thì có thể sửa chỗ này trong notebook
Đề thi
https://pycaret.gitbook.io/docs/get-started/functions/analyze
- dựa trên package Py Spark. tổng hợp sức mạnh của nhiều máy tính
-
1 máy tính nhưng dùng GPU (VGA, card đồ hoạ) xử lý dữ liệu
-
GPU có thể xử lý dữ liệu dạng video và hình ảnh một cách rất dày đặc
- Lược bỏ 1 số tính năng của Apriori, đổi lại kết quả nhanh hơn Apriori
- Là 1 bài toán con trong lĩnh vực Recommendation system.
Recommendation system
-
ví dụ: video suggestion (youtube), content suggestion (Amazon)
-
Thoả mãn 2 yếu tố: personalization, content related
-
Trong machine learning, có 2 cách để xây dựng RS: Collaborative Filtering (ưu tiên sự cá nhân hoá) vs Content-based Filtering (ưu tiên content related)
- Association rule mining (khai phá luật kết hợp) là một kỹ thuật để xác định mối quan hệ cơ bản giữa các item khác nhau.
-
đây là bài toán bổ trợ cho Recommendation system, dùng Association Rule Mining để xác định mối tương tác giữa các sản phẩm (ví dụ khách hàng mua item A thì thường sẽ không mua item B)
-
Apriori dùng cho bài toán basket analysis (nhìn vô giỏ hàng của 1 user và tiến hành khảo sát xem có quy luật tương tác thuận nào không ví dụ khách hàng mua item A thì có khả năng rất lớn cũng sẽ mua item C) -> có thể đưa ra các chương trình khuyến mãi mua A tặng C, mua A cùng với C sẽ giảm giá
-
không có tính cá nhân hoá như Recommendation system mà chỉ dựa trên các quy luật kết hợp nên vẫn không thể thay thế được Recommendation system
-
Apriori được thiết kế để hoạt động trên các cơ sở dữ liệu chứa các giao dịch (transactional data base)
Các ứng dụng
Có 3 thành phần chính của thuật toán Apriori:
- Support: ví dụ Support(A) là số lượng giao dịch chứa sp A trên tổng giao dịch
- Confidence: đo lường khả năng nếu như khách hàng mua A thì sẽ mua B (tương tác thuận).
- Lift: Lift(A >- B): đề cập đến sự gia tăng tỷ lệ bán B khi Ađược bán. (hữu hiệu trong việc bán chung 2 sản phẩm)
Ngoài ra còn có:
-
Leverage: đây là 1 metric đo tính độc lập giữa 2 sp
-
Conviction: thể hiện độ mạnh yếu của 1 quy luật






































