খুব বড় সংখ্যক ডেটা পয়েন্টে মানগুলির অনুগমন কীভাবে করা যায়?


12

আমার একটি খুব বড় ডেটাসেট রয়েছে এবং প্রায় 5% এলোমেলো মান অনুপস্থিত। এই ভেরিয়েবলগুলি একে অপরের সাথে সম্পর্কিত হয়। নীচের উদাহরণটি আর ডেটাসেটটি ডমি কোলেলেটেড ডেটা সহ একটি খেলনার উদাহরণ।

set.seed(123)

# matrix of X variable 
xmat <- matrix(sample(-1:1, 2000000, replace = TRUE), ncol = 10000)
colnames(xmat) <- paste ("M", 1:10000, sep ="")
rownames(xmat) <- paste("sample", 1:200, sep = "")
#M variables are correlated 

N <- 2000000*0.05 # 5% random missing values 
inds <- round ( runif(N, 1, length(xmat)) )
xmat[inds] <- NA 
> xmat[1:10,1:10]
         M1 M2 M3 M4 M5 M6 M7 M8 M9 M10
sample1  -1 -1  1 NA  0 -1  1 -1  0  -1
sample2   1  1 -1  1  0  0  1 -1 -1   1
sample3   0  0  1 -1 -1 -1  0 -1 -1  -1
sample4   1  0  0 -1 -1  1  1  0  1   1
sample5  NA  0  0 -1 -1  1  0 NA  1  NA
sample6  -1  1  0  1  1  0  1  1 -1  -1
sample7  NA  0  1 -1  0  1 -1  0  1  NA
sample8   1 -1 -1  1  0 -1 -1  1 -1   0
sample9   0 -1  0 -1  1 -1  1 NA  0   1
sample10  0 -1  1  0  1  0  0  1 NA   0

এই পরিস্থিতিতে নিখোঁজ মানগুলি বোঝানোর কোনও (সেরা) উপায় আছে? র্যান্ডম ফরেস্ট অ্যালগোরিদম সহায়ক? আর এর যে কোনও কার্যনির্বাহী সমাধান অনেক প্রশংসিত হবে।

সম্পাদনা:

(1) অনুপস্থিত মানগুলি ভেরিয়েবল এবং নমুনাগুলির মধ্যে এলোমেলোভাবে বিতরণ করা হয় vari যেমন ভেরিয়েবলের সংখ্যা খুব বড় (উদাহরণস্বরূপ - 10000), তবে উপরের ডামি উদাহরণে নমুনাগুলির সংখ্যা এখানে ছোট 200 এটি তাই যখন when আমরা সমস্ত ভেরিয়েবলের (10000) ওপরে যে কোনও নমুনা দেখি, প্রচুর সংখ্যক ভেরিয়েবলের কারণে - কিছু ভেরিয়েবলের মূল্য হ্রাস হওয়ার উচ্চ সম্ভাবনা রয়েছে। সুতরাং শুধু নমুনা মুছে ফেলা বিকল্প নয়।

(২) পরিবর্তনশীলকে অনুমিতকরণের প্রক্রিয়াতে উভয় পরিমাণগত বা গুণগত (বাইনারি) হিসাবে বিবেচনা করা যেতে পারে। একমাত্র রায় হ'ল আমরা এটি কতটা ভালভাবে ভবিষ্যদ্বাণী করতে পারি (নির্ভুলতা)। সুতরাং 1 এর পরিবর্তে 0.98 এর মতো ভবিষ্যদ্বাণীগুলি 0 বনাম 1 বা -1 বনাম 1 হিসাবে গ্রহণযোগ্য হতে পারে I আমার কম্পিউটিং সময় এবং নির্ভুলতার মধ্যে ট্রেডঅফের প্রয়োজন হতে পারে।

(৩) নমুনার সংখ্যার তুলনায় ভেরিয়েবলের সংখ্যা বড় হওয়ায় ওভারফিটিং কীভাবে ফলাফলগুলিকে প্রভাবিত করতে পারে তা আমি ভাবছি।

(৪) নিখোঁজ মানের মোট পরিমাণ প্রায় ৫% এবং এলোমেলোভাবে (কোনও ভেরিয়েবল বা নমুনায় কেন্দ্রীভূত হয়নি কারণ ভেরিয়েবলগুলি বা নমুনাগুলি খুব বেশি হারিয়ে যাওয়া মানগুলি সরিয়ে নিতে সাবধানতা নেওয়া হয়েছিল)

(5) বিশ্লেষণের জন্য ডেটা সম্পূর্ণ করা প্রথম উদ্দেশ্য এবং যথার্থতা গৌণ। নির্ভুলতার জন্য খুব সংবেদনশীল নয়।

r  random-forest  missing-data  data-imputation  multiple-imputation  large-data  definition  moving-window  self-study  categorical-data  econometrics  standard-error  regression-coefficients  normal-distribution  pdf  lognormal  regression  python  scikit-learn  interpolation  r  self-study  poisson-distribution  chi-squared  matlab  matrix  r  modeling  multinomial  mlogit  choice  monte-carlo  indicator-function  r  aic  garch  likelihood  r  regression  repeated-measures  simulation  multilevel-analysis  chi-squared  expected-value  multinomial  yates-correction  classification  regression  self-study  repeated-measures  references  residuals  confidence-interval  bootstrap  normality-assumption  resampling  entropy  cauchy  clustering  k-means  r  clustering  categorical-data  continuous-data  r  hypothesis-testing  nonparametric  probability  bayesian  pdf  distributions  exponential  repeated-measures  random-effects-model  non-independent  regression  error  regression-to-the-mean  correlation  group-differences  post-hoc  neural-networks  r  time-series  t-test  p-value  normalization  probability  moments  mgf  time-series  model  seasonality  r  anova  generalized-linear-model  proportion  percentage  nonparametric  ranks  weighted-regression  variogram  classification  neural-networks  fuzzy  variance  dimensionality-reduction  confidence-interval  proportion  z-test  r  self-study  pdf 

1
কারণ কেন ডেটা অনুপস্থিত উপযুক্ত কৌশলের পছন্দের উপর দৃঢ়ভাবে bears। উদাহরণস্বরূপ, যদি ডেটাটি এলোমেলোভাবে সম্পূর্ণরূপে অনুপস্থিত থাকে, আপনি অদৃশ্য মানগুলির সাথে সমস্ত কেস ফেলে রেখে কিছুটা হারাবেন (কারণ ডেটাসেটটি বড় এবং তুলনামূলকভাবে কয়েকটি মান অনুপস্থিত); তবে যদি অনুপস্থিতি বিশ্লেষণের গুরুত্বপূর্ণ ভেরিয়েবলের সাথে সম্পর্কিত হয়, তবে এই ক্ষেত্রেগুলি বাদ দেওয়া একটি পক্ষপাতিত্ব প্রবর্তন করতে পারে।
whuber

1
@ তবে আমি সম্মত, এই আকারের ডেটাসেটের জন্য অপসারণ করা সম্ভব নয় কারণ প্রতিটি ক্ষেত্রে কমপক্ষে একটি ভেরিয়েবলের অনুপস্থিত মান থাকবে। এটি ডেটা মোট ক্ষতি করতে হবে।
জন ২

4
জন এই প্রশ্নটিকে যথেষ্ট পরিবর্তন করে কারণ তার বর্তমান আকারে এটি স্পষ্টভাবে অন্যথায় বলেছে: এটি দৃser়ভাবে দাবি করে যে মাত্র 5% মান অনুপস্থিত। এমনকি যদি আমরা 5% কেস না করে ডেটা ম্যাট্রিক্সের সমস্ত এন্ট্রিগুলিতে প্রয়োগ করতে 5% বুঝি তবে যে কেউ আপনার ডেটার প্রকৃতির ইঙ্গিত হিসাবে উদাহরণ গ্রহণ করবে তারা বৈধতা অবলম্বন করবে যে 10 * 5% = 50 এর বেশি হবে না ক্ষেত্রেগুলির% এর মান অনুপস্থিত। এই জাতীয় প্রশ্নে যে তিনটি বিষয় বর্ণনা করা সবচেয়ে গুরুত্বপূর্ণ তা হ'ল (১) বিশ্লেষণের উদ্দেশ্য, (২) নিখোঁজের প্রকৃতি এবং (৩) নিখোঁজের পরিমাণ।
whuber

উত্তর:


8

আপনার পরিস্থিতি এবং ডেটাসেটের উপর নির্ভর করে বৃহত পরিবর্তনশীল এবং ছোট নমুনা (পর্যবেক্ষণ) সমস্যাটি মোকাবেলার দুটি উপায় থাকতে পারে।

(1) কেবল ভেরিয়েবল হিসাবে নমুনা (পর্যবেক্ষণ) ব্যবহার করুন তবে প্রদত্ত যে ভেরিয়েবলের স্কোর একই বা স্বাভাবিক হয় normal

(২) ভেরিয়েবলগুলি ভেরিয়েবল হিসাবে ব্যবহার করুন তবে অনুমানের সময় কিছু এলোমেলো নমুনা করুন যাতে সেই নম্বর ভেরিয়েবল নমুনার সংখ্যার চেয়ে কম হয় এবং শেষ পর্যন্ত ডেটা মার্জ করে।

নিম্নলিখিতটি ওয়ার্কআউট, আপনি আপনার প্রয়োজনের সাথে সামঞ্জস্য করতে পারেন। আমার কাছে ভেরিয়েবলের ধারনা অবিচ্ছিন্ন তবে আপনি পৃথক ভেরিয়েবলের জন্য একইভাবে ওয়ার্কআউট করেন। এখানে আমি দ্রুত চেক জন্য ছোট উদাহরণ দিচ্ছি।

প্রথমত, ওয়ার্কআউট সহ সম্পর্কিত তথ্য তৈরির জন্য, এখানে পর্যবেক্ষণগুলি (নমুনাগুলি) পারস্পরিক সম্পর্কযুক্ত, পরিস্থিতিগুলিতে বাস্তব হতে পারে যখন ভেরিয়েবলগুলি স্বতন্ত্র হিসাবে ধরে নেওয়া হত এবং পর্যবেক্ষণগুলি পরস্পর সম্পর্কিত হয়। তবে অন্যান্য পরিস্থিতিতে যেখানে পর্যবেক্ষণ এবং ভেরিয়েবল উভয়ই পারস্পরিক সম্পর্কযুক্ত।

# example correlated data, correlated by observations 
# number of observations 
nobs = 200
nvars = 100
# number of variables 
# covariance matrix matrixCR to create correlated data 
matrixCR <- matrix(NA, nrow = nobs, ncol = nobs)
diag(matrixCR) <- 1
matrixCR[upper.tri (matrixCR, diag = FALSE)] <- 0.5
matrixCR[lower.tri (matrixCR, diag = FALSE)] <- 0.5
matrixCR[1:10,1:10]
L = chol(matrixCR)# Cholesky decomposition
nvars = dim(L)[1]
set.seed(123)
rM = t(L) %*% matrix(rnorm(nvars*nobs), nrow=nvars, ncol=nobs)
rownames(rM) <- paste("V", 1:nvars, sep = "") 
colnames(rM) <- paste("O", 1:nobs, sep = "")
rM[1:10,1:10]



# introduce missing values in random places 
N <- round(nobs*nvars*0.05,0) # 5% random missing values 
set.seed(123)
inds <- round ( runif(N, 1, length(rM)) )
rM1 <- rM
rM1[inds] <- NA

আমি missForestঅনুমানের জন্য প্যাকেজটি ব্যবহার করছি , যা এটি randomForestকরার জন্য প্যাকেজের উপর নির্ভর করে । যদি আপনার কাছে প্রচুর পরিমাণে ডেটা পয়েন্ট গণ্য করার জন্য থাকে তবে আপনি সমান্তরাল কম্পিউটিং করতে পারেন।

# now use the rM1 matrix in imputation. 
require(missForest)
out.m <- missForest(rM1, maxiter = 10, ntree = 300)
# imputed 
imp.rM1 <- out.m$ximp

যেহেতু এটি সিমুলেটেড ডেটা সেট করা হয়েছে, আমরা দোষীদের সাথে পরিচয় করিয়ে দেওয়া মূল্যবোধের আগে আসলটির তুলনা করে অভিব্যক্তির যথার্থতা অনুমান করার বিলাসিতা করি।

# actual values that were made missing 
aval <- rM[inds]
impv <- imp.rM1[inds]

# accuracy - defined as correlation between actual (before na introduction) and imputed values 
cor(aval,impv)
[1] 0.6759404

নির্ভুলতা বাড়াতে আপনি প্রায় কাজ করতে পারেন। শুভকামনা!


5

ডেটা ইমপুটেশন এর সম্পূর্ণ বই রয়েছে তাই এই কাঠামোয় উত্তর দেওয়া কঠিন।

এক্ষেত্রে সবচেয়ে সহজ কাজটি হ'ল একটি কলাম ( ) বাছাই করা এবং অন্যটি একটি ম্যাট্রিক্স সংগ্রহ করা ।xyx

একটি মডেল প্রশিক্ষিত এবং অনুপস্থিত মানগুলি আমাদের মডেল দ্বারা পূর্বাভাস দেওয়া মানগুলির সাথে প্রতিস্থাপিত হয়। আপনার ডেটা শ্রেণিবদ্ধ বলে মনে হচ্ছে তাই এলোমেলো বন ভাল পছন্দ হতে পারে।y=f(x)

আপনার ডেটাসেটটি যদি খুব বড় হয় তবে দ্রুত অ্যালগরিদম বা একটি স্কেলযোগ্য একটি ব্যবহার নিশ্চিত করুন।


ধন্যবাদ, আপনার কাছে কোনও বইয়ের পরামর্শ আছে?
জন

নির্দিষ্ট্য কিছু না. তবে আপনি যদি ডেটা
ইমপুটেশন

যাইহোক, যদি কেবলমাত্র কয়েকটি মান না পাওয়া যায় তবে আপনি কেবল সমস্ত লাইন সরিয়ে ফেলতে পারেন। আপনার ডেটাসেটগুলি থেকে
দোনবিও

3
যদিও আপনি সর্বদা নিখোঁজ মানগুলির সাথে কেসগুলি মুছতে পারেন, তবে কখনও কখনও ডাটা কেন অনুপস্থিত থাকে তার উপর নির্ভর করে এটি একটি দুর্বল পছন্দ হবে।
whuber

@ যাহোক আমি আপনার সাথে পুরোপুরি একমত হই কিন্তু অনেক বার এটি কেবল নিরাপদ পছন্দ।
ডোনবিও

5

এটি একটি সত্যিই আকর্ষণীয় প্রশ্ন। আমিও একই জিনিস খুঁজছি প্রকৃতপক্ষে, এর সাথে মোকাবিলা করার বিভিন্ন উপায় রয়েছে।

প্রথমত, আমার মতে, আপনার কী ধরণের ডেটা রয়েছে তা নির্ধারণ করা হবে - র্যান্ডম (এমসিএআর) এ পুরোপুরি অনুপস্থিত, র্যান্ডম (এমএআর) এ নিখোঁজ বা র্যান্ডম (এনএমএআর) এ অনুপস্থিত। এটি প্রমাণ করা কঠিন এবং বিতর্কিত তবে এই কাগজটি এমএআর ডেটা দেখার জন্য একটি আকর্ষণীয় উপায় দেখায়।

একাধিক অভিব্যক্তি মোকাবেলায় আর কয়েকটি প্যাকেজ রয়েছে:

  • MICE (যা খুব ব্যবহৃত বলে মনে হচ্ছে),
  • randomForest,
  • Hmisc
  • Amelia
  • mi

এ পর্যন্ত পাওয়া প্যাকেজগুলির মধ্যে এটি কেবলমাত্র কয়েকটি।

MICE ভবিষ্যদ্বাণীপূর্ণ গড় ম্যাচিংয়ের মতো এলোমেলো বন এবং কয়েকটি অন্যান্য পদ্ধতিও বাস্তবায়ন করেছে।

এটি খুব বেশি নয় তবে আপনাকে কিছু জিনিস বের করতে সহায়তা করতে পারে। যত তাড়াতাড়ি আমি ফলাফল পেয়েছি বা কোন পদ্ধতিটি নিয়ে আমি সিদ্ধান্ত নেব আমি পোস্টটি সম্পাদনা করব।

শুভকামনা!


আমার ডেটা এমসিএআর।
জন

1
যদি আপনার ডেটা এমসিএআর হয় তবে আপনি কেবলমাত্র কেস বিশ্লেষণই ব্যবহার করতে পারেন। অনেক গবেষণাপত্র রিপোর্ট করেছেন যে এমসিএআর ডেটা সহ সম্পূর্ণ কেস বিশ্লেষণ ব্যবহার করা সবচেয়ে ভাল সমাধান solution কমপক্ষে, আমি যেসব কাগজপত্র পেয়েছি
সেগুলির

3

আকর্ষণীয় প্রশ্ন। এর কৌশলটি হ'ল একাধিক অনুমানের কাজ করার জন্য আপনার কেবলমাত্র ভবিষ্যদ্বাণীমূলক মডেলের চেয়ে বেশি প্রয়োজন (যা মেশিন লার্নিং পদ্ধতির মধ্যে সহজেই পৌঁছতে পারে)। আমরা এই মডেলগুলিকে সিমুলেটিং মডেল বলব, যেহেতু তারা যথেষ্ট সম্ভাবনার মডেল নয়।

p

  1. সমস্ত নিখোঁজ নিদর্শন সনাক্ত করুন
  2. প্রতিটি প্যাটার্নের জন্য, উপাত্তগুলিতে কেসগুলি সম্পূর্ণ করতে উত্তরীয় ওজন নির্ধারণের জন্য একটি বায়সিয়ান বৈশিষ্ট্য নির্বাচন পদ্ধতির ব্যবহার করুন।
  3. এলোমেলোভাবে সম্পূর্ণ ডেটা ফ্রেম তৈরি করতে পুনরায় পুনরুদ্ধার করুন complete

3

আপনার সমস্যাটি একরকম নিম্ন-স্তরের ম্যাট্রিক্সের সমাপ্তির জন্য দর্জি-তৈরি বলে মনে হচ্ছে। প্যাকেজimpute.svd() থেকে ফাংশনটি ব্যবহার করে দেখুন । আমি একটি ছোট পদ (যুক্তি ) ব্যবহার করার পরামর্শ দেব - 5 এর মতো কিছু।bcvk

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