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

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

نام ویژگی # دسته بندی دسته بندی نمونه
برف_امروز 2 درست، نادرست
skill_level 3 مبتدی، کارشناس، متخصص
فصل 4 زمستان، بهار، تابستان، پاییز
روز_هفته 7 دوشنبه، سه شنبه، چهارشنبه
سیاره 8 عطارد، زهره، زمین

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

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

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

ورزش: شهود خود را بررسی کنید

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

اعداد شاخص

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

شکل 2. هر رنگ با یک عدد صحیح منحصر به فرد مرتبط است. به عنوان مثال، "قرمز" با عدد صحیح 0، "نارنجی" با عدد صحیح 1 و غیره مرتبط است.
شکل 2. ویژگی های نمایه شده.

ورزش: شهود خود را بررسی کنید

آیا مدل شما باید مستقیماً با اعداد شاخص نشان داده شده در شکل 2 تمرین کند؟
بله
اگر مدل بر روی اعداد شاخص آموزش داده شود، هر کدام را به اشتباه به عنوان یک مقدار عددی در نظر می گیرد و "Black" (شاخص شماره 5) را 5 برابر بیشتر از "Orange" (شاخص شماره 1) برای مدل معنا می کند.
خیر
مدل شما نباید روی اعداد شاخص تمرین کند. اگر چنین بود، مدل شما هر عدد شاخص را به عنوان یک مقدار عددی در نظر می‌گیرد و "Black" (شاخص شماره 5) را 5 برابر بیشتر از "Orange" (شاخص شماره 1) برای مدل معنا می‌کند.

رمزگذاری تک داغ

گام بعدی در ساخت واژگان این است که هر عدد شاخص را به رمزگذاری تکی آن تبدیل کنید. در یک رمزگذاری یکباره:

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

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

ویژگی قرمز نارنجی آبی زرد سبز مشکی بنفش قهوه ای
"قرمز" 1 0 0 0 0 0 0 0
"نارنجی" 0 1 0 0 0 0 0 0
"آبی" 0 0 1 0 0 0 0 0
"زرد" 0 0 0 1 0 0 0 0
"سبز" 0 0 0 0 1 0 0 0
"سیاه" 0 0 0 0 0 1 0 0
"بنفش" 0 0 0 0 0 0 1 0
"قهوه ای" 0 0 0 0 0 0 0 1

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

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

شکل 3. نمودار فرآیند انتها به انتها برای نگاشت دسته ها به بردارهای ویژگی. در نمودار، ویژگی های ورودی «زرد»، «نارنجی»، «آبی» و «آبی» برای بار دوم است.  این سیستم از یک واژگان ذخیره شده ("قرمز" 0، "نارنجی" 1، "آبی" 2، "زرد" 3 و غیره) برای نگاشت مقدار ورودی به یک شناسه استفاده می کند. بنابراین، سیستم "زرد"، "نارنجی"، "آبی" و "آبی" را به 3، 1، 2، 2 نگاشت می کند. سپس سیستم آن مقادیر را به یک بردار ویژگی یک داغ تبدیل می کند. به عنوان مثال، با توجه به یک سیستم با هشت رنگ ممکن، 3 تبدیل به 0، 0، 0، 1، 0، 0، 0، 0 می شود.
شکل 3. فرآیند پایان به انتها برای نگاشت دسته ها به بردارهای ویژگی.

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

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

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

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

2

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

پرت در داده های طبقه بندی شده

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

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

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

نام ویژگی # دسته بندی دسته بندی نمونه
کلمات_به_انگلیسی ~ 500000 "شاد"، "راه رفتن"
کدهای_پستی_ایالات متحده ~ 42000 "02114", "90301"
نامهای_خانوادگی_در_آلمان 850000 ~ "اشمیت"، "اشنایدر"

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

  • این مدل معمولاً سریعتر تمرین می کند.
  • مدل ساخته شده معمولاً پیش بینی ها را سریعتر استنباط می کند. یعنی مدل تاخیر کمتری دارد.

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