php专区

 首页 > php专区 > PHP进阶 > 负载均衡 > 用线性回归方法计算直线斜率

用线性回归方法计算直线斜率

分享到:
【字体:
导读:
         摘要:最近在做设备负载预测,考虑到负载波动,需要拿出近似增长率来计算未来数天的设备负载增长状况,想想看以前的数学都没有学好,算法也没有搞好,只能求助同事和百度Google...

用线性回归方法计算直线斜率
最近在做设备负载预测,考虑到负载波动,需要拿出近似增长率来计算未来数天的设备负载增长状况,想想看以前的数学都没有学好,算法也没有搞好,只能求助同事和百度Google,最终还是折腾出来了。
点分布和趋近的直线

点分布和趋近的直线


  关于线性回归可以参考百度知道。其中采用最小二乘法可以比较容易的算出过往设备负载增长的斜率,具体公式如下:
最小二乘法公式

最小二乘法公式


  下面代码简单枚举历史10个点来计算该设备负载增长率:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//Y坐标值表示设备历史负载
$y=array(52.09, 52.4, 53.29, 54.22, 55.15, 55.83, 56.89, 56.98, 57.55, 57.8);
  
//X坐标值表示顺序天数
$x=array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
  
//计算X和Y均值
$ax=array_sum($x)/count($x);
$ay=array_sum($y)/count($y);
  
//计算斜率公式中的分母(em)和分子(ez)
$em= 0;
$ez= 0;
for($i= 0;$i
    //分母求和
    $em+= (($x[$i] -$ax) * ($y[$i] -$ay));
    //分子求和
    $ez+= pow(($x[$i] -$ax), 2);
}
  
//斜率0.69
echo$em/$ez;
  
//第十一个点预测负载值58.34
echo$em/$ez* 10 +$ay- ($em/$ez)*$ax;

  很多概念都不甚懂,反正数学是没有学好的,找来公式代一代,嘿嘿,还算可以,对于波动比较大的就比较难以预测,这个近似值还是很有参考意义的。

用线性回归方法计算直线斜率
分享到:
大流量网站如何做到负载均衡
大流量网站如何做到负载均衡 对于访问流量非常大的网站,每天几万甚至几十万的流量,这样一来就给网站服务器造成了很大的负担,如何做到负载均衡呢?下面总结几个简单的方法: 第一,确认服务器硬件是否足够支持当前的流量。服务器性能很重要。 普通的P4服务器一般最多能支持每天10万独立IP,如果访问量比这个...
WEB监控体系之设备负载监控
WEB监控体系之设备负载监控第一次写和工作密切相关的文章,却无从下手,胡乱写起,纯当总结。   设备负载监控属于硬件级的基础监控,比设备基础监控粒度要粗一些,属于设备基础监控上一层的硬件监控,适合于数量较大、具有集群特性的硬件综合指标监控。当然,其监控数据来源仍为单机设备基础信息。   单机基础硬件...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……