2013-11-26 149 views
2

我正在研究一個Java項目,我必須計算一個多重線性迴歸,但我希望得到的參數是非負的。是否有現成的商業友好許可的圖書館來做這樣的事情?我一直在尋找非負的最小二乘庫,沒有成功。Java非負多元線性迴歸庫

回答

2

嗯,我找不到任何純Java庫,所以我自己從文章[1]中構建它,可以在[2]和[3]中找到它。我給算法:

P,R是主動和被動集。 T()是轉置

的問題是要解決的條件下X> 0

P=null 
R = {1,2,...,m} 
x = 0 
w = t(A)*(b-A*x) 
while R<>null and max{wi|i in R}>0 do: 
    j = argmax{wi|i in R} 
    P = P U {j} 
    R = R\{j} 
    s[P] = invert[t(A[P])A[P]]t(A[P])b 
    while sp<=0 do: 
     a = -min{xi/(di-xi)|i in P and di<0} 
     x = x + a*s -x 
     update(P) 
     update(R) 
     sP = invert[t(A[P])A[P]]t(A[P])b 
     sR = 0 
    x = s 
    w = t(A)*(b-A*x) 
return x 

對於其它定義Ax = b的,我強烈建議閱讀文件[2]和[3],它們在線(參見下面的鏈接;))

[1] Lawson,CL,& Hanson,RJ(1974)。解決最小二乘問題(第161卷)。恩格爾伍德克利夫斯,新澤西州:普倫蒂斯大廳。 [2] Rasmus Bro et Sijmen De Jong:一種快速非負性約束最小二乘法算法。化學計量學雜誌,11(5):393-401,1997. http://www.researchgate.net/publication/230554373_A_fast_non-negativity-constrained_least_squares_algorithm/file/79e41501a40da0224e.pdf [3]陳東輝等Robert J. Plemmons:數值分析中的非負性約束。在數值分析誕生研討會上,第109-140頁,2009年。http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.157.9203&rep=rep1&type=pdf

1

已嘗試過Weka?它是Java和GNU通用公共許可證。它主要是一個用於實驗的GUI工具,但您也可以將它用作庫。它應該有線性迴歸的實現。

+0

謝謝您的回答,但Weka似乎沒有我需要的功能。我還沒有找到非負線性迴歸,也沒有找到多重線性迴歸。也許我錯過了什麼? –

+0

不確定「邏輯」是什麼意思,但是http://weka.sourceforge.net/doc.packages/supervisedAttributeScaling/weka/classifiers/functions/NonNegativeLogisticRegression.html? –

+0

非常感謝。實際上,邏輯迴歸與線性迴歸不同。它實際上是一個二進制預測器。 –