编程技术网

关注微信公众号,定时推送前沿、专业、深度的编程技术资料。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

极客时间

用于监督学习的自动化机器学习(第1部分)

Kuanysh 机器学习 2022-1-11 00:48 4634人围观

腾讯云服务器

This article was published as a part of the Data Science Blogathon                      

本文旨在展示自动化机器学习,也称为Automl。具体而言,Automl将应用于需要监督学习的问题陈述,例如表格数据的回归和分类。本文没有讨论其他类型的机器学习问题,例如聚类,维度减少,时间序列预测,自然语言处理,推荐机或图像分析。

了解问题陈述和数据集

在跳跃到自动机之前,我们将涵盖传统机器学习工作流程的基本知识。获取数据集并理解问题陈述后,我们需要识别任务的目标。如上所述,本文重点关注回归和分类任务。因此,请确保数据集是表格。其他数据格式,例如时间序列,空间,图像或文本,不是这里的主要焦点。

接下来,探索数据集以了解一些基本信息,例如:

  • Descriptive statistics (count, mean, standard deviation, minimum, maximum, and quartile) using .describe();
  • Data type of each feature using .info() or .dtypes;
  • Count of values using .value_counts();
  • Null value existance using .isnull().sum();
  • Correlation test using .corr();
  • etc.

预处理

在理解数据集后,执行数据预处理。这部分非常重要,因为它将导致机器学习配件的训练数据集。数据预处理可以从处理丢失的数据开始。用户应决定是否使用缺少数据删除观察或应用数据归档。数据归纳方法以填充缺失的值,具有平均值,中位数,常数或大部分值。用户还可以注意异常值或坏数据以删除它们,以便它们不会是噪音。

Feature scaling is a very important process in data preprocessing. Feature scaling aims to scale the value range in each feature so that features with higher values and small variance do not dominate other features with low values and high variance. Some examples of feature scaling are standardization, normalization, log normalization, etc.

特征缩放适用于应用于梯度下降和基于距离的机器学习算法。基于树的算法不需要特征缩放下表显示了算法的示例。

表1算法的示例

Machine Learning Type Algorithms
Gradient descent-based Linear Regression, Ridge Regression, Lasso Regression, Elasticnet Regression, Neural Network (Deep Learning)
Distance-based K Nearest Neighbors, Support Vector Machine, K-means, Hierarchical clustering
Tree-based Decision Tree, Random Forest, Gradient Boosting Machine, Light GBM, Extreme Gradient Boosting,

请注意,表中还有群集算法。K-means和分层群集是无监督的学习算法。

特征工程:生成,选择和提取是指创建新功能的活动(预期帮助预测),删除低重要性或噪声,并分别添加新功能分别提取组合的现有功能的部分信息。这一部分非常重要,可以添加新功能或拆卸功能可以提高模型精度。切割特征数量也可以减少运行时间。

Creating model, hyperparameter-tuning, and model evaluation

The main part of Machine Learning is choosing an algorithm and build it. The algorithm needs training dataset features, a target or label feature, and some hyperparameters as the arguments. After the model is built, it is then used for predicting validation or test dataset to check the score. To improve the score, hyperparameter-tuning is performed. Hyperparameter-tuning is the activity of changing the hyperparameter(s) of each Machine Learning algorithms repeatedly until a satisfied model is obtained with a set of hyperparameters. The model is evaluated using scorer metrics, such Root Mean Squared Error, Mean Squared Error, or R2 for regression problems and accuracy, Area Under the ROC Curve, or F1-score for classification problems. The model score is evaluated using cross-validation. To read more about hyperparameter-tuning, please find this article.

通过一组高级计,我们可能想要尝试其他机器学习算法,以及带有封面调谐的最佳模型。有许多用于回归和分类问题的算法及其优势和缺点。不同的数据集具有不同的机器学习算法来构建最佳预测模型。我制造了使用上述步骤的常用机器学习算法的笔记本电脑。请在此处查看:

Tasks Scorer Notebook
Regression RMSE, MAE, R2

Regression-RMSE-House Prices

Binary or Multiclass classification Accuracy, F1-score

Binary or Multi-class Classification-Accuracy-Titanic Survival

Binary classification (with probability) AUC, accuracy, F1-score

Binary Classification-AUC-High Traffic

The datasets are provided by Kaggle. The regression task is to predict house prices using the parameters of the houses. The notebook contains the algorithms: Linear Regression, Ridge Regression, Lasso Regression, Elastic-net Regression, K Nearest Neighbors, Support Vector Machine, Decision Tree, Random Forest, Gradient Boosting Machine (GBM), Light GBM, Extreme Gradient Boosting (XGBoost), and Neural Network (Deep Learning).

二进制分类任务是预测泰坦尼克型乘客是否会生存或不存在。这是一个较新的数据集,于4月2021年4月(不是旧的泰坦尼奇数据集)。目标是将每种观察分类到课堂上“幸存下来”或不幸存下来“没有概率。如果类别超过2,则称为多级分类。但是,技术类似。笔记本包含算法:Logistic回归,天真贝叶斯,K最近邻居,支持向量机,决策树,随机森林,渐变升压机,轻型GBM,极端梯度升压和神经网络(深度学习)。请注意,某些算法可以执行回归和分类工作。

我创建的另一个笔记本是用概率预测二进制分类。它预测每个对位置,日期和时间的每个观察是高流量的。例如,如果高流量的概率为0.8,则不是高流量的概率为0.2。还有多标签分类,其预测了两个多个类的概率。

如果您已从上面的超链接看到我的笔记本电脑,则存在许多算法用于构建相同数据集的预测模型。但是,由于模型预测不同输出,因此应该使用哪种模型。最简单的方法只是用最佳分数(最低的RMSE或最高精度)挑选模型。或者,我们可以执行合并方法。合奏方法使用多个不同的机器学习算法来预测相同的数据集。最终输出是通过在分类中平均回归或大多数投票中的预测输出来确定的最终输出。实际上,随机森林,GBM和XGBoost也是合并方法。但是,他们开发了与训练数据的不同子集的决策树的相同类型的机器学习。

最后,如果令人满意,我们可以保存模型。可以在其他笔记本电脑中再次加载保存的模型以进行相同的预测。

图1机器学习工作流程。资料来源:由作者创建

自动化机器学习

The process to build Machine Learning models and choose the best model is very long. It takes many lines of code and much time to complete. However, Data Science and Machine Learning are associated with automation. Then, we have automated Machine learning or autoML. AutoML only needs a few lines to do most of the steps above, but not all of the steps. Figure 1 shows the workflow of Machine Learning. The autoML covers only the parts of data pre-processing, choosing model, and hyperparameter-tuning. The users still have to understand the goals, explore the dataset, and prepare the data.

用于结构化表格数据,图像,文本和其他预测的回归和分类任务有许多自动列档。下面是一个名为auto-sklearn的自动列录包之一的代码。DataSet是泰坦尼克的生存,与之前的笔记本相同。Satthias Feurer等人开发了自动Sklearn。(2015)本文“高效且坚固自动化机器学习”。Auto-Sklearn在Python脚本中可用。是的,sklearn或scikit-searn是用于在Python语言中执行机器学习的公共包装。上面笔记本电脑中的几乎所有算法都来自Sklearn。

# Install and import packages
!apt install -y build-essential swig curl
!curl https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt | xargs -n 1 -L 1 pip install
!pip install auto-sklearn
from autosklearn.classification import AutoSklearnClassifier
# Create the AutoSklearnClassifier
sklearn = AutoSklearnClassifier(time_left_for_this_task=3*60, per_run_time_limit=15, n_jobs=-1)
# Fit the training data
sklearn.fit(X_train, y_train)
# Sprint Statistics
print(sklearn.sprint_statistics())
# Predict the validation data
pred_sklearn = sklearn.predict(X_val)
# Compute the accuracy
print('Accuracy: ' + str(accuracy_score(y_val, pred_sklearn)))

输出:

  Dataset name: da588f6e-c217-11eb-802c-0242ac130202
  Metric: accuracy
  Best validation score: 0.769936
  Number of target algorithm runs: 26
  Number of successful target algorithm runs: 7
  Number of crashed target algorithm runs: 0
  Number of target algorithms that exceeded the time limit: 19
  Number of target algorithms that exceeded the memory limit: 0
Accuracy: 0.7710593242331447
# Prediction results
print('Confusion Matrix')
print(pd.DataFrame(confusion_matrix(y_val, pred_sklearn)))
print(classification_report(y_val, pred_sklearn))

输出:

Confusion Matrix
      0     1
0  8804  2215
1  2196  6052
              precision    recall  f1-score   support
           0       0.80      0.80      0.80     11019
           1       0.73      0.73      0.73      8248
    accuracy                           0.77     19267
   macro avg       0.77      0.77      0.77     19267
weighted avg       0.77      0.77      0.77     19267

该代码设置为运行3分钟,没有单次算法运行超过30秒。请参阅,只有几行,我们可以自动创建分类算法。我们甚至不需要考虑使用哪些算法或使用哪些超参数设置。即使是机器学习中的初学者也可以立即完成。我们可以获得最终结果。上面的代码已经运行了26个算法,但其中只有7个完成。另一个19算法超过了设定的时间限制。它可以达到0.771的准确性。要查找查找所选模型的过程,请运行此行

print(sklearn.show_models()).

以下代码也是自动sklearn,但对于回归工作。它开发了一种自动模型,以预测房价数据集。它可以从总共36个算法中的成功16个算法中找到一个带有28,130的模型。

# Install and import packages
!apt install -y build-essential swig curl
!curl https://raw.githubusercontent.com/automl/auto-sklearn/master/requirements.txt | xargs -n 1 -L 1 pip install
!pip install auto-sklearn
from autosklearn.regression import AutoSklearnRegressor
# Create the AutoSklearnRegessor
sklearn = AutoSklearnRegressor(time_left_for_this_task=3*60, per_run_time_limit=30, n_jobs=-1)
# Fit the training data
sklearn.fit(X_train, y_train)
# Sprint Statistics
print(sklearn.sprint_statistics())
# Predict the validation data
pred_sklearn = sklearn.predict(X_val)
# Compute the RMSE
rmse_sklearn=MSE(y_val, pred_sklearn)**0.5
print('RMSE: ' + str(rmse_sklearn))

输出:

Dataset name: 71040d02-c21a-11eb-803f-0242ac130202
  Metric: r2
  Best validation score: 0.888788
  Number of target algorithm runs: 36
  Number of successful target algorithm runs: 16
  Number of crashed target algorithm runs: 1
  Number of target algorithms that exceeded the time limit: 15
  Number of target algorithms that exceeded the memory limit: 4
RMSE: 28130.17557050461
# Scatter plot true and predicted values
plt.scatter(pred_sklearn, y_val, alpha=0.2)
plt.xlabel('predicted')
plt.ylabel('true value')
plt.text(100000, 400000, 'RMSE: ' + str(round(rmse_sklearn)))
plt.text(100000, 350000, 'MAE: ' + str(round(mean_absolute_error(y_val, pred_sklearn))))
plt.text(100000, 300000, 'R: ' + str(round(np.corrcoef(pred_sklearn, y_val)[0,1],2)))
plt.show()

输出:

# Scatter plot true and predicted values
plt.scatter(pred_sklearn, y_val, alpha=0.2)
plt.xlabel('predicted')
plt.ylabel('true value')
plt.text(100000, 400000, 'RMSE: ' + str(round(rmse_sklearn)))
plt.text(100000, 350000, 'MAE: ' + str(round(mean_absolute_error(y_val, pred_sklearn))))
plt.text(100000, 300000, 'R: ' + str(round(np.corrcoef(pred_sklearn, y_val)[0,1],2)))
plt.show()

图2来自Autosklearnregroundrarsor的散点图。资料来源:由作者创建

那么,你认为还需要机器学习科学家/工程师吗?

还有其他自动列档讨论,如Hyperopt-Sklearn,基于树的流水线优化工具(TPOT),AUrokeras,MLJAR等。但是,我们将在第2部分讨论它们。

关于作者

Connect with me here.

本文中显示的媒体不受分析vidhya所拥有的,并在提交人的自由裁量权使用。

有关的

转自:https://www.analyticsvidhya.com/blog/2021/06/automated-machine-learning-for-supervised-learning-part-1/
原作者: Rendyk
腾讯云服务器 阿里云服务器
关注微信
^