نقل قول:
نوشته اصلي بوسيله tahereh.moeini
برای پيش پردازش توي روش مد نظرم مجبور شدم بخشي از داده ها رو حذف كنم چون ماتريس مجموعه داده به ابعاد 49000*139000بود كه قابل پردازش نبود با وجود اینکه ماتریس اسپارس بود و از طرفي الگوريتمی كه من بكار بردم لازم داشت كه حتما در هر سطر حداقل دو مقدار وجود داشته باشه .به همين خاطر سطرهایی رو كه كمتر از 3 مقداردهي داشتند رو از مجموعه داده حذف كردم ولي باز هم ماتريس بزرگ بود و با خطاي كمبود حافظه مواجه مي شد به همين خاطر ستون هایی هم كه كمتر از 3 مقداردهي داشتند رو هم حذف كردم تا ديگه با خطاي كمبود حافظه مواجه نشم اميدوارم كار اشتباهي انجام نداده باشم .البته بررسي كردم ديدم كه بعضي ها هم روي مجموعه داده هاي ديگه اين كار رو كردند .توجیه من این بود که سطرهایی که مقداردهی کمی دارندتاثير چنداني در نتیجه نهایی ندارند و بنابراین می شه اونها رو حذف کرد می خواستم بدونم که این پیش پردازشی که انجام دادم درست هست؟ ممنون می شم دوستان راهنمایی بفرمایند
|
سلام دوست عزیز
اطلاعات کاملی در مورد کاری که داری انجام میدی ندادی.
حذف نمونه های داده از مجموعه داده همیشه موثر نیست. باید نتایجی که بدست آوردی رو ارزیابی کنی. چون با حذف نمونه های داده یکسری اطلاعات از بین میره که ممکنه در نتایج الگوریتم شما تاثیر داشته باشه. همچنین ممکنه توی نمونه های باقی مانده نویز وجود داشته باشه که مساله overfitting به وجود خواهد آمد.
اگر از برنامه متلب استفاده میکنید ابزاری برای مدیریت حافظه در اختیار شما قرار میده و اگر خودتون برنامه رو نوشتید باید مدیریت حافظه توش وجود داشته باشه.
من پیشنهاد میکنم از روش های کاهش ابعاد داده استفاده کنید:
با توجه به sparse بودن ماتریس میشه از الگوریتم ماتریس خلوت توی ساختار داده استفاده کرد. که برای استفاده کاملا وابسته به الگوریتم مورد نظر هست.
همچنین میشه از الگوریتم های کاهش ابعاد داده مثل PCA، SVD ... استفاده کرد.
روش های دیگه ای هم برای کاهش ابعاد وجود داره مثل feature subset selection و ...
همچنین میشه از روش های فشرده سازی برای ایجاد ویژگی استفاده کرد. با توجه به redundant بودن داده های شما فشرده سازی میتونه خیلی خوب حجم داده های شما رو کاهش بده. اصطلاحا بهش Work in compress domain گفته میشه که امروزه بسیار مورد توجه هست.