প্রধান উপাদানগুলির সংখ্যা নির্ধারণের জন্য পিসিএর জন্য ক্রস-বৈধতা কীভাবে সম্পাদন করবেন?


12

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

  1. একটি বস্তু মুছুন
  2. বাকি স্কেল
  3. কিছু সংখ্যক উপাদান সহ পিসিএ সঞ্চালন করুন
  4. (2) প্রাপ্ত পরামিতি অনুযায়ী মোছা বস্তুটি স্কেল করুন
  5. পিসিএ মডেল অনুসারে বস্তুর পূর্বাভাস দিন
  6. এই অবজেক্টের জন্য প্রেসের গণনা করুন
  7. অন্যান্য বস্তুতে একই অ্যালগরিদম পুনরায় সম্পাদন করুন
  8. সমস্ত প্রেস মানগুলি যোগ করুন
  9. মুনাফা

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

ক্রস-বৈধকরণের পদক্ষেপে আমি যা প্রয়োগ করি তা সঠিক কিনা আপনি দয়া করে আমাকে বলতে পারেন:

case 'loocv'

% # n - number of objects
% # p - number of variables
% # vComponents - the number of components used in CV
dataSets = divideData(n,n); 
         % # it is just a variable responsible for creating datasets for CV 
         % #  (for LOOCV datasets will be equal to [1, 2, 3, ... , n]);'
tempPRESS = zeros(n,vComponents);

for j = 1:n
  Xmodel1 = X; % # X - n x p original matrix
  Xmodel1(dataSets{j},:) = []; % # delete the object to be predicted
  [Xmodel1,Xmodel1shift,Xmodel1div] = skScale(Xmodel1, 'Center', vCenter, 
                                              'Scaling', vScaling); 
          % # scale the data and extract the shift and scaling factor
  Xmodel2 = X(dataSets{j},:); % # the object to be predicted
  Xmodel2 = bsxfun(@minus,Xmodel2,Xmodel1shift); % # shift and scale the object
  Xmodel2 = bsxfun(@rdivide,Xmodel2,Xmodel1div);
  [Xscores2,Xloadings2] = myNipals(Xmodel1,0.00000001,vComponents); 
          % # the way to calculate the scores and loadings
                % # Xscores2 - n x vComponents matrix
                % # Xloadings2 - vComponents x p matrix
  for i = 1:vComponents
    tempPRESS(j,i) = sum(sum((Xmodel2* ...
       (eye(p) - transpose(Xloadings2(1:i,:))*Xloadings2(1:i,:))).^2));
  end
end
PRESS = sum(tempPRESS,1);

সফ্টওয়্যার ( PLS_Toolbox ) এ এটি কাজ করে:

for i = 1:vComponents
    tempPCA = eye(p) - transpose(Xloadings2(1:i,:))*Xloadings2(1:i,:);
    for kk = 1:p
        tempRepmat(:,kk) = -(1/tempPCA(kk,kk))*tempPCA(:,kk);
          % # this I do not understand
        tempRepmat(kk,kk) = -1; 
          % # here is some normalization that I do not get
    end 
    tempPRESS(j,i) = sum(sum((Xmodel2*tempRepmat).^2)); 
end

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


আমি অতিরিক্ত সাধারণীকরণ স্নিপেট বুঝতে পারছি কিনা তা আরও পরীক্ষা করে দেখুন: tempRepmat(kk,kk) = -1লাইনের ভূমিকা কী ? পূর্ববর্তী লাইনটি ইতিমধ্যে নিশ্চিত করে না যে tempRepmat(kk,kk)-1 সমান? এছাড়াও, কেন বিয়োগ? ত্রুটি যেভাবেই হোক স্কোয়ার করা হবে, তাই আমি কি সঠিকভাবে বুঝতে পারি যে যদি বিয়োগগুলি সরানো হয় তবে কিছুই পরিবর্তন হবে না?
অ্যামিবা

আমি আগে এটি পরীক্ষা করে দেখছিলাম এবং কিছুই পরিবর্তন হবে না। এটাই সঠিক. আমি দৃust় পিসিএ বাস্তবায়নের সাথে কেবল কয়েকটি সমান্তরাল খুঁজে পেয়েছি কারণ এই জাতীয় বাস্তবায়নের প্রতিটি গণনামূলক প্রেসের মানটির (সমস্ত কিছু সংক্ষেপণের আগে) এর নিজস্ব ওজন থাকে।
কিরিল

আমি উত্তরে প্রদত্ত ম্যাটল্যাব কোডের সমান আর কোডটি সন্ধান করছি এবং একটি অনুগ্রহ রেখেছি।
এআইএম_বিএলবি

3
@ সিএসএ, কোড জিজ্ঞাসা করা এখানে বিষয় ছাড়াই (এমনকি, সম্ভবত, মন্তব্য ও ধনীর মাধ্যমে)। স্ট্যাক ওভারফ্লোতে আপনার এটি জিজ্ঞাসা করতে সক্ষম হওয়া উচিত : আপনি কোডটি অনুলিপি করতে পারেন, উত্সটি ডাব্লু / লিংকের উদ্ধৃতি দিয়ে এখানে অনুবাদ চাইতে পারেন for আমি বিশ্বাস করি যে সেখানে সমস্ত বিষয় হবে।
গুং - মনিকা পুনরায়

উত্তর:


21

আপনি যা করছেন তা ভুল: পিসিএর মতো প্রেসার গণনা করার কোনও মানে হয় না! বিশেষত, সমস্যাটি আপনার # 5 ধাপে রয়েছে।


পিসিএর জন্য প্রেসের কাছে নির্দোষ পন্থা

ndx(i)Rd,i=1nx(i)X(i)kU(i)x(i)x^(i)2=x(i)U(i)[U(i)]x(i)2i

PRESS=?i=1nx(i)U(i)[U(i)]x(i)2.

সরলতার জন্য, আমি এখানে কেন্দ্রীকরণ এবং স্কেলিংয়ের বিষয়গুলি উপেক্ষা করছি।

নিষ্প্রভ দৃষ্টিভঙ্গি ভুল

উপরের সমস্যাটি হ'ল আমরা the পূর্বাভাস গণনা করতে use ব্যবহার এবং এটি খুব খারাপ জিনিস।x(i)x^(i)

কোনও রিগ্রেশন কেসের ক্ষেত্রে গুরুত্বপূর্ণ পার্থক্যটি নোট করুন, যেখানে পুনর্গঠনের ত্রুটির সূত্রটি মূলত একই , কিন্তু ভবিষ্যদ্বাণী predictor ভেরিয়েবল ব্যবহার করে এবং নির্ণয় করা হয় না ব্যবহার । এটি পিসিএতে সম্ভব নয়, কারণ পিসিএতে কোনও নির্ভরশীল এবং স্বতন্ত্র ভেরিয়েবল নেই: সমস্ত ভেরিয়েবলগুলি একসাথে চিকিত্সা করা হয়।y(i)y^(i)2y^(i)y(i)

বাস্তবে এটা যে প্রেস উপরের হিসাবে নির্ণিত উপাদান সংখ্যা বাড়িয়ে দিয়ে হ্রাস করতে পারেন এর মানে হল এবং সর্বনিম্ন পৌঁছাতে না। যা একটিকে ভাবতে পরিচালিত করবে যে সমস্ত উপাদানগুলি উল্লেখযোগ্য। অথবা হতে পারে কিছু ক্ষেত্রে এটি সর্বনিম্নে পৌঁছে যায়, তবে তবুও সর্বোত্তম মাত্রিকতার চেয়ে বেশি পরিমাণে বাড়ে।kd

একটি সঠিক পদ্ধতির

বেশ কয়েকটি সম্ভাব্য পন্থা রয়েছে, ব্রো এট আল দেখুন। (২০০৮) উপাদান মডেলের ক্রস-বৈধকরণ: একটি ওভারভিউ এবং তুলনা করার জন্য বর্তমান পদ্ধতির একটি সমালোচনা । একটি পদ্ধতি হ'ল একবারে একটি ডেটার পয়েন্টের একটি মাত্রা (যেমন পরিবর্তে ) ছেড়ে দেওয়া হয়, যাতে প্রশিক্ষণ তথ্যটি একটি হারানো মান সহ একটি ম্যাট্রিক্সে পরিণত হয় , এবং তারপরে PCA সহ এই অনুপস্থিত মানটির পূর্বাভাস ("অভিমান") করতে হবে। (অবশ্যই অবশ্যই এলোমেলোভাবে ম্যাট্রিক্স উপাদানগুলির কিছু বড় ভগ্নাংশ রাখা যেতে পারে, যেমন 10%)। সমস্যাটি হ'ল অনুপস্থিত মানগুলির সাথে পিসিএর কম্পিউটিংটি কম্পিউটেশনালি বেশ ধীর হতে পারে (এটি ইএম অ্যালগরিদমের উপর নির্ভর করে) তবে এখানে বহুবার পুনরাবৃত্তি করা দরকার। আপডেট: দেখুন http://alexhwilliams.info/itsneuronalblog/2018/02/26/crossval/xj(i)x(i) একটি সুন্দর আলোচনা এবং পাইথন বাস্তবায়নের জন্য (সর্বনিম্ন স্কোয়ারগুলি পরিবর্তনের মাধ্যমে অনুপস্থিত মানগুলির সাথে পিসিএ প্রয়োগ করা হবে)।

আমি যে পদ্ধতির চেয়ে অনেক বেশি ব্যবহারিক বলে মনে করেছি তা হ'ল একটি ডেটা পয়েন্ট leave একবারে ছেড়ে দেওয়া, প্রশিক্ষণ ডেটার উপর ঠিক পিসিএ গণনা করুন (ঠিক উপরে হিসাবে), তবে তারপরে , তাদের একবারে ছেড়ে যান এবং বাকীটি ব্যবহার করে পুনর্গঠনের ত্রুটি গণনা করুন। এটি শুরুতে বেশ বিভ্রান্তিকর হতে পারে এবং সূত্রগুলি বেশ অগোছালো হয়ে যায় তবে বাস্তবায়ন বরং সোজা ward আমাকে প্রথমে (কিছুটা ভীতিজনক) সূত্রটি দেওয়া যাক এবং তারপরে সংক্ষেপে এটি ব্যাখ্যা করুন:x(i)x(i)

PRESSPCA=i=1nj=1d|xj(i)[U(i)[Uj(i)]+xj(i)]j|2.

এখানে অভ্যন্তরীণ লুপটি বিবেচনা করুন। আমরা এক বিন্দু বাদ এবং নির্ণিত প্রশিক্ষণ ডেটার উপর প্রধান উপাদান, । এখন আমরা প্রতিটি মান কে পরীক্ষারূপে রাখি এবং ভবিষ্যদ্বাণীটি সম্পাদনের জন্য অবশিষ্ট মাত্রাগুলি use ব্যবহার । ভবিষ্যদ্বাণী হয় -th "অভিক্ষেপ" (লিস্ট স্কোয়ার অর্থে) এর তুল্য এর subspace সম্মুখের দৃশ্যও দ্বারা । এটি গণনা করতে, পিসি স্পেসে একটি বিন্দু সন্ধান করুন যা নিকটতমx(i)kU(i)xj(i)xj(i)Rd1x^j(i)jxj(i)U(i)z^Rkxj(i) গণনা করে যেখানে হয় সঙ্গে -th সারি লাথি মেরে ফেলেছে এবং অর্থ সিউডোইনভার্স। এখন মানচিত্রের the মূল স্থানটিতে ফিরে যান: এবং এর তম স্থানাঙ্ক গ্রহণ করুন । z^=[Uj(i)]+xj(i)RkUj(i)U(i)j[]+z^U(i)[Uj(i)]+xj(i)j[]j

সঠিক পদ্ধতির একটি অনুমান

আমি পিএলএসটুলবক্সে ব্যবহৃত অতিরিক্ত সাধারণীকরণটি বেশ বুঝতে পারি না, তবে এখানে একই পদ্ধতিতে চলে আসা একটি পদ্ধতি রয়েছে।

মূল উপাদানগুলির map মানচিত্র করার আরও একটি উপায় রয়েছে : ie, অর্থাত সিউডো-ইনভার্সের পরিবর্তে কেবল ট্রান্সপোজ নিন। অন্য কথায়, পরীক্ষার জন্য যে মাত্রাটি বাদ পড়েছে সেগুলি মোটেও গণনা করা হয় না এবং সংশ্লিষ্ট ওজনগুলিও কেবল লাথি মেরে বের করা হয়। আমি মনে করি এটি কম নির্ভুল হওয়া উচিত, তবে প্রায়শই গ্রহণযোগ্য হতে পারে। ভাল জিনিস হ'ল ফলস্বরূপ সূত্রটি নীচের মত এখন ভেক্টরাইজ করা যেতে পারে (আমি গণনা বাদ দিই):xj(i)z^approx=[Uj(i)]xj(i)

PRESSPCA,approx=i=1nj=1d|xj(i)[U(i)[Uj(i)]xj(i)]j|2=i=1n(IUU+diag{UU})x(i)2,

আমি কোথায় লিখেছে যেমন সংহতি জন্য, এবং শুন্যতে সমস্ত অ-তির্যক উপাদানের সেটিং উপায়। নোট করুন যে এই সূত্রটি হুবহু সংশোধন করে প্রথমটির মতো (নিষ্পাপ প্রেস) মতো দেখায়! আরও লক্ষ করুন যে এই সংশোধনটি কেবল PLS_Toolbox কোডের মতো তির্যক উপর নির্ভর করে । যাইহোক, সূত্রটি PLS_Toolbox এ প্রয়োগ করা বলে মনে হচ্ছে তার থেকে এখনও আলাদা এবং এই পার্থক্যটি আমি ব্যাখ্যা করতে পারি না।U(i)Udiag{}UU

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


উদাহরণ

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

এখানে চিত্র বর্ণনা লিখুন


ক্রস-বৈধতা সম্পাদন করতে ফলাফলগুলি প্লট করতে মাতলাব কোড

function pca_loocv(X)

%// loop over data points 
for n=1:size(X,1)
    Xtrain = X([1:n-1 n+1:end],:);
    mu = mean(Xtrain);
    Xtrain = bsxfun(@minus, Xtrain, mu);
    [~,~,V] = svd(Xtrain, 'econ');
    Xtest = X(n,:);
    Xtest = bsxfun(@minus, Xtest, mu);

    %// loop over the number of PCs
    for j=1:min(size(V,2),25)
        P = V(:,1:j)*V(:,1:j)';        %//'
        err1 = Xtest * (eye(size(P)) - P);
        err2 = Xtest * (eye(size(P)) - P + diag(diag(P)));
        for k=1:size(Xtest,2)
            proj = Xtest(:,[1:k-1 k+1:end])*pinv(V([1:k-1 k+1:end],1:j))'*V(:,1:j)'; 
            err3(k) = Xtest(k) - proj(k);
        end

        error1(n,j) = sum(err1(:).^2);
        error2(n,j) = sum(err2(:).^2);
        error3(n,j) = sum(err3(:).^2);
    end    
end

error1 = sum(error1);
error2 = sum(error2);
error3 = sum(error3);
%// plotting code
figure
hold on
plot(error1, 'k.--')
plot(error2, 'r.-')
plot(error3, 'b.-')
legend({'Naive method', 'Approximate method', 'Pseudoinverse method'}, ...
    'Location', 'NorthWest')
legend boxoff
set(gca, 'XTick', 1:length(error1))
set(gca, 'YTick', [])
xlabel('Number of PCs')
ylabel('Cross-validation error')

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

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

বিষয়টি হ'ল এই বাস্তবায়নটি সিভিতে ন্যূনতম পৌঁছানোর ক্ষমতা রাখে বলে মনে হয়।
কিরিল

টেপার খুব পায়খানা% পর্যন্ত পাসে ভ্যারিয়েন্স ব্যাখ্যা - আমি বলবো না এই ভালো না খারাপ, কিন্তু এটা নিশ্চিতভাবেই কিছু এক চাহিদা সচেতন হতে হয়। এবং% এর মত ব্যাখ্যা করা বৈকল্পিক 1 x^x
টির

@ কিরিল: ধন্যবাদ, কোড স্নিপেটটি এখন উপলব্ধি করে (সম্ভবত আপনি উপরোক্ত মন্তব্যগুলি এখন অপ্রচলিত অপসারণ করতে পারেন)। এটি করার কথা বলে আমার কোন ধারণা নেই তবে আপনি যদি বলেন যে এটি গণনা করা পূর্বাভাস ত্রুটিটি সর্বনিম্নে পৌঁছেছে, তবে সম্ভবত এটি বৃহত্তর (উপাদানগুলির সংখ্যা; আপনার কোডে পরিবর্তনশীল ) এর জন্য কার্যকরভাবে কিছু জরিমানা প্রবর্তন করছে । সত্যি বলতে, আমি এই জাতীয় কোনও পদ্ধতির বিষয়ে সন্দেহবাদী (যদি না এর মধ্যে তাত্ত্বিক ন্যায়সঙ্গততা না পাওয়া যায়), বিশেষত প্রদত্ত যে আমার উত্তরটিতে আমি বর্ণিত পদ্ধতি হিসাবে আরও ভাল পন্থা রয়েছে। ki
অ্যামিবা

1

@ অ্যামিবার দুর্দান্ত উত্তরে আরও সাধারণ পয়েন্ট যুক্ত করতে:

তত্ত্বাবধানে থাকা এবং নিরীক্ষণ করা মডেলগুলির মধ্যে একটি ব্যবহারিক এবং গুরুত্বপূর্ণ পার্থক্য হ'ল আনসারভিজড মডেলগুলির জন্য আপনি কী সমতুল্য বিবেচনা করবেন এবং কোনটি নয় তার জন্য আপনাকে আরও কঠোরভাবে চিন্তা করতে হবে।

তত্ত্বাবধানে থাকা মডেলের সবসময় তাদের চূড়ান্ত আউটপুট পাওয়া যায় সংজ্ঞা ও নির্মাণ দ্বারা: একটি উপায় যেখানে আপনি এই সম্পর্কে অনেক যত্ন প্রয়োজন হবে না এ হিসাবে একই অর্থ আছে বলে দাবি করে , তাই আপনি সরাসরি তুলনা করতে পারবেন।y^y^y

অর্থবহ পারফরম্যান্সের পদক্ষেপগুলি গঠনের জন্য, আপনাকে ভাবতে হবে যে মডেলটির কী ধরণের স্বাধীনতা আপনার প্রয়োগের জন্য অর্থহীন এবং কোনটি নয়। এটি স্কোরগুলিতে একটি প্রেসের দিকে পরিচালিত করবে, সম্ভবত (সাধারণত?) এক ধরণের প্রোক্রাস্টেসের মতো ঘূর্ণন / উল্টানো পরে।

এক্স উপর চাপ আমার অনুমান (তাদের 2 লাইন কোডের কোডটি কী করে তা জানার জন্য আমার কাছে এখন সময় নেই - তবে আপনি লাইনটি পেরিয়ে এক ঝলক দেখতে পারেন?):

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


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

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