داده های دسته بندی: واژگان و رمزگذاری یک طرفه

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

نام ویژگی تعداد دسته‌ها دسته بندی نمونه
snowed_Today ۲ درست، نادرست
سطح مهارت ۳ مبتدی، متخصص، باتجربه
فصل ۴ زمستان، بهار، تابستان، پاییز
روز_هفته ۷ دوشنبه، سه‌شنبه، چهارشنبه
سیاره ۸ عطارد، زهره، زمین

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

برای مثال، فرض کنید در حال ایجاد مدلی برای پیش‌بینی قیمت یک خودرو بر اساس یک ویژگی دسته‌بندی‌شده به نام car_color هستید. شاید خودروهای قرمز ارزش بیشتری نسبت به خودروهای سبز داشته باشند. از آنجایی که تولیدکنندگان تعداد محدودی رنگ بیرونی ارائه می‌دهند، car_color یک ویژگی دسته‌بندی‌شده با ابعاد کم است. تصویر زیر یک واژگان (مقادیر ممکن) برای car_color را پیشنهاد می‌دهد:

شکل ۱. هر رنگ در پالت به عنوان یک ویژگی جداگانه نمایش داده می‌شود. یعنی هر رنگ یک ویژگی جداگانه در بردار ویژگی است. برای مثال، «قرمز» یک ویژگی است، «نارنجی» یک ویژگی جداگانه است و غیره.
شکل ۱. یک ویژگی منحصر به فرد برای هر دسته.

اعداد شاخص

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

شکل ۲. هر رنگ با یک مقدار صحیح منحصر به فرد مرتبط است. برای مثال، «قرمز» با عدد صحیح ۰، «نارنجی» با عدد صحیح ۱ و غیره مرتبط است.
شکل ۲. ویژگی‌های اندیس‌گذاری شده.

پس از تبدیل رشته‌ها به اعداد شاخص منحصر به فرد، باید داده‌ها را بیشتر پردازش کنید تا به گونه‌ای نمایش داده شوند که به مدل کمک کند روابط معنادار بین مقادیر را یاد بگیرد. اگر داده‌های ویژگی دسته‌بندی شده به صورت اعداد صحیح شاخص‌گذاری شده باقی بمانند و در یک مدل بارگذاری شوند، مدل با مقادیر شاخص‌گذاری شده به عنوان اعداد ممیز شناور پیوسته رفتار می‌کند. سپس مدل "بنفش" را شش برابر محتمل‌تر از "نارنجی" در نظر می‌گیرد.

کدگذاری وان-هات

مرحله بعدی در ساخت یک واژگان، تبدیل هر عدد اندیس به کدگذاری وان-هات آن است. در کدگذاری وان-هات:

  • هر دسته توسط یک بردار (آرایه) از N عنصر نمایش داده می‌شود، که در آن N تعداد دسته‌ها است. برای مثال، اگر car_color هشت دسته ممکن داشته باشد، بردار تک‌رنگ نمایش‌دهنده هشت عنصر خواهد داشت.
  • دقیقاً یکی از عناصر در یک بردار تک‌داغ مقدار ۱.۰ دارد؛ تمام عناصر باقی‌مانده مقدار ۰.۰ دارند.

برای مثال، جدول زیر کدگذاری وان-هات را برای هر رنگ در car_color نشان می‌دهد:

ویژگی قرمز نارنجی آبی زرد سبز سیاه بنفش قهوه‌ای
«قرمز» ۱ 0 0 0 0 0 0 0
«نارنجی» 0 ۱ 0 0 0 0 0 0
«آبی» 0 0 ۱ 0 0 0 0 0
«زرد» 0 0 0 ۱ 0 0 0 0
"سبز" 0 0 0 0 ۱ 0 0 0
«سیاه» 0 0 0 0 0 ۱ 0 0
«بنفش» 0 0 0 0 0 0 ۱ 0
«قهوه‌ای» 0 0 0 0 0 0 0 ۱

این بردار وان-هات است که به بردار ویژگی منتقل می‌شود، نه رشته یا عدد شاخص. مدل برای هر عنصر از بردار ویژگی، وزن جداگانه‌ای را یاد می‌گیرد.

تصویر زیر تبدیل‌های مختلف در نمایش واژگان را نشان می‌دهد:

شکل ۳. نمودار فرآیند پیوسته برای نگاشت دسته‌ها به بردارهای ویژگی. در نمودار، ویژگی‌های ورودی «زرد»، «نارنجی»، «آبی» و «آبی» برای بار دوم هستند. سیستم از یک واژگان ذخیره شده («قرمز» ۰، «نارنجی» ۱، «آبی» ۲، «زرد» ۳ و غیره) برای نگاشت مقدار ورودی به یک شناسه استفاده می‌کند. بنابراین، سیستم «زرد»، «نارنجی»، «آبی» و «آبی» را به ۳، ۱، ۲، ۲ نگاشت می‌کند. سپس سیستم این مقادیر را به یک بردار ویژگی تک‌رنگ تبدیل می‌کند. به عنوان مثال، با توجه به سیستمی با هشت رنگ ممکن، ۳ به صورت ۰، ۰، ۰، ۱، ۰، ۰، ۰، ۰ می‌شود.
شکل ۳. فرآیند پیوسته برای نگاشت دسته‌ها به بردارهای ویژگی.

نمایش پراکنده

ویژگی‌ای که مقادیر آن عمدتاً صفر (یا خالی) است، ویژگی پراکنده نامیده می‌شود. بسیاری از ویژگی‌های دسته‌بندی‌شده، مانند car_color ، تمایل به ویژگی‌های پراکنده دارند. نمایش پراکنده به معنای ذخیره موقعیت ۱.۰ در یک بردار پراکنده است. به عنوان مثال، بردار تک‌رنگ برای "Blue" به صورت زیر است:

[0، 0، 1، 0، 0، 0، 0، 0]

از آنجایی که عدد 1 در موقعیت ۲ قرار دارد (هنگام شروع شمارش از ۰)، نمایش اسپارس برای بردار تک-داغ قبلی به صورت زیر است:

۲

توجه داشته باشید که نمایش اسپارس حافظه بسیار کمتری نسبت به بردار هشت عنصری تک‌هات مصرف می‌کند. نکته مهم این است که مدل باید روی بردار تک‌هات آموزش ببیند ، نه روی نمایش اسپارس.

داده‌های پرت در داده‌های دسته‌بندی‌شده

مانند داده‌های عددی، داده‌های دسته‌بندی‌شده نیز شامل داده‌های پرت هستند. فرض کنید car_color نه تنها شامل رنگ‌های محبوب، بلکه شامل برخی از رنگ‌های پرت که به ندرت استفاده می‌شوند، مانند "Mauve" یا "Avocado" نیز باشد. به جای اینکه به هر یک از این رنگ‌های پرت یک دسته جداگانه بدهید، می‌توانید آنها را در یک دسته "همه‌چیز را در بر بگیرد" به نام "خارج از واژگان" (OOV) قرار دهید. به عبارت دیگر، تمام رنگ‌های پرت در یک دسته پرت قرار می‌گیرند. سیستم یک وزن واحد برای آن دسته پرت یاد می‌گیرد.

رمزگذاری ویژگی‌های دسته‌بندی‌شده با ابعاد بالا

برخی از ویژگی‌های دسته‌بندی‌شده تعداد زیادی بُعد دارند، مانند ویژگی‌های موجود در جدول زیر:

نام ویژگی تعداد دسته‌ها دسته بندی نمونه
کلمات_به_انگلیسی حدود ۵۰۰۰۰۰ "خوشحال"، "پیاده روی"
کدهای_پستی_ایالات متحده ۴۲۰۰۰ پوند «۰۲۱۱۴»، «۹۰۳۰۱»
نام‌های_خانوادگی_در_آلمان ۸۵۰،۰۰۰ پوند «اشمیت»، «اشنایدر»

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

  • این مدل معمولاً سریع‌تر آموزش می‌بیند.
  • مدل ساخته شده معمولاً پیش‌بینی‌ها را سریع‌تر استنتاج می‌کند. به عبارت دیگر، مدل تأخیر کمتری دارد.

هش کردن (که ترفند هش کردن نیز نامیده می‌شود) روشی کمتر رایج برای کاهش تعداد ابعاد است.

تمرین: درک خود را بسنجید

درست یا غلط: یک مدل یادگیری ماشین می‌تواند مستقیماً روی مقادیر رشته‌ای خام، مانند "قرمز" و "سیاه" ، بدون تبدیل این مقادیر به بردارهای عددی، آموزش ببیند.
درست
در طول آموزش، یک مدل فقط می‌تواند اعداد اعشاری را دستکاری کند. رشته "Red" یک عدد اعشاری نیست. شما باید رشته‌هایی مانند "Red" را به اعداد اعشاری تبدیل کنید.
نادرست
یک مدل یادگیری ماشین فقط می‌تواند روی ویژگی‌هایی با مقادیر اعشاری آموزش ببیند، بنابراین قبل از آموزش باید آن رشته‌ها را به مقادیر اعشاری تبدیل کنید.