看其他篇章到目录 选择。
聚类可以见我以前写过的聚类分析的文章。
回归是一个统计中非常重要的概念了。在 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了。


2

3

4

5

6

7

8

9


10

11

12

13



14

15


16

17

18



19

20

21

22

23

24

25



26

27

