【云计算】机器学习Regression-CaseStudy之回归的案例分析
小标 2018-12-24 来源 : 阅读 769 评论 0

摘要:本文主要向大家介绍了【云计算】机器学习Regression-CaseStudy之回归的案例分析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】机器学习Regression-CaseStudy之回归的案例分析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

Objective

通过训练宝可梦属性的历史数据构建回归模型,输入宝可梦进化前的属性数据,预测宝可梦进化后的Combat Power (CP)。

step1:Model

假设进化前的xcp

与进化后的xcp的(即y)存在关系f1,f2…fn,(fi=bi+wixcp,i=1,2…n)


step2:Goodness of Function

xicp

表示第i个观测(进化前的CP),y^i表示第i个观测的真实值(进化后的CP),现在捕捉10只宝可梦,记录这10只宝可梦进化前和进化后的CP(xicp,y^i,i=1,2…10),在这一案例中L(w,b)=∑10n=1(y^n−(b+wxncp))2


Loss function L由w,b

控制,可视化如图,冷色调代表低L值,暖色调代表高L

值,

step3:Best Function

从Step1中的f1,f2…fn

选择最优函数f∗,f∗=argminf∈FL(f),在这一案例中,即w∗,b∗=argminw,bL(w,b)


求L

函数最小值问题一般用梯度下降法来进行计算,步骤如下:

随机初始化w0,b0


计算函数L(w,b)

w0,b0

处的偏导

dLdw|w=w0,dLdb|b=b0

w1:=w0−ηdLdw|w=w0,b1:=b0−ηdLdb|b=b0,

,其中

η

为学习速率(Learning rate)

重复第二步直到w,b

收敛

注意:梯度下降方法可能得到的是局部最优,在线性回归模型中,函数是凸的,因此梯度下降得到的最优解即全局最优解1

使用梯度下降算法求解案例最小化问题,

minL(w,b)=min∑n=110(y^n−(b+wxncp))2


∂L∂w=∑n=1102(y^n−(b+wxncp))(−xncp),∂L∂b=∑n=1102(y^n−(b+wxncp))(−1)

en=y^n−f∗(xncp),n=1,2…10

,表示训练集中第

n

个观测的误差,使用新捕捉的10只宝可梦作为测试集计算平均误差,以此来评价模型的泛化能力,现在我们考虑更复杂的线性模型,即在Step1中的

f

不再仅仅使用的

xcp

一次变量。(tips:模型的总误差可以从bias和variance两方面考虑,bias衡量训练集的拟合效果,variance衡量测试集结果的稳定性)

Model

Best Function

训练集平均误差

测试集平均误差

y=b+wxcp    

b=−188.4,w=2.7    

35.0    31.9    

y=b+w1xcp+w2x2cp    

b=−10.3,w1=1.0,w2=2.7∗10−3    

15.4    18.4    

y=b+w1xcp+w2x2cp+w3x3cp    

b=6.4,w1=0.66,w2=4.3∗10−3,w3=−1.8∗10−6    

15.3    18.1    

y=b+w1xcp+w2x2cp+w3x3cp+w4x4cp    

………    

14.9    28.8    

y=b+w1xcp+w2x2cp+w3x3cp+w4x4cp+w5x5cp    

………    

12.8    232.1    

当模型越复杂,训练集平均误差越低,如图可以直观地理解,在越复杂的模型(对应越大的集合)找到的best function拟合效果显然越好,但是测试集平均误差并不是单调递减,在引入4次、5次项之后反而急剧增大,此时产生了过拟合问题(可以尝试增加训练集样本来解决)。

现在我们考虑更复杂的线性模型,即在Step1中的f

不再仅仅使用的

xcp

这一变量,引入变量

xs

(宝可梦种族),此时训练集平均误差为3.8,测试集平均误差为14.3,模型拟合与泛化效果都增强,在此基础上考虑变量的二次项,

此时模型过拟合,使用正则化方法来解决过拟合问题,即使Step2中的loss function 不仅仅考虑error,还考虑了参数个数,L=∑(y^n−(b+∑wxncp))2+λ∑(wi)2

此时我们假设平滑的f更接近真正的f∗


为了兼顾最小化第二项,训练集平均误差相对于没有正则化的方法高,但是测试集平均误差降低,大大减少了过拟合的影响。

demo

# 进化前后CP值数据x_data=[338.,333.,328.,207.,226.,25.,179.,60.,200.,606.]
y_data=[640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.]# 假设模型#y_data = b + w*x_data# 初始化w、bw,b = -4,-120# 学习速率lr = 0.000001# 迭代次数iter = 100000b_history=[b]
w_history=[w]for i in range(iter):
   b_grad = 0.0
   w_grad = 0.0
   for n in range(len(x_data)):
       b_grad -= 2.0*(y_data[n] - b*w*x_data[n])*1.0
       w_grad -= 2.0*(y_data[n] - b*w*x_data[n])*x_data[n]    # 更新参数
   b = b -lr*b_grad
   w = w -lr*w_grad    # 储存w、b
   b_history.append(b)
   w_history.append(w)

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程