تبدیل داده های طبقه بندی شده

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

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

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

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

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

سپس می توان ویژگی ها را ایندکس کرد.

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

به این نوع نقشه برداری واژگان می گویند.

واژگان

در یک واژگان، هر مقدار نشان دهنده یک ویژگی منحصر به فرد است.

Index Number Category
0 Red
1 Orange
2 Blue
... ...

مدل شاخص را از رشته جستجو می کند و 1.0 را به شکاف مربوطه در بردار ویژگی و 0.0 را به تمام شکاف های دیگر در بردار ویژگی اختصاص می دهد.

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

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

اگر دسته‌های شما روزهای هفته هستند، ممکن است، برای مثال، جمعه را با بردار ویژگی [0، 0، 0، 0، 1، 0، 0] نشان دهید. با این حال، بیشتر پیاده‌سازی‌های سیستم‌های ML این بردار را در حافظه با نمایشی پراکنده نشان می‌دهند. یک نمایش رایج فهرستی از مقادیر غیر خالی و شاخص های مربوط به آنها است - برای مثال، 1.0 برای مقدار و [4] برای شاخص. این به شما امکان می دهد حافظه کمتری را صرف ذخیره مقدار زیادی 0s کنید و ضرب ماتریس کارآمدتری را ممکن می سازد. از نظر ریاضیات اساسی، [4] معادل [0، 0، 0، 0، 1، 0، 0] است.

خارج از Vocab (OOV)

همانطور که داده‌های عددی حاوی مقادیر پرت هستند، داده‌های طبقه‌بندی نیز چنین هستند. به عنوان مثال، مجموعه ای از داده ها را در نظر بگیرید که حاوی توضیحات خودروها است. یکی از ویژگی های این مجموعه داده می تواند رنگ خودرو باشد. فرض کنید رنگ‌های رایج خودرو (سیاه، سفید، خاکستری و غیره) به خوبی در این مجموعه داده نشان داده شده‌اند و هر یک از آنها را در یک دسته قرار می‌دهید تا بتوانید یاد بگیرید که این رنگ‌های مختلف چگونه بر ارزش تأثیر می‌گذارند. با این حال، فرض کنید این مجموعه داده شامل تعداد کمی خودرو با رنگ‌های عجیب و غریب (به رنگ ارغوانی، پوس، آووکادو) است. به جای اینکه به هر یک از این رنگ ها یک دسته بندی جداگانه بدهید، می توانید آنها را در یک دسته بندی فراگیر به نام خارج از Vocab ( OOV ) قرار دهید. با استفاده از OOV، سیستم زمان را برای آموزش هر یک از آن رنگ‌های کمیاب تلف نمی‌کند.

هش کردن

گزینه دیگر این است که هر رشته (دسته) را در فضای فهرست موجود خود هش کنید. هش کردن اغلب باعث برخورد می شود، اما شما به مدل تکیه می کنید که برخی از نمایش های مشترک دسته ها را در همان شاخص یاد می گیرد که برای مشکل داده شده به خوبی کار می کند.

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

نموداری که دو لیست از کلمات را نشان می دهد. یک لیست شامل 10 کلمه است. لیست دیگر 10 کلمه را نشان می دهد که به 8 سطل هش تقسیم شده اند. بنابراین، 6 تا از سطل های هش حاوی یک کلمه هستند، در حالی که 2 تا از سطل های هش هر دو حاوی 2 کلمه هستند. هر سطل هش با یک عدد از 1 تا 8 مشخص می شود. شکل 4: نگاشت آیتم ها به واژگان.

ترکیبی از هش و واژگان

می توانید یک رویکرد ترکیبی داشته باشید و هش را با واژگان ترکیب کنید. از واژگانی برای مهم ترین دسته ها در داده های خود استفاده کنید، اما سطل OOV را با چندین سطل OOV جایگزین کنید و از هش برای اختصاص دسته ها به سطل ها استفاده کنید.

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

نمودار سه لیست از کلمات را نشان می دهد. یک لیست شامل 10 کلمه برای دسته بندی است. دو لیست دیگر آن 10 کلمه را در واژگان و سطل های هش ترسیم می کنند. یعنی 5 کلمه مستقیماً به واژگان نگاشت، در حالی که 5 کلمه دیگر به دو سطل هش نگاشت می شوند. یک سطل هش شامل دو کلمه است. سطل هش دیگر شامل سه کلمه است. واژگان شامل کلمات رایج است. سطل هش حاوی کلمات نادرتر است. شکل 5: رویکرد ترکیبی ترکیبی از واژگان و هش کردن.

نکته ای در مورد جاسازی ها

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

نموداری که فرآیند انتها به انتها را برای نگاشت دسته‌ها به ویژگی بردارها از طریق جاسازی نشان می‌دهد. یک جدول تعبیه شده از مجموعه ای از ردیف های شماره گذاری شده تشکیل شده است. هر ردیف از مجموعه ای از مقادیر ممیز شناور بین 0.0 و 1.0 تشکیل شده است. برای تبدیل یک دسته، سیستم ردیف مربوطه را از جدول جاسازی کپی می کند. به عنوان مثال، اگر دسته ورودی 0 باشد، سیستم اولین ردیف جدول جاسازی را در بردار ویژگی کپی می کند. اگر دسته ورودی 1 بود، سیستم ردیف دوم جدول جاسازی را در بردار ویژگی کپی می کند. شکل 6: بردارهای ویژگی پراکنده از طریق جاسازی

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

در مورد تعبیه های از پیش آموزش دیده چطور؟ تعبیه‌های از پیش آموزش‌دیده هنوز معمولاً در طول آموزش قابل تغییر هستند، بنابراین از نظر مفهومی هنوز بخشی از مدل هستند.