首页 > 代码库 > 12-少年,玩模型吗?手把手教你statsmodels建模(3)

12-少年,玩模型吗?手把手教你statsmodels建模(3)

生活中我们总是欢迎变化的,不变是温水,是地狱,最忌活成办公室的家具。然而变化终究是外界的,内心的信念不变,才使人身处顺境不眼晕,身处逆境如微风拂面。人的内心如孩童,总是期盼惊喜。可现实的”重锤“让成人如被电击的小白鼠小心翼翼,生怕行差踏错一步堕入万丈深渊。其实都是想象中的深渊,也是想象中的安全感,都是幻觉啊,少年。毁坏容易建设难,另一方面,不破则不立。我喜欢回忆去年此时,再看今年此时,展望明年此时。发现并没有活成一具雕塑。也有人行为艺术般每年相同日期、地点、人物拍照留念,其实记录的都是外形变化,哪能摄取心中气象万千呢?从前慢,回忆美,是因为经历丰富充实罢了。Anyway,学会温和地反击吧。朋友圈的大牛肖凯老师昨天发了一条金句:My only goal is to gradient boost over myself of yesterday. And to repeat this everyday with an unconquerable spirit.共勉:)

 

下面是今天的gradient boost,natural?(o>▽<)

 

4最优化:Optimization

 

技术分享

 

1. 函数求根(即函数零点)

 

技术分享

技术分享

技术分享

 

2. 函数求最小值

 

技术分享

技术分享

技术分享

技术分享

 

由上图可见,当初始值为 10 时,函数找到的是局部最小值点,可见 minimize 的默认算法对起始点的依赖性。那么怎么才能不管初始值在哪个位置,都能找到全局最小值点呢?

 

可以使用 basinhopping 函数找到全局最优点。相关背后算法,可以查看帮助文档:

技术分享

 

技术分享

 

我们设初始值为 10 看是否能找到全局最小值点。

技术分享

当起始点在比较远的位置,依然成功找到了全局最小值点!

 

下面看看如何求多元函数最小值?

以二元函数为例,使用 minimize函数求对应的最小值。

技术分享

技术分享

技术分享

 

3. 曲线拟合

 

曲线拟合和最优化有什么关系?

曲线拟合的问题是,给定一组数据,它可能是沿着一条线散布的,这时要找到一条最优的曲线来拟合这些数据,这里的最优是指这些点和线之间的距离是最小的,这就是为什么要用最优化问题来解决曲线拟合问题。

 

技术分享

上面的点整体上呈现一个线性关系,要找到一条斜线来代表这些点,这就是经典的一元线性回归。要优化的函数是点和线之间的距离,使其最小。点是确定的,而线是可变的,线是由参数值:斜率和截距决定的,这里就是要通过优化距离找到最优的斜率和截距。

 

Method1 using scipy.optimize.minimize

 

技术分享

上式是误差平方和,即需要最小化的目标函数。

 

技术分享

上面两个输出即是预测的直线斜率和截距,我们是根据点来反推直线的斜率和截距,那么真实的斜率和截距是多少呢?-1 和 2,很接近了,差的一点是因为有噪音的引入。

 

技术分享

 

Method2 using statsmodels.api

 

技术分享

技术分享

 

这周回忆了好多数学概念,真是怀旧的一周(●‘?‘●)?? 下周学习statsmodels建模的最后一节:线性模型,敬请期待!

12-少年,玩模型吗?手把手教你statsmodels建模(3)