回归

在使用 PHP-ML 进行分类时,我们为新观察指定了标签。回归几乎相同,不同之处在于输出值不是类标签而是连续值。它广泛用于预测和预测。PHP-ML 支持以下回归算法

  • 支持向量回归
  • LeastSquares 线性回归

回归与分类中使用的 trainpredict 方法相同。

支持向量回归

这是 SVM(支持向量机)的回归版本。分类的第一步是训练我们的模型。

// Import library
use Phpml\Regression\SVR;
use Phpml\SupportVectorMachine\Kernel;

// Training data
$samples = [[60], [61], [62], [63], [65]];
$targets = [3.1, 3.6, 3.8, 4, 4.1];

// Initialize regression engine
$regression = new SVR(Kernel::LINEAR);
// Train regression engine
$regression->train($samples, $targets);

在回归中,$targets 不是类别标签而是分类。这是两者的差异化因素之一。在使用数据训练我们的模型后,我们可以从实际预测开始

$regression->predict([64])  // return 4.03

请注意,预测会返回目标之外的值。

LeastSquares 线性回归

该算法使用 least squares method 来近似解。以下演示了一个简单的训练和预测代码

// Training data
$samples = [[60], [61], [62], [63], [65]];
$targets = [3.1, 3.6, 3.8, 4, 4.1];

// Initialize regression engine
$regression = new LeastSquares();
// Train engine
$regression->train($samples, $targets);
// Predict using trained engine
$regression->predict([64]); // return 4.06

PHP-ML 还提供了 Multiple Linear Regression 的选项。其示例代码如下

$samples = [[73676, 1996], [77006, 1998], [10565, 2000], [146088, 1995], [15000, 2001], [65940, 2000], [9300, 2000], [93739, 1996], [153260, 1994], [17764, 2002], [57000, 1998], [15000, 2000]];
$targets = [2000, 2750, 15500, 960, 4400, 8800, 7100, 2550, 1025, 5900, 4600, 4400];

$regression = new LeastSquares();
$regression->train($samples, $targets);
$regression->predict([60000, 1996]) // return 4094.82

当多种因素或性状确定结果时,Multiple Linear Regression 特别有用。

实际案例

现在让我们在现实生活场景中应用回归。

假设你运行一个非常受欢迎的网站,但流量不断变化。你需要一种能够预测在任何给定时刻部署所需服务器数量的解决方案。让我们假设你的托管服务提供商为你提供 api 来生成服务器,每个服务器需要 15 分钟才能启动。根据先前的流量数据和回归数据,你可以预测在任何时间点都会遇到应用程序的流量。使用该知识,你可以在激增前 15 分钟启动服务器,从而防止你的应用程序脱机。