অবিচ্ছিন্ন এবং বাইনারি ভেরিয়েবল সহ কে-নিকটতম-প্রতিবেশী


10

আমার কাছে কলাম a b c(3 টি বৈশিষ্ট্য) সহ একটি ডেটা সেট রয়েছে । aসংখ্যাসূচক এবং ক্রমাগত bএবং cদুটি স্তরের সাথে প্রতিটি শ্রেণিবদ্ধ হয়। আমি কে-নিকটতম প্রতিবেশীদের পদ্ধতি ব্যবহার করছি শ্রেণীভুক্ত করতে aএবং bউপর c। সুতরাং, দূরত্বগুলি পরিমাপ করতে সক্ষম হওয়ার জন্য আমি মুছে ফেলা bএবং যুক্ত করে b.level1এবং ডেটা সেটটিকে রূপান্তর করি b.level2। বিভাগগুলিতে পর্যবেক্ষণের iপ্রথম স্তর থাকলে এবং ।bb.level1[i]=1b.level2[i]=0

এখন আমি আমার নতুন ডেটা সেটে দূরত্বগুলি পরিমাপ করতে পারি: a b.level1 b.level2

একটি তাত্ত্বিক / গাণিতিক দৃষ্টিকোণ থেকে: আপনি বাইনারি এবং অবিচ্ছিন্ন উভয় ডেটা দিয়ে কে-নিকটতম প্রতিবেশী (কেএনএন) সম্পাদন করতে পারেন?

আমি FNNআর এবং ফাংশনে প্যাকেজটি ব্যবহার করছিknn()


আমার কাছে কোনও কেএনএন অভিজ্ঞতা নেই তবে আমি দেখতে পাচ্ছি না যে বাইনারি পরিবর্তনশীল কীভাবে দূরত্ব স্থাপনে অনেক বেশি সহায়ক হবে। আপনি কেন এই পদ্ধতির দিকে ঝুঁকছেন তা জানতে আগ্রহী।
rolando2

কারণ আমি একটি সংখ্যাসূচক ভেরিয়েবলকে শ্রেণিবদ্ধ ভেরিয়েবলের সাথে তুলনা করার আরও ভাল উপায় দেখতে পাচ্ছি না। আরও ভাল পদ্ধতির পরামর্শ নির্দ্বিধায় মনে করুন :)
k.dkhk

উত্তর:


11

এটি ঠিক শ্রেণীবদ্ধ এবং অবিচ্ছিন্ন ভেরিয়েবল (বৈশিষ্ট্যগুলি) একত্রিত করে।

একরকম, কে-এনএন এর মতো পদ্ধতির জন্য তেমন তাত্ত্বিক ভিত্তি নেই। হিউরিস্টিকটি হ'ল দুটি পয়েন্ট যদি একে অপরের কাছাকাছি থাকে (কিছু দূরত্ব অনুসারে), তবে আউটপুটের ক্ষেত্রে তাদের কিছু মিল রয়েছে। হতে পারে আবার নাও হতে পারে. এবং এটি আপনার ব্যবহার করা দূরত্বের উপর নির্ভর করে।

আপনার উদাহরণে আপনি দুটি পয়েন্ট এবং মধ্যে একটি দূরত্ব নির্ধারণ করেছেন যেমন:(a,b,c)(a,b,c)

  • এবং : মধ্যে বর্গক্ষেত্রের দূরত্বটি ধরুনaa(aa)2
  • এবং আলাদা হলে +2 যুক্ত করুন , সমান হলে +0 (কারণ আপনি প্রতিটি বিভাগের জন্য 1 এর পার্থক্য গণনা করছেন)bb
  • এবং আলাদা হলে +2 যুক্ত করুন , +0 সমান (একই)cc

এটি প্রতিটি বৈশিষ্ট্যের সাথে নিখুঁতভাবে ওজন দেওয়ার সাথে মিলে যায়।

মনে রাখবেন যদি বড় ভ্যারিয়েন্স সঙ্গে (1000, 2000 ... মত) বৃহৎ মান লাগে তারপর বাইনারি বৈশিষ্ট্য ওজন ওজন তুলনায় তুচ্ছ হতে হবে । শুধু মধ্যে দূরত্ব এবং সত্যিই কোন ব্যাপার হবে। এবং অন্যান্য উপায়ে: যদি 0.001 এর মতো ছোট মান নেয়: কেবলমাত্র বাইনারি বৈশিষ্ট্যগুলি গণনা করা হবে।aaaaa

আপনি পুনর্বিবেচনার দ্বারা আচরণটি স্বাভাবিক করতে পারেন: প্রতিটি বৈশিষ্ট্যটিকে তার মানক বিচ্যুতি দ্বারা ভাগ করে। এটি ধারাবাহিক এবং বাইনারি ভেরিয়েবল উভয় ক্ষেত্রেই প্রযোজ্য। আপনি নিজের পছন্দসই ওজনও সরবরাহ করতে পারেন।

নোট করুন যে আর ফাংশনটি কেএনএন () এটি আপনার জন্য করে: https://www.rdocamentation.org/packages/DMwR/versions/0.4.1/topics/kNN

প্রথম প্রচেষ্টা হিসাবে, কেবলমাত্র আদর্শ = সত্য (সাধারণকরণ) ব্যবহার করুন। এটি সর্বাধিক অজ্ঞান এড়াতে সক্ষম হবে যা ধারাবাহিক এবং শ্রেণিবদ্ধ বৈশিষ্ট্যগুলির সংমিশ্রণের সময় উপস্থিত হতে পারে।


ভাল উত্তর (+1) তবে আপনি উল্লেখ করতে পারেন যে মাত্রা বেশি থাকলে এবং সেখানে অনেকগুলি পৃথক ভেরিয়েবল রয়েছে যা ইউক্লিডিয়ান দূরত্বের সাথে জড়িত ভাল কাজ করতে পারে না।
হাইটাও ডু

6

হ্যাঁ, আপনি অবশ্যই বাইনারি এবং অবিচ্ছিন্ন উভয় ডেটা দিয়েই কেএনএন ব্যবহার করতে পারেন তবে এটি করার সময় আপনার কিছু সচেতন হওয়া উচিত।

ফলাফলগুলি সত্যই মূল্যবান ফলাফলগুলির মধ্যে ছড়িয়ে পড়ার সাথে সম্পর্কিত বাইনারি বিভক্তদের দ্বারা ভারীভাবে অবহিত করা হবে (0-1 স্কেলড, অদ্বিতীয় ভেক্টরগুলির জন্য), নীচে চিত্রিত হিসাবে:

বাস্তব-মূল্যবান এবং বাইনারি ভেরিয়েবলগুলির পৃথককরণ

আপনি এই উদাহরণে দেখতে পারেন যে পৃথক পর্যবেক্ষণের নিকটতম নিকটবর্তী প্রতিবেশীদের দূরত্বে খুব বেশি পরিমাণে বাইনারি ভেরিয়েবল দ্বারা স্কেল করা আসল-মান ভেরিয়েবলের চেয়ে বেশি ভারী অবহিত করা উচিত।

তদুপরি, এটি একাধিক বাইনারি ভেরিয়েবলগুলিতে প্রসারিত- যদি আমরা আসল-মূল্যবান ভেরিয়েবলগুলির মধ্যে একটি বাইনারি রূপান্তর করি তবে আমরা দেখতে পাচ্ছি যে দূরত্বগুলি প্রকৃত মানগুলির নিকটতার চেয়ে জড়িত সমস্ত বাইনারি ভেরিয়েবলের সাথে মিল রেখে আরও বেশি অবহিত হবে:

বাস্তব-মূল্যবান এবং বাইনারি ভেরিয়েবলগুলির পৃথককরণ

আপনি কেবল সমালোচনামূলক বাইনারি ভেরিয়েবলগুলি অন্তর্ভুক্ত করতে চাইবেন - আপনি আসলে "বাইনারি ভেরিয়েবলগুলির এই কনফিগারেশনটির সাথে মেলে এমন সমস্ত পর্যবেক্ষণগুলির (যা যদি কোনও), যা নিকটতম আসল-মূল্যবান মান আছে জিজ্ঞাসা করছেন?" এটি কেএনএন দিয়ে সমাধান করা যেতে পারে এমন অনেক সমস্যার একটি যুক্তিসঙ্গত সূত্রপাত এবং অন্যান্য সমস্যার একটি খুব দুর্বল গঠন।

#code to reproduce plots:
library(scatterplot3d) 

scalevector <- function(x){(x-min(x))/(max(x)-min(x))}

x <- scalevector(rnorm(100))
y <- scalevector(rnorm(100))
z <- ifelse(sign(rnorm(100))==-1, 0, 1)
df <- data.frame(cbind(x,y,z))

scatterplot3d(df$x, df$z, df$y, pch=16, highlight.3d=FALSE,
              type="h", angle =235, xlab='', ylab='', zlab='')

x <- scalevector(rnorm(100))
y <- ifelse(sign(rnorm(100))==-1, 0, 1)
z <- ifelse(sign(rnorm(100))==-1, 0, 1)
df <- data.frame(cbind(x,y,z))

scatterplot3d(df$x, df$z, df$y, pch=16, highlight.3d=FALSE,
              type="h", angle =235, xlab='', ylab='', zlab='')
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.