আর এর গ্ল্যামনেট এবং পাইথনের সাইকিট-লার্ন ব্যবহার করে রিজ রিগ্রেশন-এর মধ্যে পার্থক্যগুলি কী?


11

জেমস, উইটেন, হাস্টি, তিবশিরানী (২০১৩) র র ' রেড রেজিস্ট্রেশন / ল্যাসো'র অ্যাপ্লিকেশন ইন স্ট্যাটাসটিকাল লার্নিং বইয়ের ল্যাব বিভাগ §§.। পেরিয়ে যাচ্ছি ।

আরও সুনির্দিষ্টভাবে, আমি Ridgeআর প্যাকেজ 'আইএসএলআর' থেকে 'হিট্টার্স' ডেটাসেটে বিজ্ঞান-বিজ্ঞান মডেলটি প্রয়োগ করার চেষ্টা করছি । আমি আর কোডে প্রদর্শিত একই বৈশিষ্ট্যগুলির সেট তৈরি করেছি। যাইহোক, আমি glmnet()মডেল থেকে ফলাফল কাছাকাছি পেতে পারে না । আমি তুলনার জন্য একটি এল 2 টিউনিং প্যারামিটার নির্বাচন করেছি। (বিজ্ঞান-শিখায় 'আলফা' যুক্তি)।

পাইথন:

regr = Ridge(alpha=11498)
regr.fit(X, y)

http://nbviewer.ipython.org/github/JWarmenhoven/ISL-python/blob/master/Notebooks/Chapter%206.ipynb

আর:

লক্ষ্য করুন যুক্তি alpha=0মধ্যে glmnet()উপায়ে যে একটি ও L2 শাস্তি প্রয়োগ করতে হবে (রিজ রিগ্রেশন)। ডকুমেন্টেশন সতর্ক করে যে এর জন্য কোনও একক মান প্রবেশ না করে lambda, তবে ফলাফলটি আইএসএলের মতোই যেখানে ভেক্টর ব্যবহৃত হয়।

ridge.mod <- glmnet(x,y,alpha=0,lambda=11498)

পার্থক্যের কারণ কী?

সম্পাদনা করুন: আর-তে শাস্তিযুক্ত প্যাকেজটি
ব্যবহার করার সময় penalized(), সহগগুলি স্কাইকিট-শিখার সাথে একই।

ridge.mod2 <- penalized(y,x,lambda2=11498)

তখন প্রশ্নটিও হতে পারে: ' রিজ রিগ্রেশন করার সময় glmnet()এবং এর মধ্যে পার্থক্য কী penalized()?

আর প্যাকেজ গ্লোনেট https://github.com/civisanalytics/python-glmnet এ ব্যবহৃত প্রকৃত ফোর্টরান কোডের জন্য নতুন পাইথন র‍্যাপার


5
গ্ল্যামনেট রিজ রিগ্রেশন সম্পর্কে সম্পূর্ণ অপরিচিত। তবে ডিফল্টরূপে, sklearn.linear_model.Ridgeআনপেনালাইজড ইন্টারসেপ্ট অ্যাসেসিমেশন (স্ট্যান্ডার্ড) করে এবং জরিমানা এমন হয় যা ||Xb - y - intercept||^2 + alpha ||b||^2হ্রাস করা হয় b। জরিমানার সামনে কারণ 1/2বা 1/n_samplesবা উভয়ই থাকতে পারে , ফলাফলগুলি তত্ক্ষণাত্ পৃথক করে তোলে। পেনাল্টি স্কেলিং সমস্যাটি নির্ধারণের জন্য, উভয় ক্ষেত্রেই জরিমানা নির্ধারণ করুন 0 সেখানে কোনও বিভেদ সমাধান করুন এবং তারপরে জরিমানাটি কী যুক্ত করে তা পরীক্ষা করুন। এবং বিটিডব্লিউ আইএমএইচও এখানে এই প্রশ্নটি জিজ্ঞাসা করার সঠিক জায়গা।

উত্তর:


9

আমার উত্তরটি 1 এর গুণক অনুপস্থিত1এন


এখানে দুটি উল্লেখ উল্লেখ করা উচিত যে সম্পর্কটি স্পষ্ট করা উচিত।

স্কলারন ডকুমেন্টেশন বলে যে linear_model.Ridgeনিম্নলিখিত উদ্দেশ্য ফাংশনটি অনুকূল করে

|এক্সβ-Y|22+ +α|β|22

গ্ল্যামনেট পেপার বলে যে স্থিতিস্থাপক নেট নীচের উদ্দেশ্য ফাংশনটি অনুকূল করে

|এক্সβ-Y|22+ +λ(12(1-α)|β|22+ +α|β|1)

ααλα

α=0λ=2αsklearnlinear_model.Ridge


এবং আমি সম্পূর্ণরূপে এটিকে মিস করেছিলাম একনবার্গের মন্তব্যেও। আমি ব্যবহার করতে হবে standardize = FALSEglmnet()অভিন্ন ফলাফল পেতে।
জর্ডি

@ জর্ডি যদি linear_model.Ridgeকোনও বাস্তব বিশ্বের বিশ্লেষণের জন্য ব্যবহার করে থাকেন তবে অবশ্যই আপনার অবশ্যই মানী করা উচিত ।
ম্যাথু ড্রুরি

আমি বুঝতে পারি যে স্কলারন linear_model.Ridgeমডেল বৈশিষ্ট্যগুলি স্বয়ংক্রিয়ভাবে মানক করে। সাধারণীকরণ alচ্ছিক। আমি অবাক হই যে কেন glmnet()মডেলগুলিকে অভিন্ন ফলাফল আনার জন্য আমাকে কেন মানিককরণ নিষ্ক্রিয় করতে হবে?
জর্দি

10

ম্যাথু ড্রুরির উত্তরের 1 / N এর একটি ফ্যাক্টর হওয়া উচিত। আরো স্পষ্ট করে...

Glmnet ডকুমেন্টেশন বলে যে ইলাস্টিক নেট ক্ষতি ফাংশন ছোট

1এনএক্সβ-Y22+ +λ(12(1-α)β22+ +αβ1)

Sklearn ডকুমেন্টেশন বলছেন যে linear_model.Ridgeছোট ক্ষতি ফাংশন

এক্সβ-Y22+ +αβ22

যা হ্রাস করার সমান

1এনএক্সβ-Y22+ +αএনβ22

α=0λ=2এনαsklearn

library(glmnet)
X = matrix(c(1, 1, 2, 3, 4, 2, 6, 5, 2, 5, 5, 3), byrow = TRUE, ncol = 3)
y = c(1, 0, 0, 1)
reg = glmnet(X, y, alpha = 0, lambda = 2 / nrow(X))
coef(reg)

গ্ল্যামনেট আউটপুট: –0.03862100, –0.03997036, .00.07276511, 0.42727955

import numpy as np
from sklearn.linear_model import Ridge
X = np.array([[1, 1, 2], [3, 4, 2], [6, 5, 2], [5, 5, 3]])
y = np.array([1, 0, 0, 1])
reg = Ridge(alpha = 1, fit_intercept = True, normalize = True)
reg.fit(X, y)
np.hstack((reg.intercept_, reg.coef_))

স্কালনার আউটপুট: .00.03862178, .00.0399697, .00.07276535, 0.42727921


4
বিভিন্ন গ্রন্থাগারে ব্যবহৃত প্যারামিটারগুলির বিভিন্ন সংজ্ঞা এবং তাদের স্কেলিং বিভ্রান্তির একটি সাধারণ উত্স।
অ্যারোনডিফাজিও

1
আমি আশা করি না যে গুং এবং আমি উভয়ই এই ভুলটি পেয়ে যাব।
মাইকেল আর চেরনিক

2
হ্যাঁ, আপনি দুজনেই ভুল পেয়েছেন। আমার সম্পাদন করা প্রত্যাখ্যান জন্য কারণে এটা পরিষ্কার যে আপনাদের উভয়ের নয় stats.stackexchange.com/review/suggested-edits/139985 আমার মন্তব্য "1 / এন এর ফ্যাক্টর অনুপস্থিত" দেখতে পাইনি করা
পরিদর্শক

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

1
@ ভিজিটর দুঃখিত আমি যদি কিছুটা প্ররোচিত হই। আমার সত্যিই এমন যোগাযোগ করার চেষ্টা করা উচিত যা আপনি সাইটের পক্ষে একজন ভাল সম্ভাব্য অবদানকারী হিসাবে মনে হয় এবং আমি চাই আপনি একটি ভাল অভিজ্ঞতা অর্জন করুন। আমাদের যেমন অন্যান্য গোষ্ঠীর মতো কিছু সামাজিক নিয়মাবলী রয়েছে এবং সে সম্পর্কে সচেতন থাকলে আপনার আরও ভাল অভিজ্ঞতা হবে। আমি এখনও মনে করি "ম্যাথু ড্রুরির উত্তর ভুল" বেশ কঠোর, যোগাযোগের আরও ভাল উপায় আছে যে আমার উত্তর ভুলভাবে একটি উপাদান হারিয়েছে1এন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.