مجموعه داده چیست؟ چگونه جمعآوری میشود؟ هنگام جمعآوری و کار روی دادهها به چه نکاتی باید توجه کرد؟ در ادامه به این سؤالات پاسخ خواهیم داد.
حرف اول!
دادهها تعیینکننده نوع نتایج خروجی و یکی از مهمترین بخشهای یادگیری ماشینی هستند. فرانکو شولت، نویسنده وبسایت Keras– یکی از معروفترین کتابخانههای نرمافزاری یادگیری عمیق به زبان پایتون (python)- میگوید: «یادگیری ماشینی تنها برای حفظ الگوهای ارائهشده در دادههای آموزشی به کار میرود و آنچه را دیده باشد تشخیص میدهد. استفاده از یادگیری ماشینی برای پیشبینی آینده با این فرض همراه است که رفتارهای آینده مانند گذشته خواهد بود؛ البته اغلب چنین نیست.»
این مقاله در سه بخش جمعآوری داده، انواع داده و ساخت داده به بیان کلیات هر بخش میپردازد.
جمعآوری داده
مسئولیت خطیر جمعآوری دادهها
داشتن تفکری منتقدانه در هر مرحله از فرآیند جمعآوری دادهها بسیار حائز اهمیت است.
باید از خودتان بپرسید دادههایی که جمعآوری میکنید به چه کسانی تعلق دارد، آیا آنها میخواهند دادهها را در دسترس شما قرار دهند، آیا دسترسی به دادهها آزاد است، آیا راهی برای کسب اجازه یا پرداخت پول در ازای دریافت داده وجود دارد. برای مثال Flickr (یکی از بزرگترین سایتهای اشتراکگذاری تصویر و ویدئو، خدمات وب و جوامع آنلاین) سیستم مجوز دهی گستردهای دارد و API آنها طبق دسترسیهای دادهشده عکسها را جمعآوری کند. فرض کنید در حال جمعآوری مجموعه دادهای در رابطه با بهترین فیلمهای تاریخ سینما جهان هستید؛ آیا تنها از کسانی که دورو بر خودتان هستند دراینباره سؤال میپرسید؟ در جمعآوری داده باید مراقب سوگیریها باشید. نمونهگیری غیر فراگیر یا نمونه با سوگیری درنتیجه گیری تأثیرگذار خواهد بود و ممکن است منجر به اشتباه در نتیجهگیری گردد. در مواقعی که اختلاف بین دادهها زیاد است، باید به دنبال دادههای بیشتر در منابع گستردهتر گشت.
نقطه مقابل نمونهگیری غیر فراگیر، جمعآوری حجم بالایی از دادهها است. واقعاً نیازی به اطلاعات مربوط به سن یا جنسیت افراد در پروژه هست؟ جمعآوری دادههای مربوط به منطقه، قومیت یا ملیت ممکن است خطرآفرین باشد یا در آینده مشکلی ایجاد کند؟ در فرآیند جمعآوری داده فقط به دنبال دادههای ضروری باشید و اطلاعات بهدردنخور را بیخیال شوید.
دادهها از کجا جمعآوری میشوند؟
این دادهها میتوانند از سراسر اینترنت، یا سایتهای مشخصی مانند twitter،reddit و flicker جمعآوری شوند. با استفاده از دادههای پیشین، خدمات ساخت داده (مانند crowd flower)، استفاده از API یا ایجاد داده بهصورت دستی میتوان دادهها را به دست آورد. البته اکثر دادههای دنیا از شرکتها گرفته میشوند.
دادهها چگونه برچسبگذاری میشوند؟
دادههایی که از منابع مختلف جمعآوری شدهاند، اغلب با کلمه کلیدی که برای جستوجوی آن بهکار رفته (مانند درخت یا ساختمان) و گاهی اوقات با نام مکانشان (مانند نام یک انجمن در سایتی مثل reddit) برچسبگذاری میشوند. برچسبگذاریها بهصورت دستی یا با استفاده از سرویسهای برچسبگذاری انجام میشود. برخی دادهها درگذشته برچسبگذاری شدهاند و البته بسیاری از برچسبها نیز از طبقهبندیهای موجود نشات میگیرند.
چه کسانی برچسبگذاری مجموعه داده را انجام میدهد؟
بسیاری از مجموعه دادهها با استفاده از وبسایتهای جمع سپاری (مانند Mechanical Turk یا Crowd Sourcing) و درخواست انجام یکسری وظایف کوچک از مردم ایجاد میشوند. شناسایی موضوع یک عکس یا احساس برگرفته از یک نوشته نمونههایی از این وظایف هستند که حجم بالایی دارند و انجام آنها برای کامپیوتر دشوار است.
همه وبسایتهای جمع سپاری خدمات یکسانی ارائه نمیدهند. هنگام ایجاد یک کار، به اجازه دریافت بازخورد از شرکتکنندگان (افرادی که وظایف را انجام میدهند) و قیمت پرداختی مناسب (بیش از حداقل دستمزد) باید توجه داشت. اگر از این روش برای ایجاد مجموعه داده استفاده میکنید، به یاد داشته باشید بدون برچسبگذارها مجموعه دادهای نخواهید داشت. پس قدردان مشارکت آنها باشید و دستمزد خوبی برایشان در نظر بگیرید.
انواع دادهها
دادهها انواع مختلفی دارند و میتوانند بهصورت تصویر، ویدئو، متن، صوت، فایل، نمودار و… باشند. در ادامه به برخی از انواع معمول مجموعه دادهها اشاره میکنیم.
دادههای تصویری
برای داشتن تصاویری با ابعاد مشخص، اغلب اندازه آنها تغییر مییابد. نوع تصاویر بسته به ساختار شبکه عصبی مورداستفاده تغییر میکنند. برای مثال گاهی اوقات لازم است تصاویر سیاه و سفید باشند. با بررسی مستندات، میتوان از نوع ساختار شبکه اطمینان حاصل کرد. برای آمادهسازی تصاویر (با استفاده از برنامهنویسی) اغلب از ابزار OpenCV استفاده میشود.
دادههای متنی
برای جمعآوری دادههای متنی، منابع آنلاین خوبی در دسترس قرار دارد.
ProjectGutenberg یکی از نمونههای مناسب به زبان انگلیسی ست؛ مجموعهای بالغبر پنجاه هزار کتاب رایگان با مطالبی مناسب. متونی که از سایر منابع (مانند وبسایت یا لیست مکالمات) جمعآوری میشوند احتمالاً نیازمند پاکسازی و پردازش خواهند بود. پردازش میتواند شامل واحد سازی (تقسیم متن به کلمات یا جملات)، حذف علائم نگارشی، فیلتر کلمات اضافی (کلمات بیاهمیت و هرآن چه مایل به پردازش آنها نیستید) و نرمال سازی دادهها (مثلاً حصول اطمینان از ارزش یکسان تمام کلمات) باشد.
دادههای صوتی
موسیقی به روشهای بسیاری منتشر میشود و به همین دلیل از سایر رسانهها متفاوتتر است. هنگام ایجاد مجموعه داده موسیقی باید به نحوه ارائه موسیقی فکرکرد. ورودیهای صوتی یادگیری ماشینی فایلهای صوتی مانند فایلهای wav، MIDI (رابط دیجیتالی سازهای موسیقی)، Spectogram (تصویر فرکانسهای صوتی)، Rainbowgram (فایلهای صوتی ایجادشده توسط هوش مصنوعی)، پارتیتور و فایلهای صوتی غیر فشرده هستند. یک مجموعه داده صوتی انواع این فایلها را شامل میشود. هر نوع ورودی صوتی با یک الگوریتم یادگیری ماشینی مشخص، بهترین عملکرد را خواهد داد. برای مثال Spectogram اغلب با الگوریتمهای مشابهی که برای تصاویر به کار میروند عملکرد خوبی خواهد داشت درحالیکه شبکههای LSTM برای فایلهای موسیقی مبتنی بر متن مناسبترند.
ساخت داده
آموزش، آزمایش و اعتبار سنجی مجموعه دادهها
بهطورکلی مجموعه داده پس از جمعآوری، باید مورد آموزش، آزمایش و اعتبار سنجی قرار گیرد. بهمنظور آموزش مدل، تغییر پارامترها و بررسی رفتار نهایی مدل، مجموعه داده به ترتیب تحت آموزش، اعتبارسنجی و آزمایش قرار میگیرد. تقسیم دادهها قانون خاصی ندارد اما پیشنهاد میشود ۸۰% دادهها را به آموزش مجموعه داده، ۱۵تا۱۶% به آزمایش مجموعه و ۵ یا ۶ درصد را به اعتبار سنجی اختصاص دهید. معمولاً هر چه دادههای آموزشدیده بیشتر باشند، عملکرد مدل بهتر خواهد بود. اگر مجموعه داده کوچکی در اختیار دارید، میتوانید درصد مجموعه داده آموزشی را بهدلخواه افزایش دهید.
منبع: ml5js.org
ترجمه: رویا جعفرپناه