最近想看看机器学习的Spark ML,但发现Spark已经帮我把所有事情都做了,只需要传入训练数据得到模型,再用这个模型来预测数据的分类等。所用的代码量也就10多行,因此机器学习等的难度在于分析,在于数学逻辑和业务的结合而不在于实现了,毕竟这么多大牛写了这么多数学工具来帮助分析,那么我们的重点应该放在分析上而不应该重复造轮子。从这章起开始简单复习一下线性代数的内容,慢慢学到概率论、再到机器学习,希望能坚持下去学完:)
Spark ML使用的线性代数库是Breeze,但是我发现Breeze的页面访问会经常有问题,因此我使用Math3来在学习时找到一些对应的API,直观地去理解线代的一些基本计算逻辑,当然这里也只是记录一些很基本的知识,供个人的学习记录用。下面是应用Math3的包:
<dependency> <groupId>org.apache.commonsgroupId> <artifactId>commons-math3artifactId> <version>3.6.1version>dependency>
〇、线性方程组
矩阵来源于线性方程组,矩阵是为了更容易地去求解多项线性方程组而发明的。矩阵其实就是线性方程组左侧的系数矩阵A,而线性方程组的右侧也是一个矩阵B,这两个矩阵需要合起来才能够求解,合起来的矩阵就叫“增广矩阵”,中间使用|分隔,记为(A|B)。