Ridge regression en crossvalidatie

Continue & discrete verdelingen, toevalsveranderlijken, betrouwbaarheidsintervallen, correlaties.
Plaats reactie
Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Ridge regression en crossvalidatie

Bericht door Eline_t » 16 mei 2013, 20:28

Ik moet op een set gegevens een ridge regression doorvoeren. Ik weet dat ik daarvoor een crossvalidatie moet doen om deze te gebruiken in deze ridge regression. Maar ik snap er helemaal niets van. Is er iemand die hier enige kennis van heeft en mij zou kunnen helpen?

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 16 mei 2013, 20:59

Eline_t schreef:Ik weet dat ik daarvoor een crossvalidatie moet doen om deze te gebruiken in deze ridge regression. Maar ik snap er helemaal niets van. Is er iemand die hier enige kennis van heeft en mij zou kunnen helpen?
Je bedoelt met crossvalidatie testen op multicolineariteit?

Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Re: Ridge regression en crossvalidatie

Bericht door Eline_t » 16 mei 2013, 21:19

Eerlijk.. Ik heb er geen idee van. Omdat er grote onderlinge correlaties zijn tussen de onafhankelijke variabelen werd mij gezegd dat ik een ridge regression moest doorvoeren, en een cross validatie om de vector te vinden die nodig is voor deze regressie. Maar hoe vindt je die vector? In matlab kan de regressie worden doorgevoerd door: b = ridge(y,X,k) waarbij y de afhankelijke en x de onafhankelijke variabelen zijn. En k is a vector of ridge parameters staat in de help.

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 16 mei 2013, 21:58

Ik kende ridge regression niet. Ik heb er intussen wat over gelezen en begrijp nu de idee erachter.

Blijkbaar is zo'n crossvalidation in Matlab niet standaard beschikbaar.

http://stats.stackexchange.com/question ... sion-model

Ben je verplicht om Matlab te gebruiken? In R is dat bvb wel standaard beschikbaar.

http://stackoverflow.com/questions/1524 ... -parameter

Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Re: Ridge regression en crossvalidatie

Bericht door Eline_t » 19 mei 2013, 15:43

Ik snap nu ongeveer ook wat de ridge regression juist inhoudt. Maar kan je verklaren wat die k inhoudt? En klopt het dat ik dit kan vinden door die cross validation?
Er was mij aangeraden om matlab te gebruiken omdat we daarvan een licentie hebben op school. Ik weet niet niet hoe dat met R zit..

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 19 mei 2013, 19:07

In R is het echt heel eenvoudig.

http://stackoverflow.com/questions/1524 ... -parameter

R is open source en een veelgebruikt pakket voor statistiek. Je kan het gratis downloaden.

http://www.r-project.org/



Normaal houd ik ook wel van Matlab, maar betreffende Ridge regressie is de uitleg in Matlab wel onduidelijk. Ik weet het ook niet juist.

Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Re: Ridge regression en crossvalidatie

Bericht door Eline_t » 20 mei 2013, 12:24

Ik probeerde in dit boek: http://www-stat.stanford.edu/~tibs/ElemStatLearn/ wat meer te weten te komen over de ridge regression. En daar staat op p 67 figuur 3.9 met de largest principal component. Kan je soms verklaren wat dit ermee te maken heeft? Ik snap nu wel dat er een extra component wordt toegevoegd op de diagonaal van de matrix omdat het kan zijn dat de matrix singulier is. Maar ik snap nog altijd niet juist van waar deze vandaan komt. Heeft dat dan iets te maken met dit figuur?

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 20 mei 2013, 22:51

Bij het plaatje staat:
Principal components of some input data points. The largest prin-
cipal component is the direction that maximizes the variance of the projected data,
and the smallest principal component minimizes that variance. Ridge regression
projects y onto these components, and then shrinks the coefficients of the low–
variance components more than the high-variance components.
De bedoeling is de component van de coëfficienten waar de grootste spreiding op zit (dus in de richting van de principal component) te verkleinen, om zo te komen tot een resultaat dat in kleinste kwadraten zin misschien een groter residu heeft, maar wel een resultaat waarin de coëfficienten minder spreiding hebben.

Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Re: Ridge regression en crossvalidatie

Bericht door Eline_t » 22 mei 2013, 13:27

Ja, maar ik snapte niet zo goed wat ze daarmee juist bedoelen. Nu snap ik het al iets meer :) Nog een vraagje: ik heb dus 2 matrices, 1 met de waarden in van de verschillende variabelen en 1 met de oplossing in die moet bekomen worden.
Dus Y=XB.

Maar voor deze regressie en crossvalidatie toe te passen, moet ik dit dan doen op matrix X? Of op matrix X met een extra kolom bij met de Y-waarden?

Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Re: Ridge regression en crossvalidatie

Bericht door Eline_t » 22 mei 2013, 19:42

Ok, sorry ik heb nu gezien dat het 2 aparte matrices zijn. Enige idee wat een lage k of lambda-waarde wil zeggen? Bij logisch redeneren wil dit denk ik zeggen dat het bijna geen nut heeft om zo een regressie door te voeren. Of zit ik hier mis?

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 22 mei 2013, 20:28

Ja, als lambda naar nul gaat, vallen in de limiet gewone en ridge regressie tesamen.

Eline_t
Nieuw lid
Nieuw lid
Berichten: 24
Lid geworden op: 28 nov 2012, 14:56

Re: Ridge regression en crossvalidatie

Bericht door Eline_t » 22 mei 2013, 22:59

En wanneer ik nu in R deze ridge.cv doorvoer bekom ik een waarde bij intercept die verschillend is van 0. Toch had ik bij de meervoudige lineaire regressie daar ingesteld dat er een intercept was van 0, zodat er geen beta0 in het model voorkwam. Of wil deze intercept iets anders zeggen? En zoniet, enig idee hoe ik deze op 0 kan krijgen?

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 22 mei 2013, 23:39

Ik wil wel eens kijken. Kan je je data delen als ze niet confidentieel is?

Gebruikersavatar
wnvl
Vergevorderde
Vergevorderde
Berichten: 1490
Lid geworden op: 05 okt 2011, 16:30

Re: Ridge regression en crossvalidatie

Bericht door wnvl » 25 mei 2013, 23:46

Het lukt mij in R met deze code.

Code: Selecteer alles

n<-15 # number of observations
p<-5 # number of variables
X<-matrix(c(data verwijderd), nrow = n, ncol = p, byrow = TRUE)
y<-matrix(c(data verwijderd), nrow = n, ncol = 1, byrow = TRUE)
ridge.object<-ridge.cv(X,y)
ridge.object

Plaats reactie