前提:本文中使用的算法是在《【线性回归】多元线性回归函数在Octave中的实现(二)》中进行描述。
命题:
根据生产环境的中的用户功能使用情况,来推断接下来的用户使用量。
使用数据如下:

x =
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17

y =

    6144
    3372
   21119
   15909
   15049
   12045
   10106
    2890
    3069
   11787
    9221
    7300
    5785
    3372
    1613
    1396
    1968

说明:
X表号天数(1,代表2018-12-01号;以后类似)
输出(Y):使用量,表示当天的使用量

以上就是实际如果,需要对之进行模拟,求解01-20,01-21号类似的预计用户使用情况。

思路:
1、首先直接的显示数据,以分析大概需要使用什么样的模型进行回归。Octave中数据显示如下:
【线性回归】生产应用中使用线性回归进行实际操练-LMLPHP

根据以上图形可以分析出以下两点:
1、看出应该大概是一个正弦函数的样子。那在进行模型设计的时候,需要考虑sin(x)的变量。
2、从上图中大概可以看出,有几个点比较异常(点1、点2,点3,点8,点9),其中点1、点2;点8、点9异常偏低。针对这四个点分析,发现原来这四个点都是在周六周天。也就是说如果我们的模型需要尽量准确那我们需要增加一个特征(是否周未)。

那到这里,我们的模型大概也就应该是:y=theta0+theta1x1+theta2sin(x1)+theta3*sin(x3)。
对止我们构建X的矩阵,如下所示:

1.00000    1.00000    0.84147    0.00000
1.00000    2.00000    0.90930    0.00000
1.00000    3.00000    0.14112    1.00000
1.00000    4.00000   -0.75680    1.00000
1.00000    5.00000   -0.95892    1.00000
1.00000    6.00000   -0.27942    1.00000
1.00000    7.00000    0.65699    1.00000
1.00000    8.00000    0.98936    0.00000
1.00000    9.00000    0.41212    0.00000
1.00000   10.00000   -0.54402    1.00000
1.00000   11.00000   -0.99999    1.00000
1.00000   12.00000   -0.53657    1.00000
1.00000   13.00000    0.42017    1.00000
1.00000   14.00000    0.99061    1.00000
1.00000   15.00000    0.65029    0.00000
1.00000   16.00000   -0.28790    0.00000
1.00000   17.00000   -0.96140    1.00000

将以上数据代入我们例(二)中的函数进行求解:

x=ones(size(l1.x)(1),4);
x(:,2)=l1.x;
x(:,3)=sin(x(:,2));
x([1,2,8,9,15,16],4)=0;
y=li.y;
theta=ones(4,1);
[Theta,bResult,ThSL]=RepeatGetMini(0.003,0.001,8000,x,y,theta)

查看训练的集是否正常拟合(可能不太看得清楚,在100多次的时候就已经看向0拟合,但是由于我设置的两次误差较小,所以拟合次数较多):
【线性回归】生产应用中使用线性回归进行实际操练-LMLPHP

最终我们得到结果如下:Theta =

我们再将实际的函数和用来预测的点

画出来看一下:
【线性回归】生产应用中使用线性回归进行实际操练-LMLPHP

最后,我们可以使用拟合的参数对未来的使用量进行预测:

结果如下 :

所以以上模型更适合在模拟在一个整月内的数据使用情况,然后以后再根据具体的天数进行拟合。对这种前半月、后半月的情况,很明显是不太适合的。

接下来的思考是:
1、从训练集上考虑,多个月的数据进行训练是否更可以得到一个比较可靠的模型?

以上内容如果有不正确或者更好的思路(如果解决梯度下降),也请大家一起过来拍砖。

01-31 03:56