এলোমেলো অরণ্য চূড়ান্ত


15

আমি বিজ্ঞানী-শিখতে র্যান্ডম ফরেস্ট রিগ্রেশন ব্যবহার করার চেষ্টা করছি। সমস্যাটি হ'ল আমি সত্যিই একটি উচ্চ পরীক্ষার ত্রুটি পাচ্ছি:

train MSE, 4.64, test MSE: 252.25.

এটি আমার ডেটা দেখতে কেমন: (নীল: বাস্তব তথ্য, সবুজ: পূর্বাভাস):

ফরেস্ট রিগ্রেশন পরিষ্কার হয়েছে

আমি প্রশিক্ষণের জন্য 90% এবং পরীক্ষার জন্য 10% ব্যবহার করছি। বেশ কয়েকটি প্যারামিটার সংমিশ্রণের চেষ্টা করার পরে আমি এই কোডটি ব্যবহার করছি:

rf = rf = RandomForestRegressor(n_estimators=10, max_features=2, max_depth=1000, min_samples_leaf=1, min_samples_split=2, n_jobs=-1) 
test_mse = mean_squared_error(y_test, rf.predict(X_test))
train_mse = mean_squared_error(y_train, rf.predict(X_train))

print("train MSE, %.4f, test MSE: %.4f" % (train_mse, test_mse))
plot(rf.predict(X))
plot(y)

আমার ফিটনেস উন্নত করার সম্ভাব্য কৌশলগুলি কী কী? অন্তর্নিহিত মডেলটি বের করার জন্য আমি আরও কিছু করতে পারি? আমার কাছে এটি অবিশ্বাস্য মনে হয় যে একই প্যাটার্নটির অনেকগুলি পুনরাবৃত্তির পরে মডেল নতুন ডেটা নিয়ে এত খারাপ আচরণ করে। এই ডেটা ফিট করার জন্য কি আমার কোনও আশা আছে?


আপনি কি এই পর্যায়ক্রমিক ফাংশনটিকে এক্স অক্ষের সাথে ইনপুট হিসাবে এবং y অক্ষকে x <= 245 এর লেবেল হিসাবে প্রশিক্ষণ দিচ্ছেন, এবং তারপর x> 245 এর জন্য পরীক্ষা করছেন? নাকি আমি আপনার চক্রান্তের ভুল ব্যাখ্যা দিচ্ছি?
রেনাড

ধরনের, আসলে এক্স অক্ষটি পর্যবেক্ষণ সূচক, মোট সেখানে 300 টি পর্যবেক্ষণ রয়েছে, সুতরাং 245 থেকে, এটি মডেল প্রশিক্ষণের জন্য পরীক্ষামূলক ডেটা ব্যবহার করা হয় না, ইনপুট বৈশিষ্ট্য ভেক্টরটি পূর্ণসংখ্যার সমন্বয়ে গঠিত হয়, এর আকার হয় (300,2) এবং পর্যবেক্ষণ সূচকের একটি লিনিয়ার ফাংশনটি ঘনিষ্ঠভাবে সাদৃশ্যযুক্ত, সুতরাং প্রশ্নটি overcomplicate না করার জন্য আমি এটি সম্পর্কে তথ্য যোগ করিনি।
ইলিয়াস

1
আপনি প্রথমে আপনার ডেটা (এবং প্রবণতা) থেকে চক্র (মৌসুমী অংশ) মুছে ফেলতে চাইতে পারেন।
আর প্রস্ট

আপনি কি টাইম সিরিজ বিশ্লেষণে নজর রেখেছেন? আপনার এক্স-অক্ষে কী আছে তা আমার কাছে পরিষ্কার নয় তবে এটি আমার কাছে পর্যায়ক্রমিক বলে মনে হয়। এখানে চেক করুন এবং আমাকে এটির
ব্রাম ভ্যান ক্যাম্প

উত্তর:


21

আমি মনে করি আপনি ভুল সরঞ্জাম ব্যবহার করছেন; যদি আপনার পুরো এক্স সূচকের সমতুল্য হয় তবে আপনি মূলত কিছু নমুনাযুক্ত ফাংশন করছেন এবং এটি এক্সট্রোপোলেট করার চেষ্টা করছেন। মেশিন লার্নিং হ'ল ইতিহাসকে বিভক্ত করার জন্য, সুতরাং এটি আশ্চর্যজনক নয় যে এ ক্ষেত্রে এটি দর্শনীয় ব্যর্থতার স্কোর করে।f:RR

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


ডেটা থেকে জেনারালাইজেবল মডেলগুলি আহরণের বিষয়ে মেশিন শিখছে না? একবার যখন একটি নির্দিষ্ট সেট থাকে যা ডেটা ভালভাবে বিভক্ত করে, আমরা ক্রস বৈধকরণের উদাহরণ হিসাবে উদাহরণস্বরূপ ব্যবহার করে আরও ভাল এক্সট্রাপোলেশন / জেনারালাইজেশন বৈশিষ্ট্যগুলি বেছে নিতে পারি। আমার বুঝতে কিছু ভুল আছে?
Elyase

এক্সট্রোপোলেশন সাধারণকরণের থেকে পৃথক - কল্পনা করুন যে আপনি নিম্নলিখিত পরীক্ষার বিষয়: আপনি একটি স্ক্রিন দেখতে পেয়েছেন এবং একটি লাল এবং সবুজ বোতাম রয়েছে। প্রথমে, স্ক্রিনে আপনি যে ঘরে আছেন সেখানে একটি ভিডিও দেখায় যেখানে অন্য ব্যক্তি বিড়াল, সিংহ এবং বাঘের জন্য সবুজ বোতাম টিপে একটি স্ক্রিনে দেখানো হয় এবং তারপরে নেকড়ে এবং কুকুরের জন্য লাল করে এবং এইভাবে 5 টি সুস্বাদু কুকিজ সংগ্রহ করেছিল।

1
এখন, পর্দা একটি ববক্যাট দেখায়; আপনি ইতিহাসের যথাযথ, সাধারণকরণযোগ্য সংক্ষেপণ সম্পাদন করেন, সবুজ বোতাম টিপুন এবং একটি কুকির পরিবর্তে বৈদ্যুতিক শক পাবেন। কেন এমন হয়েছে? কারণ সমাধানটি একটি চক্র (gggrrr) এবং পশুর ছবিগুলি কেবল একটি প্রতারণা। আপনি আপনার বনের সাথেও এটি করেছেন - আসল তথ্য গোপন করার সময় এটিকে আপনার প্রশিক্ষণের সেটটির বোবা প্রজননে প্রলুব্ধ করে।

ভাল উদাহরণ তবে এটি আপনি করেন না। আপনার উদাহরণে আমাদের নিম্নলিখিত তথ্য রয়েছে: একটি লক্ষ্য (g বা r) এবং 2 টি বৈশিষ্ট্য ( index(অস্থায়ী) এবং animal)। এই ডেটা থেকে আমি একাধিক মডেল ফিট করতে পারি যা 1 বা 2 (বা উভয়ের সমান) বৈশিষ্ট্যটিতে কম বেশি ওজন দিতে পারে। ক্রস বৈধকরণ (পর্যাপ্ত ডেটা ধরে ধরে) বৈশিষ্ট্য 2 (প্রাণী) এর গুরুত্ব কম থাকার কোনও মডেলটিতে উপস্থিত হওয়া উচিত। আমি দেখতে পাচ্ছি যে আমার মডেলটি উপাত্তগুলিকে উপস্থাপন করছে, তবে আমি এখনও মনে করি যে এই মডেলটি অনুসরণ করে এমন একটি মডেল বের করতে আমার সক্ষম হওয়া উচিত (কারণ আচরণটি পরিবর্তিত হয়নি) একটি যথেষ্ট পরিমাণে মডেলের স্থান রয়েছে।
ইলিয়াস

1
নাঃ; এমনকি যদি আপনি আরও ডেটা চেয়ে থাকেন তবে পরীক্ষামূলকভাবে প্রাণী প্রতারণাকে প্রসারিত করতে পারে এবং এটিকে সুস্পষ্ট না বলে ধরে রাখার জন্য প্যাটার্নটি আরও অবলম্বন করতে পারে। উদাহরণস্বরূপ, শিখার সাথে এক্সট্রাপোলেশন সহজভাবে সম্পন্ন করা যায় না কারণ সংজ্ঞায়িতভাবে এটি এমন তথ্যের প্রয়োজন যা প্রশিক্ষণে উপস্থিত নেই - এইভাবে আপনাকে অবশ্যই কিছু অনুমান প্রয়োগ করতে হবে বা অতিরিক্ত ডেটা সংগ্রহ করতে হবে যাতে সমস্যাটি ফাঁক হয়ে যায় become

9

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


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

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

3

এটি ওভার-ফিটিং ডেটার জন্য একটি পাঠ্যপুস্তকের উদাহরণ, মডেল প্রশিক্ষিত ডেটাতে খুব ভাল করে তবে কোনও নতুন পরীক্ষার ডেটাতে ধসে পড়ে। এটি সমাধানের এটি কৌশলগুলির মধ্যে একটি: পরামিতিগুলি অনুকূল করতে প্রশিক্ষণের ডেটাটির দশগুণ ক্রস বৈধকরণ করুন।

পদক্ষেপ 1. এনএম অপ্টিমাইজেশন ব্যবহার করে একটি এমএসই মিনিমাইজিং ফাংশন তৈরি করুন। একটি উদাহরণ এখানে দেখা যেতে পারে: http://glowingpython.blogspot.de/2011/05/curve- Fitting-using-fmin.html

পদক্ষেপ 2. এই হ্রাসকরণ কার্যের মধ্যে, উদ্দেশ্যটি হ'ল এমএসই হ্রাস করা। এটি করার জন্য, ডেটাটির দশগুণ বিভাজন তৈরি করুন যেখানে 9 টি ভাগে একটি নতুন মডেল শেখা হয় এবং 10 তম ভাগে পরীক্ষা করা হয়। প্রতিটি ভাঁজে এমএসই পেতে এই প্রক্রিয়াটি দশবার পুনরাবৃত্তি হয়। সম্মিলিত এমএসই উদ্দেশ্যটির ফলাফল হিসাবে ফিরে আসে।

পদক্ষেপ 3. অজগর মধ্যে fmin আপনার জন্য পুনরাবৃত্তি করতে হবে। কোন হাইপার প্যারামিটারগুলি সূক্ষ্ম সুরকরণের জন্য প্রয়োজনীয় (এন_সেটেমেটর, সর্বোচ্চ_মুখে বৈশিষ্ট্যাদি ইত্যাদি) পরীক্ষা করুন এবং সেগুলি ফিমিনে প্রেরণ করুন।

ফলাফলটি সেরা হাইপার-প্যারামিটারগুলি হবে যা ওভার-ফিটিংয়ের সম্ভাবনা হ্রাস করবে।


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

3

কিছু পরামর্শ:

  1. ঘূর্ণায়মান উইন্ডো পদ্ধতির ব্যবহার করে আপনার পরামিতিগুলি টিউন করুন (আপনার মডেলটি পরবর্তীটির পূর্বাভাস দেওয়ার জন্য অনুকূলিত করতে হবে সময় সিরিজের মানগুলি , সরবরাহকৃতগুলির মধ্যে মানগুলি পূর্বাভাস দেওয়ার জন্য নয়)
  2. অন্য মডেলগুলি চেষ্টা করুন (এমনকি আরও সহজ সরল, সঠিক বৈশিষ্ট্য নির্বাচন এবং বৈশিষ্ট্য ইঞ্জিনিয়ারিং কৌশলগুলি আপনার সমস্যার পক্ষে আরও উপযুক্ত উপযুক্ত হতে পারে)
  3. লক্ষ্য ভেরিয়েবলের সর্বোত্তম রূপান্তরগুলি শিখার চেষ্টা করুন (এটি টিউন করুন, একটি নেতিবাচক রৈখিক / ঘৃণ্য প্রবণতা রয়েছে, আপনি এটি অনুমান করতে সক্ষম হতে পারেন)
  4. বর্ণালী বিশ্লেষণ সম্ভবত
  5. ম্যাক্সিমা / মিনিমা সমানভাবে ব্যবধানযুক্ত বলে মনে হয়। তাদের কোথায় আপনার বৈশিষ্ট্য দেওয়া হয় তা শিখুন (কোনও অপারেটর ইনপুট নেই, পক্ষপাত অপসারণের জন্য এটি একটি অ্যালগরিদম আবিষ্কার করুন) এবং এটি একটি বৈশিষ্ট্য হিসাবে যুক্ত করুন। ইঞ্জিনিয়ার একটি বৈশিষ্ট্য nearest maximum। ডান্নো, এটি কার্যকর হতে পারে, বা সম্ভবত না, আপনি এটি পরীক্ষা করলেই আপনি জানতে পারবেন :)

তবে, ড্যানিয়েল তার উত্তরে যেমন বলেছিলেন, এলোমেলো বন এই ধরণের সমস্যার জন্য নকশা করে কাজ করবে না কারণ এটি ট্রেনের নমুনায় পর্যবেক্ষণের সীমার বাইরে মানগুলির পূর্বাভাস দিতে সক্ষম নয়। ট্যুনিং পরামিতি ইত্যাদি কোথাও নেতৃত্বে হবে।
টিম

1
পরামর্শ # 2 @ টিম। এবং র্যান্ডম অরণ্যগুলি এই ডেটাতে নির্লজ্জভাবে কাজ করবে না, তবে চতুর বৈশিষ্ট্য নিষ্কাশন এটি কার্যকর করতে পারে।
ফায়ারব্যাগ


0

উপরের পোস্টটি পড়ার পরে, আমি আরও একটি ভিন্ন উত্তর দিতে চাই।

গাছভিত্তিক মডেলগুলির জন্য, যেমন এলোমেলো বন, তারা প্রশিক্ষণের সেটের বাইরে মান বহন করতে পারে না। সুতরাং, আমি মনে করি এটি একটি ওভার ফিটিং সমস্যা নয়, তবে একটি ভুল মডেলিং কৌশল।

সুতরাং, গাছের মডেল সহ আমরা সময় সিরিজের পূর্বাভাসের জন্য কী করতে পারি?

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

তদ্ব্যতীত, লিনিয়ার রিগ্রেশনের সাথে মিলিত একটি গাছের মডেল রয়েছে যা হ'ল কিউবিস্ট নামে পরিচিত, এটি পাতায় লিনিয়ার রিগ্রেশন করে।


0

যদি আপনি কেবল গ্রাফের সীমানার মধ্যে ভবিষ্যদ্বাণী করতে চান, তবে কেবলমাত্র ডেটা সেট বিভক্ত করার আগে পর্যবেক্ষণগুলি এলোমেলো করে দেওয়া সমস্যার সমাধান করা উচিত। এটি দেখানো হিসাবে এক্সট্রাপোলেশন এক থেকে একটি দ্রাবক সমস্যা হয়ে ওঠে।

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