কীভাবে নম্পি এসভিডি করে তা বোঝা


13

আমি ম্যাট্রিক্সের র‌্যাঙ্ক এবং সমীকরণের একটি ম্যাট্রিক্স সিস্টেমের সমাধান উভয়ই গণনা করতে বিভিন্ন পদ্ধতি ব্যবহার করে আসছি। আমি linalg.svd ফাংশনটি জুড়ে এসেছি। গৌসিয়ান নির্মূলের সাথে সিস্টেমটি সমাধান করার নিজের চেষ্টাটির সাথে এটির তুলনা করা, এটি দ্রুত এবং আরও সুনির্দিষ্ট বলে মনে হয়। আমি কীভাবে এটি সম্ভব তা বোঝার চেষ্টা করছি।

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

সুতরাং আমার প্রশ্ন: numpy.svd ফাংশনটি কীভাবে কাজ করে এবং আরও সুনির্দিষ্টভাবে এটি কীভাবে এটি দ্রুত এবং নির্ভুলভাবে পরিচালনা করতে পারে (গাউসিয়ান নির্মূলের তুলনায়)?


2
dgesddআসল মূল্যবান এসভিডিগুলির জন্য লম্পট ল্যাপ্যাক রুটিন ব্যবহার করে । সুতরাং আপনার আসল প্রশ্নটি সম্ভবত "কীভাবে ল্যাপাক ডিজেডড কাজ করে?", এবং এটি স্ট্যাকওভারফ্লোয়ের পক্ষে খুব সুন্দর বিষয়।
ট্যালোনিমি

যদি আপনার সত্যই কৌতূহলী হয় তবে আমি ল্যাপাক উত্সটি পরীক্ষা করার পরামর্শ দেব।

আপনার মন্তব্যের জন্য আপনাকে ধন্যবাদ, এবং আমার ক্ষমাপ্রার্থী আমি অফটোপিক।
রবভারহেইন

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

আমি দুঃখিত, আমি প্রোটোকল সম্পর্কে অবগত ছিলাম না। আমি আশা করি আমি এখনও একটি উত্তর পেতে পারেন।
রবভারহেইন

উত্তর:


15

আপনার প্রশ্নে বেশ কয়েকটি সমস্যা রয়েছে।

কোনও ম্যাট্রিক্সের সংখ্যার র‌্যাঙ্ক গণনা করার জন্য গাউসিয়ান এলিমিনেশন (এলইউ ফ্যাক্টেরাইজেশন) ব্যবহার করবেন না। ভাসমান-পয়েন্ট গাণিতিক ক্ষেত্রে এই উদ্দেশ্যে LU ফ্যাক্টেরাইজেশন অবিশ্বাস্য। পরিবর্তে, একটি র‌্যাঙ্ক-প্রকাশকারী কিউআর পচন ব্যবহার করুন (যেমন LAPACK এ xGEQPXবা xGEPQYযেখানে এক্স, সি, ডি, এস, বা জেড, যদিও সেই রুটিনগুলি ট্র্যাক করা কঠিন; সম্পর্কিত প্রশ্নে জেডব্রাউনের উত্তর দেখুন ), বা এসভিডি ব্যবহার করুন (একক মানের পচন যেমন, xGESDDবা xGESVDযেখানে x আবার সি, ডি, এস, বা জেড)) সংখ্যাগত র‌্যাঙ্ক নির্ধারণের জন্য এসভিডি একটি আরও নির্ভুল, নির্ভরযোগ্য অ্যালগরিদম তবে এর জন্য আরও ভাসমান-পয়েন্ট অপারেশন প্রয়োজন।

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

জান্নে সঠিক যে numpy.linalg.svd xGESDDLAPACK এর চারপাশে একটি মোড়ক । একবচনীয় মান পচন দুটি পর্যায়ে এগিয়ে যায়। প্রথমত, পচে যাওয়া ম্যাট্রিক্সটি দ্বিপক্ষীয় আকারে হ্রাস করা হয়েছে। ল্যাপাক-এ বিডিজোনাল ফর্মটি হ্রাস করার জন্য ব্যবহৃত অ্যালগরিদম সম্ভবত লসন-হ্যানসন-চ্যান অ্যালগোরিদম এবং এটি এক পর্যায়ে কিউআর ফ্যাক্টেরাইজেশন ব্যবহার করে। ট্র্যাফেন এবং বাউ দ্বারা সংখ্যার লিনিয়ার বীজগণিতের 31 টি বক্তৃতা এই প্রক্রিয়াটির একটি সংক্ষিপ্তসার দেয়। তারপরে, xGESDDদ্বিখণ্ডিত ম্যাট্রিক্স থেকে একক মানগুলি এবং বাম এবং ডান একক ভেক্টর গণনা করতে একটি বিভাজন এবং বিজয়ী অ্যালগরিদম ব্যবহার করে। এই পদক্ষেপে পটভূমি পেতে, আপনাকে গোলুব এবং ভ্যান লোন দ্বারা ম্যাট্রিক্স গণনা বা জিম ডেম্মেল দ্বারা প্রয়োগিত সংখ্যাসূচক লিনিয়ার বীজগণিতের পরামর্শ নেওয়া দরকার ।

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


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

এর পরিবর্তে আপনি কী পরামর্শ করবেন?
জেফ অক্সবেরি

সবার আগে, বিস্তৃত উত্তরের জন্য আপনাকে ধন্যবাদ। আমি খুঁজে পেয়েছি যে হার্ড ম্যাট্রিক্স র‌্যাঙ্ক নির্ধারণের জন্য আমি LU পচন ব্যবহার করতে পারি না। আপনার উত্তরটি বোঝা যাচ্ছে যে কিউআর ফ্যাক্টরীকরণটি আসলেই আমার সমস্যা সমাধানের একটি দ্রুত পদ্ধতি হতে পারে, তাই না? এসভিডি ব্যবহারের আলাদা সুবিধা রয়েছে কি? আমি এই বিষয়টি সম্পর্কে ভাল করেই জানলাম যে একক মানগুলি ইজেনভ্যালু নয়। আমি উল্লেখ করছিলাম যে একক মানগুলি বাম দিক থেকে ট্রান্সপোজের সাথে গুণিত ম্যাট্রিক্সের ইগেনভ্যালু হিসাবে গণনা করা যেতে পারে। আমি দুঃখিত যে এটি পরিষ্কার ছিল না।
রবভারহেইন

আমি যুক্ত করতে পারি যে আমি যে ম্যাট্রিক্সটি সমাধান করছি তা আসলে একবাক্য। আসলে ম্যাট্রিক্স র‌্যাঙ্ক ম্যাট্রিক্সের আকারের প্রায় অর্ধেক। সম্ভবত এটি কিছু পদ্ধতি আরও পছন্দসই করে তোলে?
রবভারহেইন

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

8

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

  1. UAVAAB:=UAHAVAUAVABO(n3)
  2. {UB,VB,Σ}B=UBΣVBHO(n2)O(n3)
  3. UABVAH=AA=(UAUB)Σ(VAVB)HUAVAUBVBO(n3)

7

numpy.linalg.svd LAPACK থেকে {Z, D} GESDD এর চারপাশে একটি মোড়ক। ল্যাপাক, ঘুরে, সংখ্যার লিনিয়ার বীজগণিতের বিশ্বের শীর্ষস্থানীয় বিশেষজ্ঞদের দ্বারা খুব সাবধানে রচনা করেছেন। প্রকৃতপক্ষে, এটি খুব অবাক লাগবে যদি ক্ষেত্রের সাথে ঘনিষ্ঠভাবে পরিচিত না কেউ LAPACK (গতি বা নির্ভুলতায়) মারতে সফল হয়।

কেন গাউসীয় নির্মূলের চেয়ে কিউআর ভাল, এটি সম্ভবত /scicomp// এর জন্য আরও উপযুক্ত for


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