关系代数至少选修两门课_从线性代数谈起,为什么朋友圈每天都要让你学python?...

引子

机器学习,数据挖掘等各种话题经久不衰。越来越多的人对数据分析开始兴趣。以前可能只有学计算机或者学数学的同学会每天捣鼓代码,在模型,参数和优化方法领域里面跳来跳去,现在朋友圈随便一刷都能看到“人生苦短,我学python”。是的,现在互联网越来越深入,移动和普适计算在生活里面的无无孔不入,让这些概念开始出圈了。这是一个好的现象,我也深信,人人都应该懂一点数学和计算机。毕竟这个世界根本上只有两种问题,一种问题是连续的,另外一种问题是不连续,掌握了数学,就掌握了世界(皮一下很开心)。

也不是非Python不行

虽然起了一个和Python相关的题目,但是这里我其实并不想要聊Python,这里只是讨个巧。为什么不聊Python呢?因为Python只是一个工具,比如我现在需要做一圈篱笆,那么我需要一把锤子。在数学分析里面,要解决的问题是核心,要解决这个问题,无奈效率和求解过程的复杂性,我需要用到Python而已。延伸一下,那不用Python可以吗?当然可以。除了Python,还有很多很多的高级工具,简单如Excel,复杂如 Matlab。修篱笆我手里没有锤子难道还不干活了?

一个数学问题

所有的问题如果想要把它的规模坍缩到非常容易求解,那就需要具有把生活问题抽象成数学模型的能力。举一个简单的例子,我们现在有一个猫咪心脏质量和猫咪体重关系的数据集。我们想要根据当前数据集找到一个“规律”来描述这种关系。那么很多同学一下就反应过来了。这不就是一个简单的一元一次方程问题吗?y = ax + b 就足够解决了。恭喜你,有这个意识,其实机器学习已经入门一半了。这个就是机器学习里面要研究的一个很重要的问题 “Curve fitting”(曲线拟合)。这就是一个常规的回归(Regression)问题。这个问题我们从高中就开始学习了。

那么,我来下一个定义,一个简单的回归问题是要做什么呢?——从当前这个例子来讲,回归问题就是要学习两个线性变量之间关系。

如何科学地解这类问题?

我们知道,一个线性模型的常规表达式是一个多项式的和:

f(w, x) = 取和(wi * gi(x))

其中 i 为索引,w是权重,g(x)是关于x的表达式。当拟合直线为直线的时候,gi(x) 我们通常选取 x 的指数为 0 或者 1 的幂级数。

我们进一步将当前的多项式通过线性代数内矩阵的形式简写,可以化简为以下形式:

f(w) = gw

此时,我们拥有输入数据,拥有我们设置的表达式,我们只是不知道参数是多少。所以个问题化简为一个参数求值问题。如何求值呢?

f2054502f5b74f4c7457294c86866b2f.png

我们知道,对于点的拟合,只有当所有数据点到直线的距离(图中红色短线)和最小的时候,说明直线最能说明数据的真实分布情况。

所以我们有:r = y - gw,其中r为残差(Residuals)

这里就要提到损失函数的概念了,损失函数就是衡量真实数据和拟合函数之间距离的函数。常用的有最小最小二乘误差(Least Square Error)。LSE(w) 就是 r的平方。

那我们的任务又进一步简化了,我们需要找到权重组合来使得损失函数值最小。因为损失函数是一个二次函数,求二次函数最小值的时候只需要求导,找使得导数为0的点即为整个函数的最低点。

为什么是python?

那么为什么一个数学问题最后要归到Python上?其实就是为了降低自己的工作量,懒,无他耳。

为什么这么说呢?因为这是在只有有限几个点的情况下,计算相对简单,但是如果现在有1万个数据,你不想自己一个一个代入计算吧?至少我不想。

其次,主要是效率问题,如果我们逐条手算,那可就慢死了,有线性代数这样提高计算效率的工具,并且有Python已经提供好的科学计算库,计算就会变得异常简单,比如这个例子最终表现在Python中,只需要一行代码

w = np.linalg.solve(np.matmul(Phi.transpose(),Phi), np.matmul(Phi.transpose(),y))

对,你没看错,就一行,就把权重找到了。所以和人比,用科学计算工具更快。

不用Python其实也没关系,也有很多其它工具提供了数学计算的优化能力,比如Matlab,具体代码也差不多,一行就解决了你可能需要手算一周的东西。

其它视角

上面都是从线性代数的角度分析了一个简单的数学问题,同样一个问题其实有很多分析角度,比如概率论也是一个不错的视角。接下来我会从概率论角度来重新分析一下这个例子。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值