梯度下降 java_梯度下降法求多元线性回归及Java实现

对于数据分析而言,我们总是极力找数学模型来描述数据发生的规律, 有的数据我们在二维空间就可以描述,有的数据则需要映射到更高维的空间。数据表现出来的分布可能是完全离散的,也可能是聚集成堆的,那么机器学习的任务就是让计算机自己在数据中学习到数据的规律。那么这个规律通常是可以用一些函数来描述,函数可能是线性的,也可能是非线性的,怎么找到这些函数,是机器学习的首要问题。

本篇博客尝试用梯度下降法,找到线性函数的参数,来拟合一个数据集。

假设我们有如下函数

a68fad72056ce3ad5caf23a9419167c6.png,其中x是一个三个维度,

fd09db62a42df87aa4daed8f60c312ff.png

写一个java程序来,随机产生100笔数据作为训练集。Random random = new Random();

double[] results = new double[100];

double[][] features = new double[100][3];

for (int i = 0; i < 100; i++) {

for (int j = 0; j < features[i].length; j++) {

features[i][j] = random.nextDouble();

}

results[i] = 3 * features[i][0] + 4 * features[i][1] + 5 * features[i][2] + 10;

}    上面的程序中results就是函数的值,features的第二维就是随机产生的3个x。

有了训练集,我们的任务就变成了如何求出3个各种的系数3、4、5,以及偏移量10,系数和偏移量可以取任意值,那么我们就得到了一个函数集,任务转化一下就变成了找出一个函数作用于训练集之后,与真实值的误差最小,如何评判误差的大小呢?我们需要定义一个函数来评判,那么给这个函数取一个名字,叫损失函数。这里,损失函数定义为

17df66b3df71cd8ebbab8e170eecc74e.png,其中

85ad9da606a97858fbcaa3d198bdaed2.png为真实值,问题就转化为在训练集中求如下函数:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值