Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于梯度下降的多元线性回归

基于梯度下降的多元线性回归
EN

Stack Overflow用户
提问于 2020-12-12 21:02:35
回答 1查看 417关注 0票数 1

我正在学习使用梯度下降的多元线性回归。我编写了下面的python代码:

代码语言:javascript
运行
AI代码解释
复制
    import pandas as pd
    import numpy as np
    
    x1 = np.array([1,2,3,4,5,6,7,8,9,10],dtype='float64')  
    x2 = np.array([5,10,20,40,80,160,320,640,1280,2560],dtype='float64')
    y = np.array([350,700,1300,2400,4500,8600,16700,32800,64900,129000],dtype='float64')
    
    def multivar_gradient_descent(x1,x2,y):
        w1=w2=w0=0
        iteration=500
        n=len(x1)
        learning_rate=0.02
        
        for i in range(iteration):
            y_predicted = w1 * x1 + w2 * x2 +w0 
            cost = (1*(2/n))*float(sum((y_predicted-y)**2))  # cost function
            
            x1d = sum(x1*(y_predicted-y))/n  # derivative for feature x1
            x2d = sum(x2*(y_predicted-y))/n   # derivative for feature x2
            cd =  sum(1*(y-y_predicted))/n # derivative for bias
    
            w1 = w1 - learning_rate * x1d
            w2 = w2 - learning_rate * x2d
            w0 = w0 - learning_rate * cd
            print(f"Iteration {i}: a= {w1}, b = {w2}, c = {w0}, cost = {cost} ")
    
        return w1,w2, w0
    
    w1,w2,w0 = multivar_gradient_descent(x1,x2,y)
    w1,w2,w0

然而,结果是成本函数越来越高,直到变成inf (如下所示)。我花了好几个小时检查衍生产品的公式和成本函数,但我无法确定错误在哪里。我感到很沮丧,希望有人能帮我这个忙。谢谢。

代码语言:javascript
运行
AI代码解释
复制
Iteration 0: a= 4685.5, b = 883029.5, c = -522.5, cost = 4462002500.0 
Iteration 1: a= -81383008.375, b = -15430704757.735, c = 9032851.74, cost = 1.3626144151911089e+18 
Iteration 2: a= 1422228350500.3176, b = 269662832866446.66, c = -157855848816.2755, cost = 4.161440004246925e+26 
Iteration 3: a= -2.4854478828631716e+16, b = -4.712554891970221e+18, c = 2758646212375989.0, cost = 1.2709085355243152e+35 
Iteration 4: a= 4.343501644116814e+20, b = 8.235533749226551e+22, c = -4.820935671838988e+19, cost = 3.881369199171854e+43 
Iteration 5: a= -7.590586253095058e+24, b = -1.4392196523846473e+27, c = 8.424937075201089e+23, cost = 1.1853745914189544e+52 
Iteration 6: a= 1.326510368511469e+29, b = 2.5151414235959125e+31, c = -1.472319266480111e+28, cost = 3.620147555871397e+60 
Iteration 7: a= -2.3181737208386835e+33, b = -4.3953932745475034e+35, c = 2.5729854159139745e+32, cost = 1.105597202871857e+69 
Iteration 8: a= 4.051177832870898e+37, b = 7.681270666011396e+39, c = -4.496479874458965e+36, cost = 3.37650649906685e+77 
Iteration 9: a= -7.079729049644685e+41, b = -1.3423581317783506e+44, c = 7.857926879944079e+40, cost = 1.0311889455424087e+86 
Iteration 10: a= 1.2372343423113349e+46, b = 2.3458688442326932e+48, c = -1.3732300949746233e+45, cost = 3.1492628303921182e+94 
Iteration 11: a= -2.1621573467862958e+50, b = -4.099577083092681e+52, c = 2.3998198539580117e+49, cost = 9.617884692967256e+102 
Iteration 12: a= 3.7785278280657085e+54, b = 7.164310273158479e+56, c = -4.193860411686855e+53, cost = 2.937312982406619e+111 
Iteration 13: a= -6.603253259383672e+58, b = -1.2520155286691985e+61, c = 7.32907727374022e+57, cost = 8.970587433766233e+119 
Iteration 14: a= 1.1539667190934036e+63, b = 2.187988549158328e+65, c = -1.280809765026251e+62, cost = 2.739627659321216e+128 
Iteration 15: a= -2.0166410956339498e+67, b = -3.823669740212017e+69, c = 2.238308579532037e+66, cost = 8.366854196711946e+136 
Iteration 16: a= 3.524227554668779e+71, b = 6.682142046784112e+73, c = -3.9116076672823015e+70, cost = 2.5552468384109146e+145 
Iteration 17: a= -6.158844964518726e+75, b = -1.1677531106785476e+78, c = 6.835819994909099e+74, cost = 7.80375306142527e+153 
Iteration 18: a= 1.0763031248287995e+80, b = 2.0407338215081817e+82, c = -1.194609454154816e+79, cost = 2.3832751078395456e+162 
Iteration 19: a= -1.8809182942418207e+84, b = -3.5663313522046286e+86, c = 2.0876672425822773e+83, cost = 7.278549429920333e+170 
Iteration 20: a= 3.287042049772272e+88, b = 6.232424424816986e+90, c = -3.648350932258958e+87, cost = 2.2228773182554595e+179 
Iteration 21: a= -5.744345977200645e+92, b = -1.0891616727381027e+95, c = 6.375759629418162e+91, cost = 6.788692746528022e+187 
Iteration 22: a= 1.0038664004334024e+97, b = 1.9033895455483145e+99, c = -1.1142105462686083e+96, cost = 2.0732745270409844e+196 
Iteration 23: a= -1.7543298295730705e+101, b = -3.326312202113057e+103, c = 1.9471642809242535e+100, cost = 6.331804111587467e+204 
Iteration 24: a= 3.065819465220816e+105, b = 5.812973435628952e+107, c = -3.402811748286256e+104, cost = 1.9337402155196325e+213 
Iteration 25: a= -5.357743358678581e+109, b = -1.0158595498601174e+112, c = 5.946661977991267e+108, cost = 5.905664728753603e+221 
Iteration 26: a= 9.363047701635277e+113, b = 1.7752887338463183e+116, c = -1.0392225987316703e+113, cost = 1.8035967607506306e+230 
Iteration 27: a= -1.6362609478315793e+118, b = -3.102446680700735e+120, c = 1.816117367544431e+117, cost = 5.508205129817299e+238 
Iteration 28: a= 2.8594854738709632e+122, b = 5.421752091975047e+124, c = -3.1737976990896245e+121, cost = 1.6822121447766637e+247 
Iteration 29: a= -4.997159643830032e+126, b = -9.474907636509772e+128, c = 5.546443206127292e+125, cost = 5.13749512471037e+255 
Iteration 30: a= 8.732901332811723e+130, b = 1.655809288168471e+133, c = -9.692814462503292e+129, cost = 1.5689968853439082e+264 
Iteration 31: a= -1.5261382690222234e+135, b = -2.8936476258832726e+137, c = 1.6938900970034892e+134, cost = 4.791734427889445e+272 
Iteration 32: a= 2.667038052317318e+139, b = 5.056860498736353e+141, c = -2.960196619698286e+138, cost = 1.46340117318896e+281 
Iteration 33: a= -4.660843723593812e+143, b = -8.837232935670386e+145, c = 5.173159724337836e+142, cost = 4.4692439155775235e+289 
Iteration 34: a= 8.145164706926056e+147, b = 1.5443709783730996e+150, c = -9.040474323708519e+146, cost = 1.364912201990395e+298 
Iteration 35: a= -1.4234270024354842e+152, b = -2.698901043124031e+154, c = 1.5798888948493553e+151, cost = 4.168457471405497e+306 
Iteration 36: a= 2.487542614748579e+156, b = 4.716526626425798e+158, c = -2.760971195418877e+155, cost = inf 
Iteration 37: a= -4.347162341028204e+160, b = -8.24247464517401e+162, c = 4.824998749459281e+159, cost = inf 
Iteration 38: a= 7.596983588224419e+164, b = 1.4404326246286964e+167, c = -8.432037599998082e+163, cost = inf 
Iteration 39: a= -1.3276283495338805e+169, b = -2.517261181154549e+171, c = 1.473560135031107e+168, cost = inf 
Iteration 40: a= 2.32012747430196e+173, b = 4.399097705650062e+175, c = -2.5751539243057795e+172, cost = inf 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-12 22:04:57

这里的问题是,您将权重初始化为0,如w1=w2=w0=0中所示。

如果所有的权值都是用0初始化的,那么对于W[l]中的每个w,损失函数的导数都是相同的,因此在以后的迭代中,所有的权值都是相同的。

这样,我们就必须将权重初始化为一个随机值。

具有较大随机值的权值初始化:

当权值被一个很高的值初始化时,术语np.dot(W,X)+b就会显着地提高,如果应用像sigmoid()这样的激活函数,该函数就会将其值映射到1附近,在那里梯度的斜率变化很慢,学习需要很长的时间。

有许多方法可以初始化权重,例如在KerasDenseLSTMCNN层中,都是使用glorot_uniform (也称为Xavier initialization )初始化的。

出于您的目的,您可以按照以下公式使用numpy的random.randn随机初始化权重,其中l是一个特定的层。这将导致使用0到1之间的值随机初始化权重:

代码语言:javascript
运行
AI代码解释
复制
# Specify the random seed value for reproducibility.
np.random.seed(3)
W[l] = np.random.randn(l, l-1)

另一件应该做的事是将特征归一化作为预处理步骤,其中返回数据的规范化版本,其中每个特征的平均值为0,标准偏差为1。在使用学习算法时,这通常是一个很好的预处理步骤。

代码语言:javascript
运行
AI代码解释
复制
def  featureNormalize(X):
    """
    X : The dataset of shape (m x n)
    """
    X_norm = X.copy()
    mu = np.zeros(X.shape[1])
    sigma = np.zeros(X.shape[1])

    mu = np.mean(X, axis=0)
    sigma = np.std(X, axis=0)
    X_norm = (X-mu)/ sigma
    return X_norm
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65272532

复制
相关文章
centos7升级内核从3到4或从3到5
//升级内核,参考https://elrepo.org/linux/kernel/el7/x86_64/RPMS/ 里显示的 elrepo-release的版本进行如下第2步的安装
Windows技术交流
2019/12/25
1.4K0
1284 2 3 5 7的倍数
1284 2 3 5 7的倍数 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。 Input 输入1个数N(1 <= N <= 10^18)。 Output 输出不是2 3 5 7的倍数的数共有多少。 Input示例 10 Output示例 1 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!
Angel_Kitty
2018/04/08
9200
centos7内核升级最新BBR内核
CENTOS7作为常用的服务器系统,其正式版的内核都是相当保守的。以下介绍以下升级最新版本的内核方法,目的是为了实现内核的BBR功能,改善CENTOS7的网络功能
Zach
2019/12/30
3.8K0
CentOS 7 升级 Linux 内核
升级 CentOS 内核参考资料 1 升级 CentOS 内核参考资料 2 通过 /proc 虚拟文件系统读取或配置内核 Linux 内核官网 CentOS 官网
全栈程序员站长
2022/09/15
4.1K0
Centos 7 升级系统内核
我们使用 Linux 来表示整个操作系统,但严格地来说,Linux 只是个内核。各种发行版(RedHat、ubuntu、CentOS等)是一个完整功能的系统,它建立在内核之上,具有各种各样的应用程序工具和库。
玖柒的小窝
2021/12/09
1.5K0
5月7日,带您揭秘数据库内核技术
数据库内核技术是数据库的底层技术根基,腾讯云数据库在基础架构领域上一直坚持前沿技术探索与实际落地应用相结合,持续提升产品性能,助力企业国产化升级,推动国产数据库发展行稳致远。 近年来,腾讯云数据库积极拥抱云原生和国产化的趋势,致力于发展自研数据库技术,帮助全行业用户降低上云成本。其中腾讯云TDSQL已被3000多家来自金融、公共服务和电信垂直行业的客户采用,中国十大银行中的六家都应用了该产品。 5月7日19:00-21:40,腾讯云数据库"DB  TALK"系列技术分享会第二期“数据库内核技术探秘”专场即
腾讯云数据库 TencentDB
2022/04/26
8430
5月7日,带您揭秘数据库内核技术
【欧拉计划第 1 题】3 或 5 的倍数 Multiples of 3 or 5
由于暴力解法的算法执行效率很低,需要重复遍历 1000 次,自然效率低下。我们只需要枚举 3 的倍数之和、5 的倍数之和,最后减去它们的最小公倍数之和,便可节省不少时间
攻城狮杰森
2022/06/03
1.3K0
【欧拉计划第 1 题】3 或 5 的倍数 Multiples of 3 or 5
Windows内核开发-3-内核编程基础
这里会深入讲解kernel内核的API、结构体、和一些定义。考察代码在内核驱动中运行的机制。最后把所有知识合在一起写一个有用的驱动。
全栈程序员站长
2022/09/06
1.7K0
Windows内核开发-3-内核编程基础
CentOS7 升级最新内核
yum 方式升级到最新版 导入 elrepo 仓库 rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm 列出可用的内核相关包 # kernel-lt:长期支持版本,用于修复旧版内核的 BUG,这些内核只会修复重大 BUG,并且不会频繁发布版本。 # kernel-ml:最新稳定版本 yum --d
陳斯托洛夫斯記
2022/10/27
2.4K0
CentOS7 升级最新内核
CentOS7修改内核版本
因为研究测试fabric需要安装docker,而docker又对linux内核版本有要求,因此对测试的机器内核升级,以下为整理的内核升级方法步骤,忘指正。
用户4988376
2021/07/21
2K0
centos7 删除无用内核
正常情况有两个启动项,一个是“正常启动”,另一个是“救援模式启动”(rescue)。 如果启动项多于2个,说明当前系统有旧内核未删除。原因是CentOS更新后不会自动删除旧内核。 默认以新内核启动,可以在启动选项中临时选择,也可以修改配置永久指定。
herve
2018/09/20
2.6K0
CentOS 7内核升级操作参考
CentOS(Community Enterprise Operating System)是Linux发行版之一,它由来自于Red Hat Enterprise Linux(RHEL)依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用[1]。自从红帽公司单方面宣布终止CentOS的开发后,我们腾讯云的用户也逐步开始将应用迁移到其它操作系统上。由于CentOS 7的维护终止日期在2024年6月30日,距离当前还有一段时间,所以还有少量客户在继续使用着该版本。
dinghailong
2023/01/06
5.5K0
centos7 内核如何升级
需求:由于客户容器化的需要,需要将当前的操作系统升级为5.10.7的版本。 内核升级操作步骤如下: 步骤一:载入公钥、安装elrepo rpm -import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 步骤二、载入elrepo-kernel元数据 yum --disablerepo=\* --enablerepo
Linux运维技术之路
2022/06/07
2.6K0
PHP7内核剖析.epub
PHP作为最流行的语言之一,自第一个版本发布至今的二十几年里经历了多次重大改进,PHP7版本最大的特色在于其性能上的突破,比PHP5快了一倍。目前PHP7已经得到了广泛应用,越来越多的项目从PHP5迁移到了PHP7。目前,关于PHP内核的资料非常有限,《PHP7内核剖析》以当前最为流行的PHP7版本为基础,系统性地、尽可能详细地介绍PHP语言底层的实现,旨在帮助更多的开发者进一步理解PHP,参与到PHP的实现中,为未来PHP的发展贡献一份力量!全书内容主要包括PHP数据类型的实现、PHP的编译及执行、PHP内存的管理、函数及面向对象的实现、PHP基础语法的实现,以及PHP扩展的开发。《PHP7内核剖析》适用于有一定C语言基础的PHP高级工程师,或者想了解PHP7的内部实现、扩展开发的工程师。
用户3157710
2019/03/20
1.4K0
PHP7内核剖析.epub
centos7 选定默认启动内核,及删除无用内核
(adsbygoogle = window.adsbygoogle || []).push({});
拓荒者
2019/03/11
1.3K0
如何查看linux系统内核版本_centos7内核版本
该命令适用于所有Linux系统,会显示出完整的版本信息,包括Linux系统的名称,如Debian、Ubuntu、CentOS等,和对应的版本号,以及该版本的代号,例如在Debian 8中将会显示代号jessie。
全栈程序员站长
2022/09/25
7.4K0
centos7 选定默认启动内核,及删除无用内核
(adsbygoogle = window.adsbygoogle || []).push({});
拓荒者
2019/05/31
1.2K0
PHP内核之旅-5.强大的数组
一、数组的内部结构 1.底层实现为散列表(HashTable,也称作哈希表) 2.散列表的概念: 是根据关键码值(Key value)而直接进行访问的数据结构。通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。复杂度为O(1)。 文件路径\Zend\zend_types.h _zend_array结构: 1 typedef struct _zend_array zend_array; 2 typedef struct _zend_arra
悟空聊架构
2018/06/26
4750
3.安装PHP5和PHP7
这个路径解压处理虽然不报错,但是没有解压过程,echo查看不报错。==--因为这里没有-v==
py3study
2020/01/08
9690
LAMP(3)安装PHP5、安装PHP7
2.下载包: wget http://cn2.php.net/distributions/php-5.6.30.tar.gz
py3study
2020/01/17
1.1K0

相似问题

音乐下载不在这里

10

为傻瓜创建Ubuntu网络

10

为什么我的化名不在Zsh工作?

20

为什么USB不在非UEFI模式下工作?

20

为什么captchas不在UBUNTU浏览器中工作?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档