কে-অর্থ: প্রাথমিক সেন্ট্রয়েডগুলির একটি দক্ষ সেট চয়ন করার কয়েকটি ভাল উপায় কী?


17

যখন সেন্ট্রয়েডের এলোমেলো সূচনা ব্যবহৃত হয়, তখন কে-অর্থের বিভিন্ন রান বিভিন্ন মোট এসএসই তৈরি করে। এবং এটি অ্যালগরিদমের পারফরম্যান্সে গুরুত্বপূর্ণ। এই সমস্যাটি সমাধানের দিকে কার্যকর কিছু উপায় কী? সাম্প্রতিক পদ্ধতির প্রশংসা করা হয়।

উত্তর:


12

আরও বেশি ধারাবাহিক ফলাফল পাওয়া এমন একটি পদ্ধতির হ'ল কে-মানে ++ । এই পদ্ধতির স্বীকৃতি দেয় যে সম্ভবত প্রাথমিক রেনডম অ্যাসাইনমেন্টের চেয়ে প্রাথমিক সেন্ট্রয়েড লোকেশনগুলির চেয়ে ভাল পছন্দ রয়েছে। বিশেষত, সেন্ট-অ্যারোডগুলি এমনভাবে বীজতলে স্থানগুলিতে একসাথে না ছড়িয়ে পড়লে কে-মানে আরও ভাল সম্পাদন করতে থাকে।

সংক্ষেপে, পদ্ধতিটি নিম্নরূপ:

  1. প্রাথমিক সেন্ট্রয়েড হিসাবে এলোমেলোভাবে আপনার ডেটা পয়েন্টগুলির মধ্যে একটি চয়ন করুন।
  2. গণনা করুন , আপনার প্রাথমিক সেন্ট্রয়েড এবং অন্যান্য সমস্ত ডেটা পয়েন্টের মধ্যে দূরত্ব, xডি(এক্স)এক্স
  3. সম্ভাব্যতার তুলনামূলকভাবে ডি ( এক্স ) 2 এর সাথে অবশিষ্ট ডেটাপয়েন্টগুলি থেকে আপনার পরবর্তী সেন্ট্রয়েড চয়ন করুনডি(এক্স)2
  4. সমস্ত সেন্ট্রয়েড নির্ধারিত না হওয়া পর্যন্ত পুনরাবৃত্তি করুন।

দ্রষ্টব্য: আরও সেন্ট্রয়েড যুক্ত হওয়ার সাথে সাথে আপডেট করা উচিত। এটি একটি ডেটা পয়েন্ট এবং নিকটতম সেন্ট্রয়েডের মধ্যে দূরত্ব নির্ধারণ করা উচিত।ডি(এক্স)

আপনি এই কাগজটি পড়তে আগ্রহী হতে পারেন যা পদ্ধতিটির প্রস্তাব দেয় এবং এর সামগ্রিক প্রত্যাশিত কার্যকারিতা বর্ণনা করে।


5

আমি আপনার প্রশ্নটির ভুল বোঝাবুঝি করছি, তবে সাধারণত কে-ই মানে আপনি সেট করা ক্লাস্টারের সংখ্যার (যেমন কে) এর উপর নির্ভর করে এলোমেলোভাবে আপনার সেন্ট্রয়েডগুলি বেছে নেন ses কে এর জন্য সংখ্যা নির্বাচন করা একটি বিষয়গত অনুশীলন হতে থাকে। শুরু করার জন্য একটি ভাল জায়গা হ'ল একটি কনুই / স্ক্রি প্লট যা এখানে পাওয়া যাবে:

http://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set#The_Elbow_Method


আমি মনে করি প্রশ্নটি সেন্ট্রয়েড ইনিশিয়ালেশন সম্পর্কে, যা ডকুমেন্টেশন পৃষ্ঠায় সেকিট

4

এই সমস্যার স্বাভাবিক দৃষ্টিভঙ্গি হ'ল সেন্ট্রয়েডের বিভিন্ন এলোমেলো সূচনা সহ আপনার কে-মানে অ্যালগরিদমকে কয়েকবার পুনরায় চালানো এবং সর্বোত্তম সমাধানটি রাখা। আপনি আপনার প্রশিক্ষণ ডেটা বা ক্রস বৈধকরণের মাধ্যমে ফলাফলগুলি মূল্যায়নের মাধ্যমে এটি করতে পারেন।

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


0

আমি কনুই / স্ক্রি প্লটের সাথে একমত আমি এটি এলোমেলো বীজের চেয়ে স্বজ্ঞাতভাবে সংবেদনশীল পেয়েছি। এটি চেষ্টা করার জন্য একটি উদাহরণ কোড এখানে।

Ks=30
mean_acc=np.zeros((Ks-1))
std_acc=np.zeros((Ks-1))
ConfustionMx=[];
for n in range(1,Ks):    
    #Train Model and Predict  
    kNN_model = KNeighborsClassifier(n_neighbors=n).fit(X_train,y_train)
    yhat = kNN_model.predict(X_test)
    mean_acc[n-1]=np.mean(yhat==y_test);
    std_acc[n-1]=np.std(yhat==y_test)/np.sqrt(yhat.shape[0])

plt.plot(range(1,Ks),mean_acc,'g')
plt.fill_between(range(1,Ks),mean_acc - 1 * std_acc,mean_acc + 1 * std_acc, alpha=0.10)
plt.legend(('Accuracy ', '+/- 3xstd'))
plt.ylabel('Accuracy ')
plt.xlabel('Number of Nabors (K)')
plt.tight_layout()
plt.show()

print( "The best accuracy was with", mean_acc.max(), "with k=", mean_acc.argmax()+1)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.