পূর্বাভাসের জন্য আর prcomp ফলাফলগুলি কীভাবে ব্যবহার করবেন?


25

আমার কাছে 800 ডলারের একটি ডেটা ফ্রেম রয়েছে। 40 টি ভেরিয়েবলের মধ্যে রয়েছে এবং আমার পূর্বাভাসের ফলাফলগুলি উন্নত করতে নীতিগত উপাদান উপাদান বিশ্লেষণ ব্যবহার করতে চান (যা এখন পর্যন্ত প্রায় 15 হাত-বাছাই করা ভেরিয়েবলের সাপোর্ট ভেক্টর মেশিনের সাথে সবচেয়ে ভাল কাজ করছে)।

আমি বুঝতে পারি যে একটি প্রম্পম্প আমাকে ভবিষ্যদ্বাণীগুলি উন্নত করতে সহায়তা করতে পারে তবে প্রম্পম্প ফাংশনের ফলাফলগুলি কীভাবে ব্যবহার করতে হয় তা আমি জানি না।

আমি ফলাফলটি পেয়েছি:

> PCAAnalysis <- prcomp(TrainTrainingData, scale.=TRUE)
> summary(PCAAnalysis)
Importance of components:
                          PC1    PC2    PC3    PC4    PC5   PC6    PC7    PC8    PC9   PC10   PC11   PC12   PC13   PC14
Standard deviation     1.7231 1.5802 1.3358 1.2542 1.1899 1.166 1.1249 1.1082 1.0888 1.0863 1.0805 1.0679 1.0568 1.0520
Proportion of Variance 0.0742 0.0624 0.0446 0.0393 0.0354 0.034 0.0316 0.0307 0.0296 0.0295 0.0292 0.0285 0.0279 0.0277
Cumulative Proportion  0.0742 0.1367 0.1813 0.2206 0.2560 0.290 0.3216 0.3523 0.3820 0.4115 0.4407 0.4692 0.4971 0.5248
                         PC15   PC16   PC17   PC18  PC19   PC20   PC21   PC22   PC23   PC24   PC25   PC26   PC27   PC28
Standard deviation     1.0419 1.0283 1.0170 1.0071 1.001 0.9923 0.9819 0.9691 0.9635 0.9451 0.9427 0.9238 0.9111 0.9073
Proportion of Variance 0.0271 0.0264 0.0259 0.0254 0.025 0.0246 0.0241 0.0235 0.0232 0.0223 0.0222 0.0213 0.0208 0.0206
Cumulative Proportion  0.5519 0.5783 0.6042 0.6296 0.655 0.6792 0.7033 0.7268 0.7500 0.7723 0.7945 0.8159 0.8366 0.8572
                         PC29   PC30   PC31   PC32   PC33   PC34   PC35   PC36    PC37                 PC38
Standard deviation     0.8961 0.8825 0.8759 0.8617 0.8325 0.7643 0.7238 0.6704 0.60846 0.000000000000000765
Proportion of Variance 0.0201 0.0195 0.0192 0.0186 0.0173 0.0146 0.0131 0.0112 0.00926 0.000000000000000000
Cumulative Proportion  0.8773 0.8967 0.9159 0.9345 0.9518 0.9664 0.9795 0.9907 1.00000 1.000000000000000000
                                       PC39                 PC40
Standard deviation     0.000000000000000223 0.000000000000000223
Proportion of Variance 0.000000000000000000 0.000000000000000000
Cumulative Proportion  1.000000000000000000 1.000000000000000000

আমি ভেবেছিলাম যে আমি পরামিতিগুলি ব্যবহার করব যা ব্যবহার করা সর্বাধিক গুরুত্বপূর্ণ তবে আমি কেবল এই তথ্যটি পাই না। আমি পিসিগুলিতে স্ট্যান্ডার্ড ডিভিয়েশন ইত্যাদি যা দেখছি সেগুলি। তবে আমি কীভাবে এটি পূর্বাভাসের জন্য ব্যবহার করব?


2
আর লাইব্রেরিও রয়েছে pls(আংশিক স্বল্প স্কোয়ারস), এতে পিসিআর ( অধ্যক্ষ উপাদান উপাদান নিরোধক ) এর সরঞ্জাম রয়েছে।
স্টেপান এস সুসকো

উত্তর:


35

যদিও আমি আপনার সমস্যার প্রকৃতি সম্পর্কে অনিশ্চিত, আমি আপনাকে বলতে পারি যে আমি একটি মডেলের পরবর্তী বিল্ডিংয়ের ভবিষ্যতবাচক ভেরিয়েবলগুলির একটি গ্রুপে প্রভাবশালী নিদর্শনগুলি বের করার একটি উপায় হিসাবে পিসিএ ব্যবহার করেছি। আপনার উদাহরণে, এগুলি মূল উপাদানগুলিতে (পিসি) পাওয়া যাবে PCAAnalysis$xএবং এগুলি পাওয়া ভেরিয়েবলের ওজনের ভিত্তিতে হবে PCAAnalysis$rotation। এই প্রক্রিয়াটির একটি সুবিধা হ'ল পিসিগুলি অরথোগোনাল এবং তাই আপনি মডেল ভবিষ্যদ্বাণীকারীদের মধ্যে বহুবিধ বিষয়গুলি মুছে ফেলেন। দ্বিতীয়টি হ'ল আপনি পিসিগুলির একটি ছোট ছোট উপসেট সনাক্ত করতে সক্ষম হতে পারেন যা আপনার ভবিষ্যদ্বাণীকারীদের মধ্যে বেশিরভাগ বৈকল্পিকতা ক্যাপচার করে। এই তথ্যটি পাওয়া যাবে summary(PCAAnalysis)বা এর মধ্যেও PCAAnalysis$sdev। শেষ পর্যন্ত, আপনি যদি ভবিষ্যদ্বাণীটির জন্য পিসিগুলির একটি উপসেট ব্যবহার করতে আগ্রহী হন তবে আপনি tolপ্যারামিটারটি সেট করতে পারেনprcomp পেছনের পিসিগুলি অপসারণের জন্য একটি উচ্চ স্তরে।

এখন, আপনি predict.prcomp()ফাংশনটি ব্যবহার করে পিসিএ স্থানাঙ্কের ভিত্তিতে নতুন ডেটা "প্রকল্প" করতে পারেন । যেহেতু আপনি আপনার ডেটা সেটটিকে একটি "প্রশিক্ষণ" ডেটা সেট বলছেন, তারপরে তাদের পিসি স্থানাঙ্কগুলির গণনার জন্য আপনার পিসিএ ভিত্তিতে সেট করে একটি বৈধতা ডেটা প্রজেক্ট করা বুদ্ধিমান হতে পারে। নীচে বিভিন্ন আইরিস প্রজাতির 4 টি বায়োমেট্রিক পরিমাপের পিসিএ লাগানোর উদাহরণ রয়েছে (যা কিছুটা ডিগ্রিযুক্ত) corre এটি অনুসরণ করে, আমি ফুলের একটি নতুন ডেটা সেটের বায়োমেট্রিক মানগুলি প্রকল্প করি যা তিনটি প্রজাতির আইরিসের প্রতিটির জন্য এই পরিমাপের অনুরূপ সংমিশ্রণ রয়েছে। আপনি চূড়ান্ত গ্রাফ থেকে দেখতে পাবেন যে তাদের অনুমানিত পিসিগুলি মূল ডেটা সেট হিসাবে প্লটের একই জায়গায় রয়েছে।

irisডেটা সেট ব্যবহার করে একটি উদাহরণ :

### pca - calculated for the first 4 columns of the data set that correspond to biometric measurements ("Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width")
data(iris)

# split data into 2 parts for pca training (75%) and prediction (25%)
set.seed(1)
samp <- sample(nrow(iris), nrow(iris)*0.75)
iris.train <- iris[samp,]
iris.valid <- iris[-samp,]

# conduct PCA on training dataset
pca <- prcomp(iris.train[,1:4], retx=TRUE, center=TRUE, scale=TRUE)
expl.var <- round(pca$sdev^2/sum(pca$sdev^2)*100) # percent explained variance

# prediction of PCs for validation dataset
pred <- predict(pca, newdata=iris.valid[,1:4])

###Plot result
COLOR <- c(2:4)
PCH <- c(1,16)

pc <- c(1,2) # principal components to plot

png("pca_pred.png", units="in", width=5, height=4, res=200)
op <- par(mar=c(4,4,1,1), ps=10)
plot(pca$x[,pc], col=COLOR[iris.train$Species], cex=PCH[1], 
 xlab=paste0("PC ", pc[1], " (", expl.var[pc[1]], "%)"), 
 ylab=paste0("PC ", pc[2], " (", expl.var[pc[2]], "%)")
)
points(pred[,pc], col=COLOR[iris.valid$Species], pch=PCH[2])
legend("topright", legend=levels(iris$Species), fill = COLOR, border=COLOR)
legend("topleft", legend=c("training data", "validation data"), col=1, pch=PCH)
par(op)
dev.off()

এখানে চিত্র বর্ণনা লিখুন


অনেক বিস্তারিত সরবরাহ করার জন্য আপনাকে ধন্যবাদ। দুর্ভাগ্যক্রমে উদাহরণ কোডটি আমার কাছে খুব রহস্যজনক। আমি দেখছি আপনি পূর্বাভাস ব্যবহার করছেন। Prcomp পূর্বাভাস জন্য ম্যানুয়াল কোথায়? এটি কি এখানে: স্টেট.এটিজ.চ / আর- ম্যানুয়াল / আর- পেচড / লাইবারি / স্ট্যাটস / এইচটিএমএল / প্রম্পম্পhtml ?
টুকসন

আমি এখন আমার উত্তরে আরও ব্যাখ্যা যুক্ত করেছি। আশা করি এটি এখন আপনার কাছে আরও পরিষ্কার হয়ে গেছে। হ্যাঁ, আপনি predict.prcompসাহায্যের লিঙ্কে সঠিক ছিলেন ।
মার্ক

11

প্রশ্নের সাথে সংযুক্ত সারাংশ () কমান্ডের তথ্য আপনাকে দেখতে দেয় যেমন উদাহরণস্বরূপ, প্রতিটি প্রধান উপাদান ক্যাপচার করে (তারতম্যের অনুপাত) তার অনুপাতের অনুপাত। তদ্ব্যতীত, সংক্ষিপ্ত অনুপাত আউটপুট হিসাবে গণনা করা হয়। উদাহরণস্বরূপ, আপনার ডেটা সেটে 75% বৈকল্পিক ক্যাপচার করতে আপনার কাছে 23 পিসি থাকা দরকার।

এটি অবশ্যই সেই তথ্য নয় যা আপনি সাধারণত বিশ্লেষণে ইনপুট হিসাবে ব্যবহার করেন। বরং আপনার যা সাধারণত প্রয়োজন তা হ'ল ঘোরানো ডেটা, যা প্রম্পম্প দ্বারা তৈরি বস্তুটিতে 'x' হিসাবে সংরক্ষণ করা হয়।

সংক্ষিপ্ত উদাহরণ হিসাবে আর কোড ব্যবহার করা।

pr<-prcomp(USArrests, scale = TRUE)
summary(pr) # two PCs for cumulative proportion of >80% 
newdat<-pr$x[,1:2]

তারপরে আপনি আরও বিশ্লেষণের জন্য, যেমন, এসভিএম বা কিছু রিগ্রেশন মডেলের ইনপুট হিসাবে নতুনডেটে ডেটা ব্যবহার করতে পারেন। এছাড়াও, উদাহরণস্বরূপ, আরও তথ্যের জন্য /programming/1805149/how-to-fit-a-linear-regression-model-with-two-pr صول সংক্রান্ত- কম্পোনেন্ট- ইন- r দেখুন।


1
আপনাকে @ জেটিটি ধন্যবাদ। সুতরাং আমি যদি এখন এসভিএম মডেল তৈরি করতে নিউড্যাট ব্যবহার করি তবে আমি মনে করি যে আমার মডেলটি এই নতুন ঘোরানো মহাবিশ্বের ইনপুট নেবে, যার অর্থ মডেলটিতে প্রয়োগ করার আগে আমার পরীক্ষার ডেটাও ঘোরানো দরকার। এটা কি সঠিক? এবং যদি হ্যাঁ, আপনি কীভাবে একই ঘূর্ণায়মান একটি পরীক্ষা ডেটা ফ্রেম ঘোরান?
টুকসন

3
সবচেয়ে সহজ উপায় হল predict()পরীক্ষার ডেটার জন্য পদ্ধতিটি ব্যবহার করা। উপরের উদাহরণটি ব্যবহার করে, predict(pr, USArrests)একই ম্যাট্রিক্স হিসাবে ফিরে আসবে pr$x। পরীক্ষার ডেটার জন্য, পরীক্ষার ডেটার নামের সাথে ইউএসআরগ্রিস্টগুলি প্রতিস্থাপন করুন। আপনি একই কাজটি হাতের সাহায্যে করতে পারেন তবে এটি সহজ, যেহেতু পূর্বাভাস পদ্ধতিগুলি পরীক্ষার ডেটা সেটটির সঠিক স্কেলিংটি স্বয়ংক্রিয়ভাবে যত্ন নেয়।
জেটিটি

1
কিভাবে পূর্বাভাস কাজ করে? এটি কি সমস্ত প্রিন্সিপাল কমপেনেন্ট ব্যবহার করে? আপনার উত্তরে আপনি 80% বৈচিত্র্য কভার করতে শুধুমাত্র 2 টি উপাদান বেছে নিয়েছিলেন। ভবিষ্যদ্বাণী কি করে?
টুকসন

1
ফাংশনটি predict()ডিফল্টরূপে সমস্ত উপাদান ব্যবহার করে। তবে, আপনি ফিরে আসা উপাদানগুলির সীমাবদ্ধ করতে পারেন, উদাহরণস্বরূপ, `পূর্বাভাস (জনসংযোগ, ইউএসএআরসিস্টস) [, 1: 2]। এটা কি আপনার জন্য কাজ করবে?
জেটিটি

পূর্বাভাসের পূর্বে আপনার কি আপনার নতুন ডেটা কেন্দ্র এবং স্কেল করা দরকার? অথবা predict()এটি স্বয়ংক্রিয়ভাবে প্রাথমিক পরামিতিগুলি দিয়ে দেয় prcomp()?
ডেল কুবে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.