ভেরিয়েবল মডেলে ত্রুটিযুক্ত নিরপেক্ষতার চেয়ে ভাল ফলাফল অর্জনের জন্য রিগ্রেশনের জন্য পক্ষপাতদায়ক অনুমানকারী


13

আমি কিছু গবেষণার জন্য ত্রুটি ইন ভেরিয়েবল মডেলের জন্য কিছু সিনেট্যাটিক ডেটা নিয়ে কাজ করছি। বর্তমানে আমার একক স্বাধীন ভেরিয়েবল রয়েছে এবং আমি ধরে নিচ্ছি যে নির্ভরশীল ভেরিয়েবলের আসল মানটির জন্য আমি তারতম্যটি জানি।

সুতরাং, এই তথ্যের সাহায্যে আমি নির্ভরশীল ভেরিয়েবলের সহগের জন্য একটি নিরপেক্ষ অনুমানক অর্জন করতে পারি।

মডেলটি:

কোথায়: igকিছুige_2 \ পাঠ্য {~} N (0,1) এর জন্যx~=x+e1
1 ~ এন ( 0 , σ 2 ) σ 2 ~ এন ( 0 , 1 )y=0.5x10+e2

e1~N(0,σ2)σ
e2~N(0,1)

যেখানে y, il tilde {x the এর মানগুলি y,x~প্রতিটি প্রতিটি নমুনার জন্য পরিচিত এবং সেই নমুনার জন্য x এর প্রকৃত মানের মানিক বিচ্যুতিও xজানা যায়: σx

আমি ওএলএস ব্যবহার করে পক্ষপাতদুষ্ট ( β^ ) সহগ পেতে এবং তারপরে এটি সমন্বয় করে:

β=β^σ^x~2σx2

আমি দেখতে পাচ্ছি যে সহগের জন্য আমার নতুন, নিরপেক্ষ অনুমানকটি এই মডেলটির সাথে আরও ভাল (প্রকৃত মানের কাছাকাছি), তবে এমএসই পক্ষপাতদুষ্ট অনুমানক ব্যবহারের চেয়ে খারাপ হচ্ছে।

কি হচ্ছে? আমি পক্ষপাতদুষ্টের চেয়ে আরও ভাল ফলাফলের প্রত্যাশা করেছিলাম একটি পক্ষপাতিত্বকারী অনুমানকারী।

মতলব কোড:

reg_mse_agg = [];
fixed_mse_agg = [];
varMult = 1;
numTests = 60;
for dataNumber=1:8
    reg_mses = [];
    fixed_mses = [];

    X = rand(1000,1);
    X(:,1) = X(:,1) * 10;
    X(:,1) = X(:,1) + 5;

    varX = var(X);
    y = 0.5 * X(:,1) -10;

    y = y + normrnd(0,1,size(y));    
    origX = X;
    X = X + normrnd(0,dataNumber * varMult ,size(X));
    train_size = floor(0.5 * length(y));
    for t=1:numTests,
        idx = randperm(length(y));
        train_idx = idx(1:train_size);
        test_idx = idx(train_size+1:end);
        Xtrain = X(train_idx,:);
        ytrain = y(train_idx);        
        Xtest = X(test_idx,:);
        ytest = y(test_idx);

        b = OLS_solver(Xtrain, ytrain);
        %first arg of evaluate returns MSE, working correctly.
        [ reg_mse, ~ ] = evaluate( b,Xtest,ytest);
        reg_mses = [reg_mses ; reg_mse];

        varInd = var(Xtrain);
        varNoise = varInd - varX;
        bFixed = [0 0]';
        bFixed(1) = b(1) * varInd / varX;
        bFixed(2) = mean(ytrain - bFixed(1)*Xtrain);
        [fixed_mse,~ ] = evaluate( bFixed,Xtest,ytest);
        fixed_mses = [fixed_mses ; fixed_mse];

        dataNumber * varMult
        b
        bFixed

    end
    reg_mse_agg = [reg_mse_agg , reg_mses];
    fixed_mse_agg = [fixed_mse_agg , fixed_mses];

end

mean(reg_mse_agg)
mean(fixed_mse_agg)

ফলাফল:

পক্ষপাতদুষ্ট অনুমানকারীর এমএসই:

ans =

  Columns 1 through 7

    1.2171    1.6513    1.9989    2.3914    2.5766    2.6712    2.5997

  Column 8

    2.8346

নিরপেক্ষ অনুমানক এর এমএসই:

ans =

  Columns 1 through 7

    1.2308    2.0001    2.9555    4.9727    7.6757   11.3106   14.4283

  Column 8

   11.5653

তদ্ব্যতীত, bএবং এর মানগুলি মুদ্রণ করা bFixedআমি পক্ষপাতদায়ক অনুমানের চেয়ে প্রত্যাশার তুলনায় bFixedপ্রকৃত মূল্যবোধের 0.5,-10নিকটেই দেখতে পাই ।

পিএস পক্ষপাতদুষ্ট অনুমানকারীের চেয়ে পক্ষপাতহীন হওয়ার ফলাফল পরিসংখ্যানগত তাৎপর্যপূর্ণ - এটির জন্য পরীক্ষাটি কোড থেকে বাদ দেওয়া হয়, কারণ এটি "সম্পূর্ণ সংস্করণ" কোডটির সরলকরণ।

আপডেট: আমি একটি পরীক্ষা যুক্ত করেছি যা cks এবং , এবং পক্ষপাতদুষ্ট অনুমানকটি এই মেট্রিক অনুসারে নিরপেক্ষ পক্ষের তুলনায় প্রকৃতপক্ষে আরও খারাপ (বৃহত্তর মান), যদিও পক্ষপাতদুষ্ট হিসাবরক্ষক (পরীক্ষা-সেট) এর এমএসই উল্লেখযোগ্যভাবে ভাল। কোথায় নির্ভরশীল পরিবর্তনশীল প্রকৃত সহগ হয়, জন্য পক্ষপাতদুষ্ট মূল্নির্ধারক হয় , এবং জন্য পক্ষপাতিত্বহীন মূল্নির্ধারক হয় । Σ প্রতিটি পরীক্ষার জন্য ( β ' - β ) 2 β = 0.5 β β β ' βfor each test(β^β)2for each test(ββ)2
β=0.5β^βββ

এটি আমার বিশ্বাস বিশ্বাস করে যে ফলাফলের কারণটি নিরপেক্ষ আনুমানিকের উচ্চতর বৈকল্পিকতা নয়, কারণ এটি এখনও প্রকৃত মানের কাছাকাছি।

ক্রেডিট: স্টিভ পিসচের লেকচার নোটগুলি রিসোর্স হিসাবে ব্যবহার করে


আপনি কেবল কোডটি নয়, ফলাফলগুলি পোস্ট করলে এটি সহায়ক হবে।
অ্যালেকোস পাপাদোপল্লো

@ অ্যালোকোসপ্যাডাপোলোস এটি যুক্ত করেছে, bএবং এর সমস্ত মানের মুদ্রণ যোগ করে নি bFixed, তবে তারা কী দেখায় তা ব্যাখ্যা করেছে।
amit

উত্তর:


2

সংক্ষিপ্তসার: সংশোধন করা প্যারামিটারগুলি সত্য ভবিষ্যদ্বাণী ক্রিয়া হিসাবে পূর্বাভাস দেওয়ার জন্য । যদি পূর্বাভাসে ব্যবহার করা হয় তবে মূল প্যারামিটারগুলি আরও ভাল সম্পাদন করে।xx~

নোট করুন যে চারপাশে লুকানো দুটি পৃথক লিনিয়ার পূর্বাভাস মডেল রয়েছে। প্রথমত, দেওয়া , দ্বিতীয়, দেওয়া , yxY ~ X Y

y^x=βx+α,
yx~
y^x~=β~x~+α~.

এমনকি যদি আমরা সত্য পরামিতি -এর সাথে যোগাযোগ ছিল একটি ফাংশন হিসাবে ভবিষ্যদ্বাণী রৈখিক অনুকূল ভবিষ্যদ্বাণী রৈখিক অনুকূল এর কার্যকারিতা হিসেবে থেকে আলাদা হতে হবে । প্রশ্নের কোডটি নিম্নলিখিতটি করেxx~

  1. the পরামিতিগুলির অনুমান করুনβ~^,α~^
  2. গণনা অনুমানβ^,α^
  3. এবং of এর পারফরম্যান্সের তুলনা করুনy^1=β^x~+α^y^2=β~^x~+α~^

৩ য় ধাপে আমরা model of এর ফাংশন হিসাবে পূর্বাভাস , ফাংশন হিসাবে নয় , দ্বিতীয় মডেলের (অনুমান) সহগগুলি আরও ভালভাবে ব্যবহার করে।x~x

প্রকৃতপক্ষে, যদি আমাদের , এবং to অ্যাক্সেস থাকে তবে না , আমরা প্রথম মডেলটিতে লিনিয়ার প্রাক্কলনকারীকে স্থান দিতে পারি , আমরা যদি প্রথম রূপান্তর রূপটি perform থেকে সম্পাদন করি এবং তারপরে সর্বশেষ সমীকরণে গণনা করি, আমরা সহগগুলি ফিরে পাইαβx~xx

yx^^=βx^(x~)+α=β(μx+(x^μx)σx2σx~2)+α=σx2σx~2β+αβ(1σx2σx~2)μx.
α~,β~α,βα~,β~। সুতরাং, যদি ভবিষ্যদ্বাণীকের শোরগোলের সংস্করণ দেওয়া হ'ল লিনিয়ার পূর্বাভাসটি করা হয়, তবে আমাদের কেবল গোলমাল সংক্রান্ত তথ্যে একটি রৈখিক মডেল ফিট করা উচিত। পূর্বাভাস ব্যতীত অন্য কারণে যদি আমরা সত্য ঘটনাতে আগ্রহী তবে সংশোধিত সহগ আগ্রহী।α,β

পরীক্ষামূলক

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

Reg parameters, noisy predictor
1.3387    1.6696    2.1265    2.4806    2.5679    2.5062    2.5160    2.8684

Fixed parameters, noisy predictor
1.3981    2.0626    3.2971    5.0220    7.6490   10.2568   14.1139   20.7604

Reg parameters, true predictor
1.3354    1.6657    2.1329    2.4885    2.5688    2.5198    2.5085    2.8676

Fixed parameters, true predictor
1.1139    1.0078    1.0499    1.0212    1.0492    0.9925    1.0217    1.2528

এটি হ'ল, instead এর পরিবর্তে ব্যবহার করার সময় , সংশোধিত প্যারামিটারগুলি প্রত্যাশিতভাবে, সত্যায়ন না করা পরামিতিগুলিকে পরাজিত করে। তদ্ব্যতীত, ( ) এর সাথে ভবিষ্যদ্বাণীটি , নির্দিষ্ট প্যারামিটার এবং সত্য ভবিষ্যদ্বাণীকারী ( ) এর চেয়ে ভাল হ'ল, নিয়মিত প্যারামিটার এবং গোলমাল ভবিষ্যদ্বাণী, যেহেতু স্পষ্টভাবে শব্দটি ভবিষ্যদ্বাণীকে কিছুটা হ্রাস করে। অন্য দুটি ক্ষেত্রে একটি ভুল মডেলের পরামিতিগুলি ব্যবহার করে এবং এর ফলে দুর্বল ফলাফল আসে।˜ x α , β , এক্স ˜ α , ˜ β , ˜ এক্সxx~α,β,xα~,β~,x~

অরৈখিকতা সম্পর্কে গুপ্তচর

y,xyx~xxx~xyx~xE(xx~)এক্সy^^xx

পরীক্ষার ফলাফলের প্রতিরূপের জন্য ম্যাটল্যাব কোড

নোট করুন যে এটিতে মূল্যায়নের জন্য ও ওএলএস_সলভারের জন্য আমার নিজস্ব প্রয়োগগুলি রয়েছে যেহেতু সেগুলিতে প্রশ্নটিতে দেওয়া হয়নি।

rng(1)

OLS_solver = @(X,Y) [X ones(size(X))]'*[X ones(size(X))] \ ([X ones(size(X))]' * Y);
evaluate = @(b,x,y)  mean(([x ones(size(x))]*b - y).^2);

reg_mse_agg = [];
fixed_mse_agg = [];
reg_mse_orig_agg = [];
fixed_mse_orig_agg = [];

varMult = 1;
numTests = 60;
for dataNumber=1:8
    reg_mses = [];
    fixed_mses = [];
    reg_mses_orig = [];
    fixed_mses_orig = [];

    X = rand(1000,1);
    X(:,1) = X(:,1) * 10;
    X(:,1) = X(:,1) + 5;

    varX = var(X);
    y = 0.5 * X(:,1) -10;

    y = y + normrnd(0,1,size(y));    
    origX = X;
    X = X + normrnd(0,dataNumber * varMult ,size(X));
    train_size = floor(0.5 * length(y));
    for t=1:numTests,
        idx = randperm(length(y));
        train_idx = idx(1:train_size);
        test_idx = idx(train_size+1:end);
        Xtrain = X(train_idx,:);
        ytrain = y(train_idx);        
        Xtest = X(test_idx,:);
        origXtest = origX(test_idx,:);
        ytest = y(test_idx);

        b = OLS_solver(Xtrain, ytrain);
        %first arg of evaluate returns MSE, working correctly.
        reg_mse = evaluate( b,Xtest,ytest);
        reg_mses = [reg_mses ; reg_mse];

        varInd = var(Xtrain);
        varNoise = varInd - varX;
        bFixed = [0 0]';
        bFixed(1) = b(1) * varInd / varX;
        bFixed(2) = mean(ytrain - bFixed(1)*Xtrain);
        fixed_mse = evaluate( bFixed,Xtest,ytest);
        fixed_mses = [fixed_mses ; fixed_mse];

        reg_mse_orig = evaluate(b, origXtest, ytest);
        reg_mses_orig = [reg_mses; reg_mses_orig];

        fixed_mse_orig = evaluate(bFixed, origXtest, ytest);
        fixed_mses_orig = [fixed_mses_orig; fixed_mse_orig];

    end
    reg_mse_agg = [reg_mse_agg , reg_mses];
    fixed_mse_agg = [fixed_mse_agg , fixed_mses];

    reg_mse_orig_agg = [reg_mse_orig_agg , reg_mses_orig];
    fixed_mse_orig_agg = [fixed_mse_orig_agg , fixed_mses_orig]; 
end

disp('Reg parameters, noisy predictor')
disp(mean(reg_mse_agg))
disp('Fixed parameters, noisy predictor')
disp(mean(fixed_mse_agg))
disp('Reg parameters, true predictor')
disp(mean(reg_mse_orig_agg))
disp('Fixed parameters, true predictor')
disp(mean(fixed_mse_orig_agg))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.