희소 데이터로 방정식 시스템 풀기


11

40 개의 독립 변수 (x1, ..., x40)와 하나의 종속 변수 (y)가있는 일련의 방정식을 풀려고합니다. 총 방정식 수 (행 수)는 ~ 300이며 y와 예측 값 사이의 총 제곱합 오류를 최소화하는 40 계수 세트로 풀고 싶습니다.

내 문제는 행렬이 매우 희박하고 희소 데이터로 방정식 시스템을 푸는 가장 좋은 방법을 모른다는 것입니다. 데이터 세트의 예는 다음과 같습니다.

   y    x1  x2 x3 x4 x5 x6 ... x40
87169   14  0  1  0  0  2  ... 0 
46449   0   0  4  0  1  4  ... 12
846449  0   0  0  0  0  3  ... 0
....

나는 현재 이것을 해결하기 위해 유전자 알고리즘을 사용하고 있으며 결과는 관찰과 기대의 두 가지 차이로 나옵니다.

누구나 희소 데이터로 일련의 방정식을 풀 수있는 다른 방법이나 기술을 제안 할 수 있습니까?


2
제목에 오타 : spare => sparse.
Aleksandr Blekh

답변:


11

내가 당신을 올바르게 이해한다면, 이것은 희소 데이터를 가진 다중 선형 회귀 의 경우입니다 ( 희소 회귀 ). 다음과 같은 자료가 도움 이 되길 바랍니다 .

1) 희소성 회귀 에 대한 NCSU 강의 슬라이드 : 알고리즘, 메모, 공식, 그래픽 및 참고 문헌에 대한 개요 : http://www.stat.ncsu.edu/people/zhou/courses/st810/notes/lect23sparse.pdf

2) R생태계는 다음을 포함하여 희소 회귀 분석에 유용한 많은 패키지를 제공합니다 .

3)과 블로그 게시물 희소 회귀 솔루션의 일례 에 기초 SparseM: http://aleph-nought.blogspot.com/2012/03/multiple-linear-regression-with-sparse.html

4) 사용에 대한 블로그 게시물 R 스파 스 매트릭스를 포함, 프라이머 사용에을 glmnet: http://www.johnmyleswhite.com/notebook/2011/10/31/using-sparse-matrices-in-r

5) 주제에 대한 더 많은 예제와 토론StackOverflow 에서 찾을 수 있습니다 : https : //.com/questions/3169371/large-scale-regression-in-r-with-a-sparse-feature-matrix

업데이트 (댓글을 바탕으로) :

당신은 제약과의 LP 문제를 해결하려는 경우, 당신은이 찾을 수 있습니다 이론적 인 논문 : 유용한 http://web.stanford.edu/group/SOL/papers/gmsw84.pdf를 .

또한 R 패키지 limSolve : http://cran.r-project.org/web/packages/limSolve를 확인 하십시오 . 그리고 일반적으로 CRAN 작업보기 "최적화 및 수학 프로그래밍" : http://cran.r-project.org/web/views/Optimization.html 에서 패키지를 확인 하십시오 .

마지막으로, "과학 및 공학에서 수치 해석에 R 사용" (Victor A. Bloomfield의) 책을 확인하십시오 . 여기에는 희소 행렬 (99-104 페이지 5.7 절, 섹션 99-104)로 표시되는 방정식 시스템 해결에 대한 섹션 이 있습니다 . ID = 9ph_AwAAQBAJ 및 PG = PA99 및 LPG = PA99 및 DQ = R + limsolve + 희소 + 매트릭스 소스 = BL 및 OTS = PHDE8nXljQ 및 SIG = sPi4n5Wk0M02ywkubq7R7KD_b04 및 HL = EN 및 SA = X 및 EI = FZjiU-ioIcjmsATGkYDAAg 및 VED = 0CDUQ6AEwAw # V = onepage 및 Q = R % 20limsolve % 20sparse % 20matrix & F = 거짓 .


3
큰 답변 감사합니다! 나는 실제로 모델링하고 예측하는 것이 아니라 오히려 일련의 계수를 풀기 때문에 희소 회귀로 문제를 분류하는 것을 주저합니다. 유전자 알고리즘을 사용하는 이유는 방정식에 제약 조건을 사용할 수도 있기 때문입니다. 다른 답변이 없으면 기꺼이 받아 들일 것입니다.
mike1886

1
@ mike1886 : 내 기쁨! 귀하의 의견에 따라 답변을 업데이트했습니다. 도움이 되길 바랍니다.
Aleksandr Blekh

7

Aleksandr의 답변 은 완전히 정확합니다.

그러나 문제가 제기되는 방식은 이것이 단순한 일반 최소 제곱 회귀 문제라는 것을 의미합니다. 종속 변수와 선형 예측 변수 조합 사이의 제곱 잔차의 합을 최소화합니다.

이제는 설계 행렬에 0이 많을 수 있지만 시스템은 그다지 크지 않습니다. 40 개의 예측 변수에 대한 300 개의 관측치는 중간 크기를 넘지 않습니다. 스파 스 데이터에 대한 특별한 노력없이 R을 사용하여 이러한 회귀 분석을 실행할 수 있습니다. lm()명령을 사용하십시오 ( "선형 모델"). 사용 ?lm도움말 페이지를 참조하십시오. 그리고 lm기본적으로 상수 행렬의 열을 디자인 행렬 (절편)에 자동으로 추가합니다- -1수식의 오른쪽에 포함하여 이것을 억제하십시오. 전반적으로 모든 데이터 (및 다른 것은 없음)가 data.frame호출 된 것으로 가정하면 foo다음을 수행 할 수 있습니다.

model <- lm(y~.-1,data=foo)

그리고 다음과 같이 모수 추정값 등을 볼 수 있습니다.

summary(model)
residuals(model)

경우 시스템이 훨씬 더 큰 당, 전문 스파 스 솔버보고 만 명 관찰과 예측의 수백의 순서라고 알렉산드르의 대답은 이해하기 시작할 수 있습니다.

마지막으로 Aleksandr의 답변에 대한 귀하의 의견에서 방정식에 대한 제약 조건을 언급합니다. 즉 실제로 중요한 문제의 경우, 개인적으로 좋아 R. I에서 제약 최소 제곱을 계산하는 방법이있다 pcls()mgcv패키지. 아마도 당신이 직면하는 제약의 유형 (상자 제약, 비 음성 제약, 적분 제약, 선형 제약 등)을 포함하도록 질문을 편집하고 싶습니까?


1
스테판, 친절한 말 감사합니다! 좋은 답변을 올렸습니다. 질문 작성자의 의견에 따라 내 답변에 대한 업데이트에 관심이있을 수 있습니다.
Aleksandr Blekh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.