主要内容

부분최소제곱회귀및주성분회귀

이예제에서는부분최소제곱회귀(PLSR)및주성분회귀(PCR)를적용하는방법을보여주고이두방법의효과를살펴봅니다。PLSR및PCR은모두다수의예측변수가있으며이러한예측변수가밀접한상관관계를가지거나동일직선상에있는경우응답변수를모델링하는방법입니다。두방법모두새예측변수(성분이라고함)를원래예측변수로구성된일차결합으로생성하지만,이러한성분을생성하는방법은각기다릅니다。PCR은응답변수를전혀고려하지않고예측변수에서관측된변동성을설명하기위해성분을생성합니다。반면,PLSR은응답변수를고려하므로더적은수의성분으로응답변수를피팅할수있는모델이생성되는경우가많습니다。실용적측면에서궁극적으로더간결한모델로변환되는지여부는상황에따라달라집니다。

데이터불러오기

401개파장에서60개가솔린표본의스펙트럼강도와옥탄가로구성된데이터세트를불러옵니다。이데이터는Kalivas, John H.,“近红外光谱的两个数据集”,化学计量学和智能实验室系统,第37节(1997) pp.255-259에설명되어있습니다。

负载光谱近红外光谱辛烷
名称大小字节类属性NIR 60x401 192480双辛烷值60x1 480双
[dummy,h] = sort(辛烷值);Oldorder = get(gcf,“DefaultAxesColorOrder”);集(gcf,“DefaultAxesColorOrder”, jet (60));plot3 (repmat(1:401, 60岁,1)”,repmat(辛烷(h), 1401),近红外光谱(h:) ');集(gcf,“DefaultAxesColorOrder”, oldorder);包含(“波长指数”);ylabel (“辛烷”);轴(“紧”);网格

图中包含一个轴对象。axis对象包含60个line类型的对象。

두성분으로데이터피팅하기

plsregress함수를사용하여10개의请성분과1개의응답변수를갖는PLSR모델을피팅하겠습니다。

X = nir;Y =辛烷;[n,p] = size(X);[Xloadings,Yloadings,Xscores, scores,betaPLS10,PLSPctVar] = plsreturn (...X, y, 10);

10개성분은데이터를적절히피팅하는데필요한수보다더많을수있지만,이피팅에서얻은진단정보를사용하여더적은성분을갖는더단순한모델을선택할수있습니다。예를들어,성분개수를선택하는한가지빠른방법은응답변수에설명된분산의백분율을성분개수에대한함수로플로팅하는것입니다。

情节(1:10,cumsum (100 * PLSPctVar (2:)),“博”);包含(“PLS组件数目”);ylabel (“用Y解释的百分比方差”);

图中包含一个轴对象。axis对象包含一个line类型的对象。

실제로,성분개수를선택할때는좀더주의를기울이는것이좋습니다。일례로,널리사용되는교차검에관해이예제의뒷부분에서설명합니다。여기서는위에시된플롯을보면두성분을갖는plsr이관측된y의분산을대부분설명하는것을알수있습니다。2-성분모델에피팅되는응답변수값을구합니다。

[xloads, yloads,Xscores, scores,betaPLS] = plsreturn (X,y,2);yfitPLS = [ones(n,1) X]* betappls;

다음으로,2개의주성분을갖는PCR모델을피팅합니다。첫번째단계는2개의주성분을계속유지해主成分分析함수를사용하여X에대한주성분분석을수행하는것입니다。이경우pcr은단순하게이러한두성분에대한응답변수의선형회귀입니다。변수간의변동성이매우다른경우대개먼저표준편차로각변수를정규화하는것이적합하지만여기서는그렇게하지않겠습니다。

[PCALoadings,PCAScores,PCAVar] = pca(X,“经济”、假);betaPCR =回归(y-mean(y), PCAScores(:,1:2));

원래스펙트럼데이터측면에서PCR결과를더쉽게해석하기위해,중심화하지않은원래변수에대한회귀계수로변환하겠습니다。

betaPCR = PCALoadings(:,1:2)*betaPCR;betaPCR = [mean(y) - mean(X)*betaPCR;betaPCR];yfitPCR = [ones(n,1) X]*betaPCR;

PLSR피팅과PCR피팅에대해피팅된응답변수와관측된응답변수를플로팅합니다。

情节(y, yfitPLS,“波”y yfitPCR“r ^”);包含(观察到的响应的);ylabel (“拟合响应”);传奇({“2组件PLSR”“双组分PCR”},...“位置”“西北”);

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象分别代表了2组分PLSR和2组分PCR。

어떤면에서는위플롯의비교가타당하지않습니다。2 -성분PLSR모델이응답변수를얼마나잘예측했는지를확인하여성분개수(2개)가선택되었지만PCR모델이같은성분개수로제한되어야하는이유는없습니다。그러나이동일한성분개수를선택하면plsr이y피팅을더훨씬잘수행합니다。실제로,위의플롯에서피팅된값의가로산점도를살펴보면2개성분을갖는PCR이상수모델을사용하는경우보다더우수한성능을제공하지는않는것으로보입니다。이두회귀에서얻은결정계수값을통해이를알수있습니다。

TSS = sum((y-mean(y)).^2);RSS_PLS = sum((y-yfitPLS).^2);rsquaredPLS = 1 - RSS_PLS/TSS
rsquaredPLS = 0.9466
RSS_PCR = sum((y-yfitPCR).^2);rsquaredPCR = 1 - RSS_PCR/TSS
rsquaredPCR = 0.1962

두모델의예측검정력을비교하는또다른방법은두경우모두에서두예측변수에대해응답변수를플로팅하는것입니다。

plot3 (Xscores (: 1) Xscores (:, 2), y-mean (y),“波”);传奇(“PLSR”);网格;视图(-30年,30);

图中包含一个轴对象。axis对象包含一个line类型的对象。该节点表示PLSR。

대화형방식으로그림을회전할수없는경우확인하기가약간어렵지만,위의PLSR플롯을보면점들이한평면에대해빽빽하게흩어져있음을알수있습니다。반면,아래에시된PCR플롯은선형관계가거의없는점구름을보여줍니다。

plot3 (PCAScores (: 1) PCAScores (:, 2), y-mean (y),“r ^”);传奇(聚合酶链反应的);网格;视图(-30年,30);

图中包含一个轴对象。axis对象包含一个line类型的对象。这个对象代表PCR。

두PLS성분은관측된y에대한훨씬더나은예측변수이지만다음그림은이성분이PCR에사용된처2개음주성분보다관측된X에서다소더작은분산을설명한다는것을보여줍니다。

情节(1:10,100 * cumsum (PLSPctVar (1:)),“这”1:10,...100 * cumsum (PCAVar(1:10)) /笔(PCAVar (1:10)),的r - ^);包含(“主成分数目”);ylabel (“在X中解释的方差百分比”);传奇({“PLSR”聚合酶链反应的},“位置”“本身”);

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表PLSR, PCR。

PCR곡선이균일하게더높다는사실은두성분을갖는PCR이y를피팅할때plsr에비해성능이훨씬더낮음을보여줍니다。PCR은X를가장잘설명하도록성분을생성합니다。그결과,처음두성분은관측된y를피팅하는데중한데이터의정보를무시합니다。

3개이상의성분으로피팅하기

Pcr에더많은성분이추가될수록원래데이터y를피팅하는성능이더높아집니다。그이유는어느시점에X의중한예측정보대부분이주성분에존재하기때문입니다。예를들어,다음그림은2개성분일때보다10개성분을사용할때두방법에서잔차의차이가훨씬더적다는것을보여줍니다。

yfitPLS10 = [ones(n,1) X]*betaPLS10;betaPCR10 =回归(y-mean(y), PCAScores(:,1:10));betaPCR10 = PCALoadings(:,1:10)*betaPCR10;betaPCR10 = [mean(y) - mean(X)*betaPCR10;betaPCR10];yfitPCR10 = [ones(n,1) X]*betaPCR10;情节(y, yfitPLS10,“波”y yfitPCR10“r ^”);包含(观察到的响应的);ylabel (“拟合响应”);传奇({“10个组件的PLSR”“十组分PCR”},...“位置”“西北”);

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象分别代表10个组分的PLSR和10个组分的PCR。

请이여전히약간더정확한피팅을수행하기는하지만두모델모두y를상당히정확하게피팅합니다。그러나,성분10개역시각모델에대해임의로선택한개수입니다。

교차검을사용하여성분개수선택하기

예측변수에대한향후관측값에서응답변수를예측할때예상오차를최소화하도록성분개수를선택하는것이유용한경우가많습니다。간단히많은개수의성분을사용하면현재관측된데이터를피팅할때양호한성능을제공할수있지만,이전략은과적합을초래할수있습니다。현재데이터를과도하게정확하게피팅하면다른데이터에제대로일반화되지않는모델이생성되며,그러면예상오차에대해지나치게낙관적인추정값이제공됩니다。

교차검증은PLSR또는PCR에서성분개수를선택하는데통계적으로더욱타당한방법입니다。이방법을사용하면모델을피팅하고예측오차를추정하는데동일한데이터를재사용하지않고데이터의과적합을방지할수있습니다。따라서,예측오차에대한추정값이낙관적으로하향편향되지않습니다。

plsregress에서는옵션인교차검증을사용하여평균제곱예측오차(MSEP)를추정할수있습니다。이경우10겹교차검을사용합니다。

[Xl,Yl,Xs,Ys,beta,pctVar,PLSmsep] = plsregression (X,y,10,“简历”10);

Pcr의경우,crossval을PCR의제곱오차합을계산하는단순한함수와함께사용하면똑같이10겹교차검증을사용하여MSEP를추정할수있습니다。

PCRmsep = sum(crossval(@pcrsse,X,y,“KFold”,10),1) / n;

PLSR의MSEP곡선은두개또는세개성분으로최고의성능을얻을수있음을나타냅니다。반면,pcr이동일한예측정확도를얻으려면4개의성분이필합니다。

:情节(0:10 PLSmsep (2),“这”0:10 PCRmsep,的r - ^);包含(“组件数量”);ylabel (“估计均方预测误差”);传奇({“PLSR”聚合酶链反应的},“位置”“不”);

图中包含一个轴对象。axis对象包含2个line类型的对象。这些对象代表PLSR, PCR。

실제로,pcr의두번째성분은모델의예측오차를증가시킵니다。이는해당성분에포함된예측변수의결합이y와긴밀한상관관계가없음을나타냅니다。마찬가지로,pcr이y가 아니라X의변동을설명하기위해성분을생성하기때문입니다。

모델간결성

그렇다면PCR이3개의성분을갖는PLSR과동일한예측정확도를달성하기위해서는4개의성분이필요하다고가정할경우PLSR모델이더간결한것일까요?이는모델의어떤측면을고려하는지에따라달라집니다。

PLS가중치는PLS성분을정의하는원래변수의일차결합입니다。즉,请가중치는PLSR의각성분이원래변수에어떠한방향으로얼마나크게종속되는지를설명합니다。

[Xl,Yl,Xs,Ys,beta,pctVar,mse,stats] = plsregression (X,y,3);情节(1:401,统计数据。W,“- - -”);包含(“变量”);ylabel (“请重”);传奇({“组件1日”“第二部分”“第三部分”},...“位置”“西北”);

图中包含一个轴对象。axis对象包含3个line类型的对象。这些对象分别代表第一分量、第二分量、第三分量。

이와유사하게,PCA적재값은PCR의각성분이원래변수에얼마나크게종속되는지를설명합니다。

情节(1:401 PCALoadings (:, 1:4),“- - -”);包含(“变量”);ylabel (“PCA加载”);传奇({“组件1日”“第二部分”“第三部分”...“第四组件”},“位置”“西北”);

图中包含一个轴对象。axis对象包含4个line类型的对象。这些对象分别代表第1分量、第2分量、第3分量、第4分量。

PLSR또는PCR에서어떠한변수에가장큰가중치를적용하는지를검사하여각성분에실제로의미있는해석방식을제공할수있습니다。예를들어,이스펙트럼데이터에서는가솔린에존재하는화합물측면에서최대강도를해석한후적은수의화합물에서특정성분을선별해이러한가중치를관측할수있습니다。이러한관점에서성분수가적을수록해석과정이더단순하며,PLSR이응답변수를적절히예측하는데더적은수의성분이필요한경우가많으므로PLSR에서더간결한모델이생성됩니다。

한편,PLSR과PCR모두원래예측변수각각에대해하나의회귀계수와함께하나의절편을생성합니다。이러한점에서,사용되는성분개수에관계없이두모델모두모든예측변수에종속되므로둘중어느것도상대적으로더간결하지않습니다。더구체적으로설명하자면,이데이터에서예측을수행하기위해서는두모델모두401개의스펙트럼강도값을필요로합니다。

그러나,궁극적인목표는응답변수를정확하게예측하는데영향을주지않는한도내에서원래변수집합을최대한작은부분집합으로줄이는것입니다。예를들어,请가중치또는PCA적재값을사용하여각성분에가장큰영향을미치는변수만선택할수있습니다。앞에서살펴본것처럼PCR모델피팅에서몇몇성분이예측변수의변동을주요하게설명할수있으며,그들성분은또한응답변수와긴밀한상관관계가있지않은변수에대한큰가중치를포함할수있습니다。따라서,pcr이예측에불필한변수를유지하는결과를초래합니다。

이예제에사용된데이터의경우에는PLSR및PCR이정확한예측을수행하는데필요한성분개수차이는크지않으며请가중치와PCA적재값이동일한변수에서선택된것처럼보입니다。이점은다른데이터에는해당되지않을수있습니다。

참고 항목

|

관련 항목