- vừa được xem lúc

[Liệu bạn có biết] Bài 2: Cách xác định sử dụng kĩ thuật nào trong ML

0 0 1

Người đăng: CisMine

Theo Viblo Asia

Trong bài toán Machine Learning của chúng ta chia ra làm 3 bài toán con là: Supervised Learning - Unsupervised Learning - Reinforcement Learning, nhưng trong đó Supervised Learning là bài toán mà chúng ta gặp thường xuyên nhất. Trong Supervised Learning có 2 loại chính là Classification - Regression và trong mỗi loại đó có rất nhiều thuật toán để xử lí, ví dụ như:

  • Classification: Support Vector Machine, Decision Trees, Random Forest,....
  • Regression: Linear Regression, Polynomial Regression, Ridge Regression, Lasso Regression,....

Vậy câu hỏi đặt ra là: có quá nhiều thuật toán để xử lí vậy làm sao chúng ta xác định được thuật toán nào phù hợp cho bài toán của mình

Cách chọn thuật toán phù hợp

Ngày xưa chắc hẳn các bạn đã biết đến 2 phương pháp: GridsearchCV hoặc RandomizedSearchCV

from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import RandomizedSearchCV

Điều tệ nhất về những phương pháp này là mất quá nhiều thời gian để tìm kiếm thuật toán phù hợp vì phương pháp của Grid/Random Searchsử dụng vòng lặp để kiểm tra tất cả các trường hợp. Mặc dù cách này không tệ nhưng cũng chưa đủ tốt, vì vậy mình sẽ chỉ cho các bạn một cách mới để tìm ra thuật toán tốt nhất.

Lazy predict

Lazy predict giúp chúng ta xác định nên chọn thuật toán nào cho phù hợp với bài toán 1 cách nhanh, gọn, lẹ và dễ dàng

Các bạn có thể cài đặt Lazy Predict bằng lệnh:

pip install lazypredict 

Điều tuyệt vời nhất về Lazy Predict là tốc độ,nó mất ít thời gian hơn nhiều để tìm ra thuật toán phù hợp với bộ dữ liệu của bạn, nhưng chỉ với các tham số mặc định.

Cách dùng

Sẽ có những thư viện mà các bạn chưa từng thấy bao giờ nhưng cũng không cần phải import trước khi dùng Lazy predict

Classification

from lazypredict.Supervised import LazyClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split data = load_breast_cancer()
X = data.data
y= data.target X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=.5,random_state =123) clf = LazyClassifier(verbose=0,ignore_warnings=True, custom_metric=None)
models,predictions = clf.fit(X_train, X_test, y_train, y_test) print(models)
Model Accuracy Balanced Accuracy ROC AUC F1 Score Time Taken
LinearSVC 0.989474 0.987544 0.987544 0.989462 0.0150008
SGDClassifier 0.989474 0.987544 0.987544 0.989462 0.0109992
MLPClassifier 0.985965 0.986904 0.986904 0.985994 0.426
Perceptron 0.985965 0.984797 0.984797 0.985965 0.0120046
LogisticRegression 0.985965 0.98269 0.98269 0.985934 0.0200036
LogisticRegressionCV 0.985965 0.98269 0.98269 0.985934 0.262997
SVC 0.982456 0.979942 0.979942 0.982437 0.0140011
CalibratedClassifierCV 0.982456 0.975728 0.975728 0.982357 0.0350015
PassiveAggressiveClassifier 0.975439 0.974448 0.974448 0.975464 0.0130005
LabelPropagation 0.975439 0.974448 0.974448 0.975464 0.0429988
LabelSpreading 0.975439 0.974448 0.974448 0.975464 0.0310006
RandomForestClassifier 0.97193 0.969594 0.969594 0.97193 0.033
GradientBoostingClassifier 0.97193 0.967486 0.967486 0.971869 0.166998
QuadraticDiscriminantAnalysis 0.964912 0.966206 0.966206 0.965052 0.0119994
HistGradientBoostingClassifier 0.968421 0.964739 0.964739 0.968387 0.682003
RidgeClassifierCV 0.97193 0.963272 0.963272 0.971736 0.0130029
RidgeClassifier 0.968421 0.960525 0.960525 0.968242 0.0119977
AdaBoostClassifier 0.961404 0.959245 0.959245 0.961444 0.204998
ExtraTreesClassifier 0.961404 0.957138 0.957138 0.961362 0.0270066
KNeighborsClassifier 0.961404 0.95503 0.95503 0.961276 0.0560005
BaggingClassifier 0.947368 0.954577 0.954577 0.947882 0.0559971
BernoulliNB 0.950877 0.951003 0.951003 0.951072 0.0169988
LinearDiscriminantAnalysis 0.961404 0.950816 0.950816 0.961089 0.0199995
GaussianNB 0.954386 0.949536 0.949536 0.954337 0.0139935
NuSVC 0.954386 0.943215 0.943215 0.954014 0.019989
DecisionTreeClassifier 0.936842 0.933693 0.933693 0.936971 0.0170023
NearestCentroid 0.947368 0.933506 0.933506 0.946801 0.0160074
ExtraTreeClassifier 0.922807 0.912168 0.912168 0.922462 0.0109999
CheckingClassifier 0.361404 0.5 0.5 0.191879 0.0170043
DummyClassifier 0.512281 0.489598 0.489598 0.518924 0.0119965

Regression

from lazypredict.Supervised import LazyRegressor
from sklearn import datasets
from sklearn.utils import shuffle
import numpy as np boston = datasets.load_boston()
X, y = shuffle(boston.data, boston.target, random_state=13)
X = X.astype(np.float32) offset = int(X.shape[0] * 0.9) X_train, y_train = X[:offset], y[:offset]
X_test, y_test = X[offset:], y[offset:] reg = LazyRegressor(verbose=0, ignore_warnings=False, custom_metric=None)
models, predictions = reg.fit(X_train, X_test, y_train, y_test) print(models)
Model Adjusted R-Squared R-Squared RMSE Time Taken
SVR 0.83 0.88 2.62 0.01
BaggingRegressor 0.83 0.88 2.63 0.03
NuSVR 0.82 0.86 2.76 0.03
RandomForestRegressor 0.81 0.86 2.78 0.21
XGBRegressor 0.81 0.86 2.79 0.06
GradientBoostingRegressor 0.81 0.86 2.84 0.11
ExtraTreesRegressor 0.79 0.84 2.98 0.12
AdaBoostRegressor 0.78 0.83 3.04 0.07
HistGradientBoostingRegressor 0.77 0.83 3.06 0.17
PoissonRegressor 0.77 0.83 3.11 0.01
LGBMRegressor 0.77 0.83 3.11 0.07
KNeighborsRegressor 0.77 0.83 3.12 0.01
DecisionTreeRegressor 0.65 0.74 3.79 0.01
MLPRegressor 0.65 0.74 3.80 1.63
HuberRegressor 0.64 0.74 3.84 0.01
GammaRegressor 0.64 0.73 3.88 0.01
LinearSVR 0.62 0.72 3.96 0.01
RidgeCV 0.62 0.72 3.97 0.01
BayesianRidge 0.62 0.72 3.97 0.01
Ridge 0.62 0.72 3.97 0.01
TransformedTargetRegressor 0.62 0.72 3.97 0.01
LinearRegression 0.62 0.72 3.97 0.01
ElasticNetCV 0.62 0.72 3.98 0.04
LassoCV 0.62 0.72 3.98 0.06
LassoLarsIC 0.62 0.72 3.98 0.01
LassoLarsCV 0.62 0.72 3.98 0.02
Lars 0.61 0.72 3.99 0.01
LarsCV 0.61 0.71 4.02 0.04
SGDRegressor 0.60 0.70 4.07 0.01
TweedieRegressor 0.59 0.70 4.12 0.01
GeneralizedLinearRegressor 0.59 0.70 4.12 0.01
ElasticNet 0.58 0.69 4.16 0.01
Lasso 0.54 0.66 4.35 0.02
RANSACRegressor 0.53 0.65 4.41 0.04
OrthogonalMatchingPursuitCV 0.45 0.59 4.78 0.02
PassiveAggressiveRegressor 0.37 0.54 5.09 0.01
GaussianProcessRegressor 0.23 0.43 5.65 0.03
OrthogonalMatchingPursuit 0.16 0.38 5.89 0.01
ExtraTreeRegressor 0.08 0.32 6.17 0.01
DummyRegressor -0.38 -0.02 7.56 0.01
LassoLars -0.38 -0.02 7.56 0.01
KernelRidge -11.50 -8.25 22.74 0.01

Hi vọng bài viết này sẽ giúp các bạn trong việc xử lí bài toán về Machine Learning

Bình luận

Bài viết tương tự

- vừa được xem lúc

Thuật toán Minimax (AI trong Game)

Vừa qua mình có làm game dạng như caro và đã làm AI cho nó có dùng thuật toán minimax thấy hay hay nên post lên chia sẻ cho mọi người cùng tham khảo. Bài viết này mình chỉ viết về những cái cơ bản của

0 0 59

- vừa được xem lúc

[Computer Vision] Object Detection (nhận diện vật thể) chỉ với 10 dòng code sử dụng ImageAI

Object Detection. Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy (Computer Vision).

0 0 87

- vừa được xem lúc

Tổng quan Trí tuệ nhân tạo. Phân biệt AI - Machine Learning - Deep Learning

1. Sự khác nhau giữa AI - Machine Learning - Deep Learning.

0 0 33

- vừa được xem lúc

BERT- bước đột phá mới trong công nghệ xử lý ngôn ngữ tự nhiên của Google

Có thể một số bạn quan tâm đã biết, ngày 2/11 vừa qua, trên Blog của Google AI đã công bố một bài viết mới giới thiệu về BERT, một nghiên cứu mới mang tính đột phá của Google trong lĩnh vực xử lý ngôn

0 0 47

- vừa được xem lúc

Conda virtual environment: thực hành, làm việc với AI nói riêng một cách hiệu quả

Chắc hẳn với những ai đã và đang làm việc trong lĩnh vực AI không còn quá xa lạ với conda - một package manager và environment manager vô cùng hữu ích trong công việc. Đứng trên góc nhìn một người mới

0 0 27

- vừa được xem lúc

How Does Programming Language Help in AI Development?

So, did you hear that Facebook is now Meta? Well, of course, you did. Whom am I kidding? But you had a little bit of idea of that, but you actually don’t know what all this metaverse and Artificial in

0 0 45