অ্যান্ড্রু এনজি কেন পিসিএ করার জন্য এসভিডি এবং কোভারিয়েন্স ম্যাট্রিক্সের ইআইজি নয়?


29

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

আমার বোঝার থেকে, পিসিএ আমরা SVD ডাটা ম্যাট্রিক্স করা উচিত (m,n)আকার কোভ্যারিয়েন্স ম্যাট্রিক্স না, (n,n)মাপ। এবং কোভেরিয়েন্স ম্যাট্রিক্সের আইজেনভেেক্টর পচে যাওয়া।

তারা ডেটা ম্যাট্রিক্স নয়, কোভেরিয়েন্স ম্যাট্রিক্সের এসভিডি করবে কেন?


8
বর্গীয় প্রতিসম ধনাত্মক অর্ধবৃত্তিমূলক ম্যাট্রিক্সের জন্য (যেমন কোভারিয়েন্স ম্যাট্রিক্স), ইগেনভ্যালু এবং একবাক্য মানের ক্ষয় ঠিক একই।
অ্যামিবা বলছেন মনিকাকে

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

4
এই সম্পর্কে কিছু তথ্য এখানে: ডি.ম্যাথ ওয়ার্কস / ম্যাটলেবসেন্ট্রাল / নিউজপ্রিডার / ভিউ_থ্রেড / ২১২68৮ । তবে মনে রাখবেন যে একটি অ্যালগরিদম অন্যটির থেকে কেন আরও স্থিতিশীল হবে সে সম্পর্কে কোনও ব্যাখ্যা খুব প্রযুক্তিগত হতে চলেছে।
অ্যামিবা বলেছেন

2
x=randn(10000); x=x'*x; tic; eig(x); toc; tic; svd(x); toc;আমার মেশিনে মতলব এআইজি () এর জন্য 12 এস এবং এসভিডি () এর 26 গুলি আউটপুট করে। যদি এটি এত ধীর হয় তবে এটি অবশ্যই কমপক্ষে আরও স্থিতিশীল হতে হবে! :-)
অ্যামিবা বলছেন মনিকাকে

4
এটা একটা ভুল বোঝার ভিত্তিতেও হতে পারে: ডেটা ম্যাট্রিক্স একজন SVD করছেন হয় ব্যবহার বেশি স্থিত eigবা svdসহভেদাংক ম্যাট্রিক্স উপর, কিন্তু যতদূর আমি জানি সেখানে ব্যবহার মধ্যে কোনো বড় পার্থক্য eigবা svdসহভেদাংক ম্যাট্রিক্স উপর --- তারা উভয় পিছনে স্থিতিশীল অ্যালগরিদম। যদি কিছু, আমি হচ্ছে EIG আমার টাকা করা হবে আরো স্থিতিশীল, যেহেতু এটি কম কম্পিউটেশন করে (অভিমানী উভয় রাষ্ট্রীয় অত্যাধুনিক আলগোরিদিম সঙ্গে প্রয়োগ করা হয়)।
ফেডেরিকো পোলোনি

উত্তর:


17

অ্যামিবা মন্তব্যগুলিতে ইতিমধ্যে একটি ভাল উত্তর দিয়েছে, তবে আপনি যদি একটি আনুষ্ঠানিক যুক্তি চান তবে এটি এখানে যায়।

একটি ম্যাট্রিক্স এর একক মান পচন হ'ল , যেখানে এর কলামগুলি এর আইজেনভেেক্টর এবং এর তির্যক এন্ট্রিগুলি এর ইগেনভ্যালুগুলির বর্গমূল , অর্থাৎ ।A = U Σ V T V A T A Σ σ i i = √ √AA=UΣVTVATAΣσii=λi(ATA)

যেমন আপনি জানেন, মূল উপাদানগুলি হ'ল অনুশীলনীয় কোভরিয়েন্স ম্যাট্রিক্স এর ইগেনভেেক্টরগুলির স্পেসে আপনার পরিবর্তনকের অরথোগোনাল অনুমানগুলি । উপাদানগুলির এর ইগেনভ্যালুগুলি দিয়েছিল, ।λআই(1)1n1ATAλi(1n1ATA)

যে কোনও বর্গ ম্যাট্রিক্স , এবং একটি ভেক্টর যেমন । তারপরα আর ভি বি ভি = λ ভিBαRvBv=λv

  1. Bkv=λkv
  2. λ(αB)=αλ(B)

আসুন আমরা । এর SVD এর eigendecomposition গনা হবে ফলনএসএসটিএস এস=1S=1n1ATASSTS=1(n1)2ATAATA

  1. এর eigenvectors , যা সম্পত্তি 1 দ্বারা যারাএকটি টি একটি(ATA)TATA=ATAATAATA
  2. বর্গমূল এর eigenvalues এর , যা সম্পত্তি 2, তারপর তারপর 1, 2 আবার দ্বারা হয় ।1(n1)2ATAATA1(n1)2λi(ATAATA)=1(n1)2λi2(ATA)=1n1λi(ATA)=λi(1n1ATA)

ভাল খবর!

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

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

মধ্যে

নাকাতসুকসা, ইউজি এবং নিকোলাস জে হিগাম। "স্থিতিশীল এবং দক্ষ বর্ণালী বিভাজক এবং প্রতিসম ইয়েজালুয়ু পচন এবং এসভিডি জন্য অ্যালগরিদম জয়।" বৈজ্ঞানিক কম্পিউটিংয়ের উপর সিয়াম জার্নাল 35.3 (2013): A1325-A1349।

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


সোভিয়েড থেকে কোভেরিয়েন্স এবং এসভিডি থেকে প্রাপ্ত কেন্দ্রিক ডেটাগুলিতে আমি যে ইগেনভ্যালুগুলি পেয়েছি সেগুলি একই নয়।
জিজিডি

তবে স্কোরগুলি হ'ল এক্স * ভি (যেখানে ভি [ইউ, এস, ভি] = এসভিডি (এক্স) বা এসভিডি (কোভেক্স)) থেকে প্রাপ্ত, একই।
জিজিডি

1
@ থিজিডি ইগেনভ্যালুস অফ কোভ (এক্স) এবং একক মান (এক্স) এক নয়, দেখুন stats.stackexchange.com/questions/134282
অ্যামিবা বলেছেন


2
@ ব্রোঙ্কোএবিয়ার টেক। প্রতিবেদন এখানে: cpsc.yale.edu/sites/default/files/files/tr932.pdf (এক সম্ভবত সহজে ওটা টাইপো "Symetric" এ শিরোনামে কারণে এটি করতে পারবে না cpsc.yale.edu/research/technical-reports / 1992-প্রযুক্তিগত-প্রতিবেদনগুলি :-))
দিমা প্যাসেচনিক

12

অ্যামিবার কাছে পিসিএ প্রশ্নগুলির দুর্দান্ত উত্তর ছিল, এতে পিসিএর সাথে এসভিডি সম্পর্ক সম্পর্কিত একটি রয়েছে । আপনার সঠিক প্রশ্নের উত্তরে আমি তিনটি পয়েন্ট করব:

  • গাণিতিকভাবে আপনি সরাসরি ডেটা ম্যাট্রিক্সে বা এর কোভারিয়েন্স ম্যাট্রিক্সে পিসিএ গণনা করেন কিনা তাতে কোনও পার্থক্য নেই
  • পার্থক্যটি সংখ্যার নির্ভুলতা এবং জটিলতার কারণে pure ডেভিড ম্যাট্রিক্সে সরাসরি এসভিডি প্রয়োগ করা কোভেরিয়েন্স ম্যাট্রিক্সের চেয়ে সংখ্যাগতভাবে আরও স্থিতিশীল
  • এসভিডি পিসিএ সম্পাদন করতে বা ইগেন মানগুলি অর্জনের জন্য কোভারিয়েন্স ম্যাট্রিক্সে প্রয়োগ করা যেতে পারে, বাস্তবে, ইগেন সমস্যা সমাধানের এটি আমার প্রিয় পদ্ধতি

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

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

import numpy as np
import math
from numpy import linalg as LA

np.random.seed(1)

# create the highly collinear series
T = 1000
X = np.random.rand(T,2)
eps = 1e-11
X[:,1] = X[:,0] + eps*X[:,1]

C = np.cov(np.transpose(X))
print('Cov: ',C)

U, s, V = LA.svd(C)
print('SVDs: ',s)

w, v = LA.eig(C)
print('eigen vals: ',w)

আউটপুট:

Cov:  [[ 0.08311516  0.08311516]
 [ 0.08311516  0.08311516]]
SVDs:  [  1.66230312e-01   5.66687522e-18]
eigen vals:  [ 0.          0.16623031]

হালনাগাদ

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

import numpy as np
import math
from scipy.linalg import toeplitz
from numpy import linalg as LA

np.random.seed(1)

# create the highly collinear series
T = 100
p = 2
eps = 1e-8

m = 1000 # simulations
err = np.ones((m,2)) # accuracy of small eig value
for j in range(m):
    u = np.random.rand(T,p)
    X = np.ones(u.shape)
    X[:,0] = u[:,0]
    for i in range(1,p):
        X[:,i] = eps*u[:,i]+u[:,0]

    C = np.cov(np.transpose(X))

    U, s, V = LA.svd(C)

    w, v = LA.eig(C)

    # true eigen values
    te = eps**2/2 * np.var(u[:,1])*(1-np.corrcoef(u,rowvar=False)[0,1]**2)
    err[j,0] = s[p-1] - te
    err[j,1] = np.amin(w) - te


print('Cov: ',C)
print('SVDs: ',s)
print('eigen vals: ',w)
print('true small eigenvals: ',te)

acc = np.mean(np.abs(err),axis=0)    
print("small eigenval, accuracy SVD, Eig: ",acc[0]/te,acc[1]/te)

আউটপুট:

Cov:  [[ 0.09189421  0.09189421]
 [ 0.09189421  0.09189421]]
SVDs:  [ 0.18378843  0.        ]
eigen vals:  [  1.38777878e-17   1.83788428e-01]
true small eigenvals:  4.02633695086e-18
small eigenval, accuracy SVD, Eig:  2.43114702041 3.31970128319

এখানে কোড কোড কাজ করে। রুটিনগুলি পরীক্ষা করার জন্য এলোমেলো কোভারিয়েন্স ম্যাট্রিক্স উত্পন্ন করার পরিবর্তে, আমি দুটি ভেরিয়েবলের সাথে এলোমেলো ডেটা ম্যাট্রিক্স উত্পন্ন করছি: যেখানে - স্বতন্ত্র ইউনিফর্ম র্যান্ডম ভেরিয়েবলগুলি। সুতরাং, কোভেরিয়েন্স ম্যাট্রিক্স হ'ল যেখানে ig সিগমা_2 ho র - সংযোগের সংখ্যার বৈচিত্রসমূহ তাদের।

x1=ux2=u+εv
u,v
(σ12σ12+ερσ1σ2σ12+ερσ1σ2σ12+2ερσ1σ2+ε2σ22σ2)
σ12,σ22,ρ

এর সর্বনিম্ন ইগেনুয়ালু: সীমিত নির্ভুলতার কারণে কেবলমাত্র সূত্রে করে ছোট এগেনভ্যালু গণনা করা যায় না , তাই আপনাকে টেলর এটি প্রসারিত করতে হবে:

λ=12(σ22ε2σ24ε4+4σ23ρσ1ε3+8σ22ρ2σ12ε2+8σ2ρσ13ε+4σ14+2σ2ρσ1ε+2σ12)
ε
λσ22ε2(1ρ2)/2

আমি ডেটা ম্যাট্রিক্সের উপলব্ধির , সিমুলেটেড ম্যাট্রিক্স এবং ত্রুটিগুলি ।λ = λ - λj=1,,mλ^jej=λλ^j


4
হ্যাঁ, তবে এখানে ওপি এসভিডি বনাম ইআইজি সম্পর্কে জিজ্ঞাসা করছে কোভরিয়েন্স ম্যাট্রিক্সে উভয়ই প্রয়োগ করেছে
অ্যামিবা বলছেন মনিকাকে

1
@ আমেবা, আমি এসভিডি এবং পিসিএ
আকসাকাল

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

@ এনটিএনফএনএস, অ ইতিবাচক নির্দিষ্ট ম্যাট্রিক্স অবশ্যই একটি সমস্যা,
আকসাকাল

1
@ ফেডেরিকো পোলোনি, এফপি গাণিতিক সম্পর্কে এবং সঠিক উত্তরটি না জানার সাথে আমি একমত নই। এই ক্ষেত্রে আমি এই কাজের জন্য যথেষ্ট নির্ভুলতার সাথে উত্তরটি জানি। 2x2 এ আপনার ফর্সা পয়েন্ট রয়েছে। আমি কিছু ভাবব।
আকসাকাল

6

পাইথন ব্যবহারকারীদের জন্য আমি উল্লেখ করতে চাই যে প্রতিসম ম্যাট্রিক্সের জন্য (কোভরিয়েন্স ম্যাট্রিক্সের মতো) numpy.linalg.eighসাধারণ numpy.linalg.eigফাংশনের পরিবর্তে ফাংশনটি ব্যবহার করা ভাল better

eigheigআমার কম্পিউটারের চেয়ে 9-10 গুণ বেশি গতিযুক্ত (ম্যাট্রিক্স আকার নির্বিশেষে) এবং ভাল নির্ভুলতা রয়েছে (@ আকসাকালের নির্ভুলতার পরীক্ষার ভিত্তিতে)।

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

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


+1 টি। eighবনাম সম্পর্কিত কিছু তথ্য eig: mail.scipy.org/pipermail/numpy-discussion/2006- মার্চ/…
অ্যামিবা বলেছেন

2

আপনার প্রশ্নের শেষ অংশটির উত্তর দেওয়ার জন্য, "তারা কোভারিয়েন্স ম্যাট্রিক্সের এসভিডি করে কেন, ডেটা ম্যাট্রিক্স নয়?" আমি বিশ্বাস করি এটি কার্য সম্পাদন এবং স্টোরেজ কারণে রয়েছে। সাধারণত, খুব বড় সংখ্যক হবে এবং বড় হলেও আমরা আশা করব ।n m nmnmn

কোভরিয়েন্স ম্যাট্রিক্স গণনা করা এবং তারপরে এসভিডি সম্পাদন করা একই ফলাফলের জন্য এই শর্তগুলির অধীনে সম্পূর্ণ ডেটা ম্যাট্রিক্সে এসভিডি গণনা করার চেয়ে খুব দ্রুত।

এমনকি মোটামুটি ছোট মানগুলির জন্যও পারফরম্যান্স লাভ হ'ল হাজারের কারণ (মিলিমেকেন্ড বনাম সেকেন্ড)। মতলব ব্যবহার করে তুলনা করতে আমি আমার মেশিনে কয়েকটি পরীক্ষা চালিয়েছি: এখানে চিত্র বর্ণনা লিখুন

এটি কেবল সিপিইউ সময়, তবে স্টোরেজ প্রয়োজনীয়তাগুলি যেমন হয়, তত বেশি না হলেও গুরুত্বপূর্ণ। যদি আপনি মতলবতে এক হাজার ম্যাট্রিক্স দ্বারা এক মিলিয়নে এসভিডি চেষ্টা করে থাকেন তবে এটি ডিফল্টরূপে ত্রুটিযুক্ত হবে, কারণ এটির জন্য একটি কার্যকারী অ্যারের আকার 7.4TB প্রয়োজন।


এই প্রশ্নের cov ম্যাট্রিক্স বনাম SVD এর EIG সম্পর্কে যা উত্তর না সহভেদাংক ম্যাট্রিক্স
অ্যামিবা

1
শেষে তাঁর প্রশ্ন, সাহসীভাবে হাইলাইট করা, বলা হয়েছে, "তারা কোভারিয়েন্স ম্যাট্রিক্সের এসভিডি করে কেন, ডেটা ম্যাট্রিক্স নয়?" যা আমি উত্তর দিয়েছি।
গ্রুফ

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

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