如何加速随机森林回归和SVR的训练?

问题描述 投票:0回答:1

我正在尝试创建一个回归模型来使用以下数据集预测比特币的收盘价:https://www.kaggle.com/datasets/prasoonkottarathil/btcinusd/data?select=BTC-2021min.csv

它有超过 600k 条记录和 15 个功能(其中一些是我创建的)。

我曾多次尝试在谷歌colab和我的笔记本电脑上训练它。我什至把它留了一夜,但花了太长时间。

有什么办法可以加快速度吗?

笔记本电脑规格:

CPU: Ryzen 7 5800H  
GPU: RTX 3050  
RAM: 16 gb

这是训练代码:

models = {
    'Linear Regression': {
        'model': LinearRegression(),
        'params': {}
    },
    'Ridge Regression': {
        'model': Ridge(random_state=42),
        'params': {'alpha': [0.01, 0.1, 1, 5, 10, 50, 100]}
    },
    'Lasso Regression': {
        'model': Lasso(random_state=42),
        'params': {'alpha': [0.001, 0.01, 0.1, 1, 10]}
    },
    'Decision Tree': {
        'model': DecisionTreeRegressor(random_state=42),
        'params': {'max_depth': [None, 5, 10, 20], 'min_samples_split': [2, 5, 10]}
    },
    'Random Forest': {
        'model': RandomForestRegressor(random_state=42),
        'params': {'n_estimators': [50, 100, 200], 'max_depth': [None, 5, 10], 'min_samples_split': [2, 5, 10]}
    },
    'Support Vector Regression': {
        'model': SVR(),
        'params': {'kernel': ['linear', 'rbf'], 'C': [0.1, 1, 10], 'epsilon': [0.01, 0.1, 1]}
    }
}

results = {}

for model_name, model_data in models.items():
    print(f"Tuning {model_name}")
    grid_search = GridSearchCV(model_data['model'], model_data['params'], cv=5, scoring='neg_mean_squared_error', verbose=1)
    grid_search.fit(X_train, y_train)

    # Get the best model
    best_model = grid_search.best_estimator_

    # Predictions
    y_pred = best_model.predict(X_test)

    # Performance Metrics
    mae = mean_absolute_error(y_test, y_pred)
    mse = mean_squared_error(y_test, y_pred)
    rmse = np.sqrt(mse)
    r2 = r2_score(y_test, y_pred)

    results[model_name] = {
        'MAE': mae,
        'MSE': mse,
        'RMSE': rmse,
        'R2': r2,
        'Best Model': best_model,
        'Best Params': grid_search.best_params_
    }
python-3.x machine-learning scikit-learn regression
1个回答
0
投票

这可能不会显着加快训练时间,但您可以尝试优化数据,例如使用 float32 而不是 float64。您还可以对随机森林使用提前停止,因为它本身并不使用 GPU。您还可以分析代码并查看导致训练缓慢的瓶颈。

© www.soinside.com 2019 - 2024. All rights reserved.