লিনিয়ার প্রতিরোধে ওজনকে কীভাবে অ-নেতিবাচক হতে বাধ্য করা যায়


27

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

উত্তর:


27

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

এই বলে যে, সাইকিট-লার্নে অ-নেতিবাচক সর্বনিম্ন স্কোয়ারগুলির কোনও মানক প্রয়োগ নেই is টানার অনুরোধটি এখনও খোলা আছে

তবে, দেখে মনে হচ্ছে স্কিপি একই প্রয়োগ করেছে

PS: আমি স্কিপি সংস্করণ চেষ্টা করিনি। আমি এটি পুরোপুরি গুগল করে খুঁজে পেয়েছি।


1
রিজ রিগ্রেশন সম্পর্কে কী যেখানে এটি ইতিবাচক হতে বাধ্য হয়েছিল?
চার্লি পার্কার

15

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

from sklearn.linear_model import Lasso
lin = Lasso(alpha=0.0001,precompute=True,max_iter=1000,
            positive=True, random_state=9999, selection='random')
lin.fit(X,y)

0

আপনি কেন এটি করতে চান (এবং আনুমানিক কীভাবে) তার উদাহরণ এখানে।

আমার কাছে আবাসিক দামের 3 ভবিষ্যদ্বাণীপূর্ণ মডেল রয়েছে: লিনিয়ার, গ্রেডিয়েন্ট বুস্টিং, নিউরাল নেটওয়ার্ক।

আমি এগুলিকে একটি ওজনযুক্ত গড়ের সাথে মিশ্রিত করতে এবং সেরা ওজন খুঁজে পেতে চাই।

আমি লিনিয়ার রিগ্রেশন চালাই এবং আমি -৩.১, 2.5, 1.5 এবং কিছু বাধা মত ওজন সহ একটি সমাধান পাই।

সুতরাং আমি পরিবর্তে sklearn ব্যবহার করে কি হয়

blendlasso = LassoCV(alphas=np.logspace(-6, -3, 7),
                     max_iter=100000,
                     cv=5,
                     fit_intercept=False,
                     positive=True)

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

স্কলারন ডকস সূচিত করে যে সংখ্যার কারণে আপনার আলফা 0 তে সেট করা উচিত নয়, তবে আপনি সরাসরি লাসো () ব্যবহার করতে পারেন এবং যুক্তিসঙ্গত উত্তর পেতে আপনি যতটা দূরে যেতে পারেন তত কম আলফা প্যারামিটার সেট করতে পারেন।

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