সাইকিট দ্বিপদী ডেভিয়েশন হ্রাস ফাংশন


11

এটি সাইকিট গ্রেডিয়েন্ট বুস্টিংয়ের দ্বিপদী বিচ্যুতি ক্ষতি ফাংশন,

   def __call__(self, y, pred, sample_weight=None):
        """Compute the deviance (= 2 * negative log-likelihood). """
        # logaddexp(0, v) == log(1.0 + exp(v))
        pred = pred.ravel()
        if sample_weight is None:
            return -2.0 * np.mean((y * pred) - np.logaddexp(0.0, pred))
        else:
            return (-2.0 / sample_weight.sum() *
                    np.sum(sample_weight * ((y * pred) - np.logaddexp(0.0, pred))))

এই ক্ষতির ফাংশন 0 এবং 1 শ্রেণীর সাথে শ্রেণীর মধ্যে সমান নয় anyone যে কেউ এটি কীভাবে ঠিক বলে বিবেচিত হয় তা ব্যাখ্যা করতে পারে।

উদাহরণস্বরূপ, কোনও নমুনা ওজন ছাড়াই, ক্লাস 1 এর ক্ষতির ফাংশনটি

-2(pred - log(1 + exp(pred))

বনাম 0 এর জন্য বনাম

-2(-log(1+exp(pred))

এই দুটির জন্য প্লট ব্যয়ের ক্ষেত্রে একই রকম নয়। আমাকে বুঝতে কেউ সাহায্য করতে পারে?

উত্তর:


17

এই বাস্তবায়নটি বোঝার জন্য দুটি পর্যবেক্ষণ দরকার।

প্রথম যে predহয় না তা একটি লগ মতভেদ, একটি সম্ভাবনা।

পিsklearnpred-2

Yলগ(পি)+ +(1-Y)লগ(1-পি)=লগ(1-পি)+ +Yলগ(পি1-পি)

পি=পি1+ +পি1-পি=11+ +পি1

লগ(1-পি)=লগ(11+ +পি)=-লগ(1+ +পি)

এবং

লগ(পি1-পি)=লগ(পি)=পি

সুতরাং সামগ্রিকভাবে, দ্বিপদী বিচ্যুতি সমান

Yপি-লগ(1+ +পি)

যা সমীকরণটি sklearnব্যবহার করছে।


আপনাকে ধন্যবাদ. যদি আমি predলগ প্রতিক্রিয়াগুলির সাথে প্রতিস্থাপন করি তবে ক্ষতির ফাংশন উভয় শ্রেণীর জন্য অভিন্ন।
কুমারান

এই একই প্রশ্নটি আমার জন্য সম্প্রতি এলো। আমি গ্রেডিয়েন্টবুস্টডমডেলস . googlecode.com/git/gbm/inst/doc/gbm.pdf পৃষ্ঠা 10 দেখছিলাম যেখানে বিচ্যুতিটির গ্রেডিয়েন্ট তালিকাভুক্ত করা হয়েছে। তবে মনে হয় যে গ্রেডিয়েন্টটি তারা দেখায় তা লগ-লিকের জন্য isণাত্মক লগ-লিঙ্কের জন্য নয়। এটি কি সঠিক - আপনার ব্যাখ্যাটি এখানে মিলছে বলে মনে হচ্ছে?
বি_মিনার

1
@ বি_মিনার লিঙ্কটি নষ্ট হয়েছে
জেনএক্স

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