Commons Math学习笔记——聚类和回归

本文介绍了Apache Commons Math库在聚类和回归分析中的应用。重点讲解了线性回归的概念,包括最小二乘法和线性回归模型的使用。通过示例展示了如何使用库中的OLSMultipleLinearRegression类进行普通最小二乘法计算,并指出其在预测分析中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看其他篇章到目录 选择。

聚类可以见我以前写过的聚类分析的文章。

回归是一个统计中非常重要的概念了。在 Commons Math库中有一个 regression的子包转么实现了线性回归的一些基本类型。在 regression包中,有个基本接口就是 MultipleLinearRegression,这个接口表达 y=X*b+u这样的基本线性回归式。线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。简单看这个公式, y代表了一个 n维的列向量(回归子), X代表了 [n,k]大小的观测值矩阵(回归量), b是 k维的回归参数, u是一个 n维 的剩余误差。回归分析干什么用的?具体讲就是预测。我们在数据挖掘中定义,定性的分析叫做分类,而定量的分析叫做回归。回归就是根据已有的观察值去预测未 来的一个定量的指标。记得前一段阿里云到学院来做技术交流,讲到阿里和淘宝通过数据分析对中国商品交易(还是具体什么贸易,忘记了,尴尬)的预测就是工程 师做的一个简单的线性回归分析,模型虽然简单,但是后来与实际数据一比较,预测值与实际值的曲线基本吻合。

回到 Commons Math中的实现, MultipleLinearRegression接口共有 5个方法, double estimateRegressandVariance ()返回回归子的方差, double[] estimateRegressionParameters ()返回回归参数 b(当然是一个 k维的向量), double[] estimateRegressionParametersStandardErrors ()返回回归参数的标准误差, double[][] estimateRegressionParametersVariance ()返回回归参数 b的方差, double[] estimateResiduals ()返回剩余误差数组( n维向量)。 AbstractMultipleLinearRegression类实现了这个接口,作为一个抽象类,它没有完全实现这些方法,仍旧作为抽象方法抛给具体的实现类去完成,典型的模板方法设计模式。继承这个类的方法有 GLSMultipleLinearRegression和 OLSMultipleLinearRegression,前者应该是广义最小二乘法,而后者是普通最小二乘法。

我们拿普通最小二乘法作为测试,看看它的 source code如何实现:首先对于 x和 y的表示,在 AbstractMultipleLinearRegression内部, x被定义为一个 RealMatrix, y是一个 RealVector,这些在第一章都有讲到。而 OLSMultipleLinearRegression里用到定义了一个内部的 QRDecomposition。通过 void newSampleData (double[] y, double[][] x)方法来载入回归模型;接着就可以通过各种借口方法去计算这个回归的统计量了。算出 b和 u之后,那么根据新的观测回归量 x就可以预测 y了。

 1 /** */ /**
 2  * 
 3   */

 4 package  algorithm.math;
 5
 6 import  org.apache.commons.math.stat.regression.OLSMultipleLinearRegression;
 7 import  org.apache.commons.math.stat.regression.SimpleRegression;
 8
 9 /** */ /**
10  *  @author  Jia Yu
11  * @date   2010-12-6
12   */

13 public   class  RegressionTest  {
14
15      /** */ /**
16      *  @param  args
17       */

18      public   static   void  main(String[] args)  {
19          //  TODO Auto-generated method stub
20         regression();
21         System.out.println( " ------------------------------------- " );
22         simple();
23     }

24
25      private   static   void  simple()  {
26          //  TODO Auto-generated method stub
27          double [][] data  =  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值