একটি বিশাল স্পার্স ম্যাট্রিক্সের এসভিডি কীভাবে গণনা করবেন?


26

খুব বড় ধনাত্মক ম্যাট্রিক্স (65M x 3.4M) এর একক মান ভলন (এসভিডি) গণনা করার সর্বোত্তম উপায় কী যেখানে ডেটা অত্যন্ত বিরল?

ম্যাট্রিক্সের 0.1% এর চেয়ে কম শূন্য নয়। আমার এমন একটি উপায় দরকার যা:

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

এটি হাস্কেল, পাইথন, সি # ইত্যাদি লাইব্রেরি রয়েছে যা এটি প্রয়োগ করে। আমি ম্যাথলব বা আর ব্যবহার করছি না তবে প্রয়োজনে আর এর সাথে যেতে পারি


3
তোমার কত স্মৃতি আছে? 65M * 3.4M এর 0.1% এখনও শূন্য মানের 221e9 is আপনি যদি প্রতিটি মূল্য 4 বাইট ব্যবহার করেন তবে এটি 55 গিগাবাইটের বেশি যা কোনও ওভারহেড ধরে নিচ্ছে না, তাই স্পারসিটি এখনও সমস্যার সমাধান করে না ... আপনার কি পুরো সেটটি একবারে মেমোরিতে লোড করা দরকার?
বিটওয়াইজ

আমার আরও সুনির্দিষ্ট হওয়া উচিত ছিল। 32-বিট পূর্ণসংখ্যার সাথে 250-500mb এর বেশি হবে না। সম্ভবত অনেক কম, তবে মাত্রিক মাত্রাটি হ'ল সমস্যাটি যা আমি এটি বুঝতে পেরেছি। আমার একটি 16 গিগাবাইট মেশিন রয়েছে।
সোনিয়া


এই ওয়েবপেজটি পাইথন লাইব্রেরিতে লিঙ্ক করেছে যা "একটি দ্রুত, বর্ধনশীল, কম স্মৃতি, বৃহত-ম্যাট্রিক্স এসভিডি অ্যালগরিদম" প্রয়োগ করে: en.wikedia.org/wiki/Latent_semantic_analysis
বিটওয়াইজ

উত্তর:


21

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

এটি একটি দুর্দান্ত ম্যাট্রিক্স, তবে অতীতে এই পদ্ধতিটি নিয়ে আমার খুব ভাল ফলাফল হয়েছিল। irlbaদ্য আর্ট অফ দ্য আর্ট। এটি সুস্পষ্টভাবে পুনরায় আরম্ভ করা ল্যাঙ্কসোস দ্বি-তির্যক আলগরিদম ব্যবহার করে

এটি নেটফ্লিক্স প্রাইজ ডেটাসেটের মাধ্যমে (480,189 সারি দ্বারা 17,770 কলাম, 100,480,507 নন-শূন্য এন্ট্রি) মিলি সেকেন্ডে চিবিয়ে নিতে পারে। আপনার ডেটাসেট নেটফ্লিক্স ডেটাসেটের তুলনায় 200,000 ডলার গুন বড়, সুতরাং এটির তুলনায় এটি উল্লেখযোগ্যভাবে বেশি সময় নেয়। এটি আশা করা যুক্তিযুক্ত হতে পারে যে এটি কয়েক দিনের মধ্যে গণনা করতে পারে।


ডেটা ম্যাট্রিক্স মেমরির সাথে খাপ খায়, অরলবা কি ক্ষয়কে একটি স্মৃতিশক্তিতে কার্যকর পদ্ধতিতে পরিচালনা করবে?
সোনিয়া

@ সোনিয়া: র্লবা খুব স্মৃতিশক্তির দক্ষ: এটি একটি আনুমানিক সমাধানের গণনা করে, আপনি একক ভেক্টরের সংখ্যা সীমাবদ্ধ করতে পারেন এবং এটি স্পার্স ম্যাট্রিকগুলিতে কাজ করার জন্য তৈরি করা হয়েছিল। আমি যতদূর জানি, এটি আধ্যাত্মিক এসভিডি কম্পিউটিংয়ের জন্য তত দ্রুত।
Zach

@ সোনিয়া: শুভকামনা!
Zach

এটিকে চেষ্টা করে দেখুন - মেমরির বাইরে ... আমি এটি চালানোর আগে একটি ত্রিভুজ ব্লক ফর্মটি গণনা করব।
সোনিয়া 13

@ সোনিয়া আপনি কি এটিকে একটি বিরল হিসাবে সংরক্ষণ করেছেন Matrix? আপনার গণনা করা একক মানগুলির সীমাবদ্ধ করার চেষ্টা করুন ... সম্ভবত শীর্ষ 10 টি দেখুন?
Zach

-2
  1. অ্যাপাচি স্পার্ক: https://spark.apache.org/docs/1.1.0/mllib-data-types.html
  2. মাহউত সংসার (স্পার্ক ও অন্যদের উপরের মূল রানের বাইরে): https://mahout.apache.org/users/en वातावरण/out-of-core-references.html
  3. SciDB (সত্যই বড় ডেটার জন্য): http://www.paradigm4.com/scidb-how-linear-algebra-operation-scale/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.