آیا یادگیری عمیق (Deep Learning) برای داده‌های جدولی (Tabular Data) همیشه بهترین انتخاب است؟


وقتی از Deep Learning صحبت می‌کنیم، معمولاً ذهنمان به سمت تصویر، ویدئو، صدا یا مدل‌های زبانی بزرگ می‌رود. اما بخش قابل‌توجهی از داده‌های واقعی دنیا شکل بسیار ساده‌تری دارند: داده‌های جدولی یا همان  Tabular Data. داده‌های جدولی بخش بزرگی از داده‌های واقعی دنیا را تشکیل می‌دهند. اما آیا شبکه‌های عصبی عمیق (deep neural networks) که در تصویر و زبان عالی عمل می‌کنند، برای داده جدولی (tabular data) هم بهترین گزینه‌اند؟ یک مقاله مروری این موضوع رو بررسی کرده است که در این پست به این موضوع میپردازیم.

ویدیوی اول: مرور مختصر مقاله مروری شبکه های عصبی عمیق در داده جدولی



ویدیوی دوم: بررسی دقیق مقاله مروری شبکه های عصبی عمیق در داده جدولی

ویدیوها در YouTube بارگزاری شده اند.



برای درک بهتر موضوع این پست، ابتدا بیایید با داده جدولی یا همان tabular data بیشتر آشنا شویم.

داده‌ی جدولی (tabular data) چیست؟داده جدولی

داده‌های جدولی همان اطلاعاتی هستند که معمولاً به شکل جدول (ردیف و ستون) ذخیره می‌شوند. هر ردیف یک نمونه و هر ستون یک ویژگی است. از این نوع داده در بسیاری از حوزه‌های مهم وجود دارد:

  • داده‌های پزشکی و پرونده بیماران
  • اطلاعات بانکی و اعتباری
  • مشخصات مشتریان و رفتار خرید
  • داده‌های بیمه و ریسک
  • قیمت مسکن و داده‌های مالی
  • نتایج آزمایش‌های علمی و صنعتی

ویژگی مهم این داده‌ها ناهمگنی (Heterogeneous) بودن آن‌هاست. یعنی در یک جدول همزمان ویژگی‌های عددی، ویژگی‌های دسته‌ای (Categorical)، missing values، نویز و گاهی ویژگی‌های بسیار پراکنده وجود دارد. برخلاف تصویر یا متن، معمولاً رابطه مکانی یا ساختاری واضحی بین ستون‌ها (همان ویژگی ها) وجود ندارد.

همین موضوع باعث شده که استفاده از شبکه‌های عصبی عمیق برای این نوع داده، چالش‌برانگیزتر از حوزه‌هایی مثل بینایی ماشین یا پردازش زبان باشد.

انواع داده‌های جدولی (Tabular Data)

انواع داده جدولی

وقتی می‌گوییم داده‌های جدولی، معمولاً با دو نوع اصلی ویژگی روبه‌رو هستیم: ویژگی‌های عددی (Numerical)  و  ویژگی‌های دسته‌ای (Categorical)

ویژگی‌های عددی(Numerical)

این ویژگی‌ها مقادیر واقعی دارند و می‌توانند هر عددی در یک بازه بگیرند. مثال‌ها:

  • سن (۲۵.۵ سال)
  • درآمد ماهانه
  • فشار خون
  • دمای بدن
  • ویژگی های استخراج شده از سیگنالهای حیاتی (مثل توان باند آلفا یا بتا در سیگنال EEG، میانگین یا انحراف معیار RRI در سیگنال قلبی)

این ویژگی‌ها ذاتاً عدد هستند و مدل می‌تواند مستقیماً با آن‌ها کار کند (البته معمولاً نیاز به نرمال‌سازی یا استانداردسازی دارند).

ویژگی‌های دسته‌ای (Categorical)

این ویژگی‌ها مقدار عددی معنا‌دار ندارند و فقط برچسب یا دسته هستند. مثال‌ها:

  • جنسیت (مرد / زن)
  • نوع شغل (مهندس، پزشک، معلم…)
  • سطح تحصیلات (دیپلم، کارشناسی، کارشناسی ارشد…)
  • رنگ چشم (سبز، قهوه ای، مشکی، آبی …)
  • کد محصول یا نوع بیماری (اگر فقط برچسب باشد)

مشکل اینجاست که شبکه های عصبی نمی‌توانند مستقیماً با کلمات یا برچسب‌ها کار کنند. باید آن‌ها را به مقدار عددی تبدیل کنیم. که به این کار Encoding  می‌گویند.

و نکته مهم اینکه، اگر به روش مناسب encoding انجام نشود، بهترین و قوی ترین مدلهای یادگیری عمیق کاری نمیتوانند بکنند و نمیتوانند اطلاعات نهفته در ویژگی ها را مدلسازی کرده و از روی آنها تصمیم گیری کنند.

 

مقاله مروری:  Deep Neural Networks and Tabular Data: A Survey

در سالهای اخیر شاهد عملکرد فوق العاده الگوریتمهای یادگیری عمیق روی تصویر، صوت، سیگنال و متن بوده ایم.

حالا یک سؤال مهم مطرح می‌شود:

آیا همان شبکه‌های عصبی عمیقی که در تصویر و زبان فوق‌العاده عمل می‌کنند، برای داده‌های جدولی هم بهترین گزینه‌اند؟

مقاله‌ی Deep Neural Networks and Tabular Data: A Survey  دقیقاً به دنبال پاسخ دادن به همین سؤال است.همانطور که در شکل هم مشخص هست، با اینکه مقاله در سال 2021 چاپ شده است، اما سایتیشن بسیار بالایی گرفته و این میزان اهمیت این مطالعه را نشان میدهد.

Deep Neural Networks and Tabular Data: A Survey

این مقاله چه چیزی را بررسی می‌کند؟

نویسندگان ابتدا حجم بزرگی از تحقیقات انجام‌شده روی Deep Learning برای داده‌های جدولی را بررسی کرده‌اند و روش‌های موجود را در سه گروه اصلی قرار داده‌اند:

  • Data Transformation : تبدیل داده‌های جدولی به شکلی که برای شبکه عصبی مناسب‌تر باشد
  • Specialized Architectures: معماری‌هایی که مشخصاً برای Tabular Data طراحی شده‌اند؛ از جمله مدل‌های Hybrid و Transformer-based
  • Regularization: روش‌هایی برای کنترل انعطاف پذیری زیاد شبکه و جلوگیری از Overfitting

آزمایش‌ها و مقایسه تجربی

این مقاله صرفا یک مقاله مروری نیست. بخش مهم‌تر مقاله، یک آزمایش عملی است. نویسندگان 11 رویکرد Deep Learning  را با روش‌های کلاسیک مبتنی بر درخت (مثل XGBoost، LightGBM  و  CatBoost) روی پنج دیتاست واقعی با اندازه‌ها و اهداف مختلف مقایسه کرده‌اند.

نکته ای رو بگم خدمتتون در مورد اینکه چرا با مدلهای درختی، و اونم اینکه در بین روشهای کلاسیک، روشهای مبتنی بر درختی، روی داده های tabular معمولا عملکرد خیلی خوبی رو بدست میارند. اینو هم خودم و هم چندتا از دوستانم که روی داده های واقعی کار میکردند مشاهده کرده ایم. البته مقالات زیادی هم این موضوع رو تایید میکنند. برای همینه که نویسندگان این مقاله هم روشهای یادگیری عمیق رو با اینها مقایسه کرده اند.

در این مطالعه، از چندین پایگاه داده معتبر برای انجام آزمایشات خود استفاده کرده اند که برای مسائل طبقه بندی یا رگرسیون جمع آوری شده اند. این دیتاست‌ها شامل مسائلی مثل پیش‌بینی درآمد، اعتبارسنجی مالی، تشخیص ذرات، پیش‌بینی قیمت خانه و موارد مشابه بودند. یکی از مهم‌ترین آن‌ها دیتاست بزرگ HIGGS با حدود ۱۱ میلیون نمونه است.

انواع داده جدولی

برای منصفانه‌تر بودن مقایسه، از K-fold cross-validation (K=5) و جست‌وجوی سیستماتیک ابرپارامترها استفاده شده و کد آزمایش‌ها نیز منتشر شده است.

کدهای مقاله در GitHub:

https://github.com/kathrinse/TabSurvey

نتایج چه بود؟

نتیجه اصلی مقاله این است که در بیشتر دیتاست‌های کوچک و متوسط، مدل‌های مبتنی بر Gradient-Boosted Trees  هنوز از مدل‌های Deep Learning بهتر عمل می‌کنند. به‌خصوص XGBoost و CatBoost در بسیاری از موارد عملکرد بالاتری داشتند.

 

با این حال، یک استثنای مهم وجود داشت: در دیتاست بسیار بزرگ  HIGGS، مدل یادگیری عمیق SAINT توانست از روش‌های کلاسیک پیشی بگیرد. این موضوع نشان می‌دهد که با افزایش شدید حجم داده و وجود ویژگی‌های عمدتاً عددی و پیوسته، Deep Learning می‌تواند مزیت خود را نشان دهد.

نکته جالب دیگر مربوط به سرعت Inference است. روی دیتاست بزرگ HIGGS، زمان استنتاج مدل‌های درختی به‌ مراتب بیشتر از برخی مدل‌های عصبی گزارش شد. بنابراین «بهتر بودن» فقط به دقت محدود نمی‌شود و در مقیاس بسیار بزرگ، هزینه محاسباتی هم اهمیت پیدا می‌کند.

چرا Tabular Data برای Deep Learning سخت‌تر است؟

مقاله تأکید می‌کند که مشکل لزوماً از ضعیف بودن شبکه‌های عصبی نیست. دلایل اصلی عبارتند از:

  • نبود ساختار مکانی یا معنایی مشخص بین ویژگی‌ها (برخلاف پیکسل‌ها در تصویر)
  • وجود همزمان ویژگی‌های عددی، دسته‌ای، missing value و نویزی
  • حجم نسبتاً کوچک بسیاری از دیتاست‌های واقعی جدولی
  • حساسیت بالای مدل به پیش‌پردازش و نحوه کدگذاری ویژگی‌های categorical
  • تغییر ناچیز یک ویژگی categorical یا باینری می‌تواند به تنهایی خروجی را کاملاً عوض کند. اما در داده‌های تصویری، تغییر کلاس معمولاً نیاز به تغییر هماهنگ چندین پیکسل دارد.

و اما از همه اینها مهمتر نبود inductive bias یا همان سوگیری مفید، در داده های جدولی است. در واقع، در تصویر یا زبان، مدل‌ها از قبل یک inductive bias مفید دارند. اما در داده‌های جدولی، شبکه باید بسیاری از روابط را از صفر یاد بگیرد.

مفهوم Inductive Bias (سوگیری مفید)

یعنی فرض‌ها و محدودیت‌هایی که ما از قبل داخل ساختار مدل قرار می‌دهیم تا یادگیری را راحت‌تر و هدفمندتر کند. به زبان ساده‌تر بخوام بگم یعنی مدل از قبل «می‌داند» که باید دنبال چه نوع الگوهایی بگردد و چه نوع رابطه‌هایی را مهم بداند.

برای مثال در پردازش تصویر توسط شبکه های کانولوشنالی (CNNs)، شبکه عصبی CNN فرض می‌کند که پیکسل‌های نزدیک به هم با یکدیگر مرتبط هستند (محلی بودن). همچنین فرض می‌کند که یک الگو (مثلاً لبه یا بافت) اگر در یک قسمت تصویر مهم باشد، در قسمت‌های دیگر هم می‌تواند مهم باشد (Translation Equivariance). این فرض‌ها از قبل در لایه‌های Convolution و Pooling گنجانده شده‌اند.

جمله بسیار مهم: به همین دلیل CNN نیاز ندارد از صفر یاد بگیرد که «پیکسل‌های مجاور مهم هستند».

یا در پردازش متن، شبکه های بازگشتی (RNNs) یا ترنسفورمرها (Transformers، مدل‌ها فرض می‌کنند که ترتیب کلمات مهم است و کلمات نزدیک به هم یا با فاصله مشخص، رابطه معنایی دارند. مکانیزم توجه (Attention) هم به مدل کمک می‌کند روی بخش‌های مرتبط تمرکز کند.

اما در داده‌های جدولی مشکلات زیر وجود دارد: 

  • هیچ ساختار طبیعی و از پیش‌فرض قوی‌ای وجود ندارد.
  • اینکه ستون «سن» کنار ستون «درآمد» قرار گرفته، هیچ معنای خاصی ندارد.
  • هیچ تضمینی نیست که ویژگی‌های مجاور با هم مرتبط باشند یا ترتیب ستون‌ها مهم باشد.

بنابراین شبکه عصبی معمولی (مثل MLP) تقریباً هیچ inductive bias مفیدی ندارد و باید تقریباً همه روابط بین ویژگی‌ها را از صفر و فقط با دیدن داده یاد بگیرد که کار بسیار سخت و گاها شدنی نیست.

وقتی inductive bias مناسب وجود داشته باشد:

  • مدل سریع‌تر یاد می‌گیرد
  • به داده کمتری نیاز دارد
  • کمتر Overfit می‌کند
  • تعمیم بهتری دارد

وقتی inductive bias مناسب وجود نداشته باشد (مثل بسیاری از مسائل جدولی):

  • مدل باید همه چیز را خودش کشف کند
  • به داده خیلی بیشتری نیاز پیدا می‌کند
  • راحت‌تر تحت تأثیر نویز و ویژگی‌های بی‌ربط قرار می‌گیرد

به همین دلیل گفته می‌شود که برای تصویر و زبان، مدل‌ها از قبل یک «سوگیری مفید» دارند، اما برای داده‌های جدولی هنوز inductive bias قوی و مناسبی پیدا نشده که به اندازه Convolution برای تصویر یا Attention برای زبان مؤثر باشد.


در بالا گفتیم که عملکرد شبکه های عصبی بسیار به نحوه کدگذاری ویژگی های دسته ای وابسته هستند. اینجا میخواهیم بدانیم چرا این وابستگی اهمیت دارد؟!

چرا نحوه کدگذاری (Encoding) ویژگی‌های Categorical مهم است؟

چون روش تبدیل، مستقیماً روی یادگیری مدل تأثیر می‌گذارد:

  • One-Hot Encoding:  برای هر دسته یک ستون جدا می‌سازد (مثلاً ۳ شغل → ۳ ستون ۰ و ۱).
    •  مشکل: اگر تعداد دسته‌ها زیاد باشد  (High Cardinality)، ماتریس بسیار بزرگ و پراکنده می‌شود و مدل به سختی یاد می‌گیرد.
  • Label / Ordinal Encoding:  به هر دسته یک عدد می‌دهد (مرد=۰، زن=۱).
    • مشکل: مدل ممکن است فکر کند بین اعداد ترتیب وجود دارد (در حالی که ندارد).
  • Target Encoding یا  Embedding: روش‌های پیشرفته‌تر که اطلاعات بیشتری حفظ می‌کنند و معمولاً برای شبکه‌های عصبی بهتر کار می‌کنند.

اگر Encoding ضعیف باشد، حتی بهترین معماری شبکه هم نمی‌تواند اطلاعات موجود در ویژگی‌های categorical را درست استخراج کند. به همین دلیل مقاله تأکید کرده که پیش‌پردازش و نحوه نمایش این ویژگی‌ها نقش بسیار مهمی در عملکرد نهایی دارد.

آیا شبکه های عصبی روی ویژگی های عددی و پیوسته هم مشکل دارند؟

اینجا یه سوال دیگه مطرح میشود و اونم اینکه ویژگی‌هایی که خودمان از سیگنال یا تصویر استخراج می‌کنیم چه وضعیتی دارند؟ برای مثال وقتی از سیگنال EEG توان باند آلفا/بتا استخراج می‌کنید، یا از سیگنال قلبی (RRI) میانگین، واریانس، RMSSD  و… می‌گیرید، این ویژگی‌ها تقریباً همیشه عددی و پیوسته هستند. پس از نظر نوع داده، وارد دسته Numerical/Continuous  می‌شوند. آیا یادگیری عمیق روی این ویژگی‌های استخراج شده هم مشکل دارد؟

جواب کوتاه: کمتر از داده‌های جدولی خام مشکل دارد، اما هنوز چالش‌هایی وجود دارد.

دلایل:

  • این ویژگی‌ها معمولاً تعدادشان محدود است (مثلاً ۱۰ تا ۵۰ ویژگی)، در حالی که شبکه‌های عمیق وقتی تعداد ویژگی کم باشد، راحت‌تر Overfit می‌کنند.
  • برخلاف تصویر خام که ساختار مکانی قوی دارد، این ویژگی‌های دست‌ساز معمولاً رابطه مکانی یا ترتیبی مشخصی با هم ندارند.
  • مدل‌های درختی (مثل XGBoost) روی همین ویژگی‌های استخراج‌شده اغلب بسیار قوی عمل می‌کنند، چون می‌توانند تعاملات غیرخطی بین ویژگی‌ها را خوب پیدا کنند و نسبت به مقیاس حساس نیستند.

با این حال، اگر تعداد نمونه‌ها خیلی زیاد باشد و ویژگی‌های استخراج‌شده غنی باشند، شبکه‌های عصبی هم می‌توانند خوب کار کنند. ولی در عمل، در بسیاری از مسائل سیگنال‌های حیاتی (EEG، ECG و…)  هنوز ترکیب «ویژگی‌های دست‌ساز + مدل درختی یا مدل‌های کلاسیک» عملکرد بسیار رقابتی و گاهی بهتری نسبت به Deep Learning خالص دارد.

پیشنهاد نهایی برای انتخاب مدل

این مقاله پیام روشنی دارد: Deep Learning قرار نیست به‌صورت خودکار جایگزین بهترین روش موجود برای هر نوع داده‌ای شود.

اگر با داده‌های جدولی کوچک تا متوسط کار می‌کنید و هدف اصلی‌تان دقت و پایداری است، مدل‌هایی مثل XGBoost یا CatBoost هنوز انتخاب بسیار قوی و قابل‌اعتمادی هستند.

اما اگر با داده‌های بسیار بزرگ، ویژگی‌های عمدتاً پیوسته و نیاز به Representation Learning مواجه هستید، بررسی مدل‌های تخصصی Deep Learning مثل SAINT، TabNet یا TabTransformer می‌تواند ارزشمند باشد.

سؤال درست‌تر شاید این باشد که: چه چیزی باید در ساختار و نحوه یادگیری شبکه‌های عصبی تغییر کند تا واقعاً با ماهیت داده‌های جدولی سازگار شوند؟

این مقاله نقطه شروع بسیار خوبی برای فهم وضعیت فعلی این حوزه است.

📄 Paper: Deep Neural Networks and Tabular Data: A Survey — Vadim Borisov et al. منبع: IEEE Transactions on Neural Networks and Learning Systems, 2024


بیایید در ادامه دقیق تر بررسی کنیم که چرا مدلهای یادگیری عمیق روی ویژگی ها عملکرد بهتری ندارند؟ یا اینطور بگم، چرا روشهای کلاسیک بهتر عمل میکنند؟

نحوه پردازش ویژگی ها در رویکردهای کلاسیک و یادگیری عمیق

در مدل‌های درختی (مثل Decision Tree، Random Forest، XGBoost، CatBoost)، الگوریتم در هر گره، تمام ویژگی‌ها را بررسی می‌کند و بهترین ویژگی را برای شاخه زدن (Split) انتخاب می‌کند. در نتیجه، ویژگی‌های مهم خیلی زود و قوی وارد فرآیند تصمیم‌گیری می‌شوند و ویژگی‌های ضعیف‌تر یا بی‌ربط کمتر مورد استفاده قرار می‌گیرند (یا اصلاً استفاده نمی‌شوند). این خاصیت باعث می‌شود مدل‌های درختی در داده‌های جدولی که تعدادی ویژگی خیلی مهم و تعدادی ویژگی نویزی یا ضعیف دارند، عملکرد خوبی داشته باشند.

در شبکه‌های عصبی (به‌خصوص MLP و تا حدی CNNتقریباً تمام ویژگی‌ها از همان لایه‌های اولیه با هم ترکیب (ادغام) می‌شوند. وزن‌ها به‌صورت پیوسته یاد گرفته می‌شوند و اطلاعات ویژگی‌های خوب و بد با هم مخلوط میشوند. هیچ مکانیزم صریحی مثل «انتخاب بهترین ویژگی و نادیده گرفتن بقیه» وجود ندارد. در نتیجه، ویژگی‌های مهم ممکن است تحت تأثیر ویژگی‌های ضعیف یا نویزی رقیق شوند.

این مقاله تاکید میکنه که:

  • در داده‌های تصویری، تغییر کلاس معمولاً نیاز به تغییر هماهنگ چندین پیکسل دارد.
  • اما در داده‌های جدولی، تغییر ناچیزی یک ویژگی categorical یا باینری می‌تواند به تنهایی پیش‌بینی را کاملاً عوض کند.
  • مدل‌های درختی با انتخاب یک ویژگی و آستانه مناسب، خیلی خوب می‌توانند این اهمیت متفاوت ویژگی‌ها را مدیریت کنند و بقیه را نادیده بگیرند.
  • شبکه‌های عصبی در این زمینه ضعیف‌تر عمل می‌کنند، چون تمایل به ترکیب همه ورودی‌ها دارند.

نویسندگان این موضوع را یکی از دلایل اصلی می‌دانند که چرا مدل‌های مبتنی بر درخت هنوز در بسیاری از مسائل جدولی از Deep Learning بهتر عمل می‌کنند.

امیدوارم این مقاله برای شما مفید بوده باشد.

در ویدیو یک پیشنهاد کلی هم برای ترکیب دو رویکرد کلاسیک و دیپ لرنینگ گفتم. البته این رویکرد برای داده های جدولی در مسائل سری زمانی میتونه موثر باشد.

 


دیدگاه ها

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

code