بخشی از مقاله

بررسی کتابخانه ماشین یادگیری ماهوت(Apache Mahout)
چکیده
زیر پروژه Mahout که جزء پروژه هدوپ بشمار می رود یک محیط برای ایجاد برنامه ها و الگوریتم های یادگیری ماشین به صورت توزیع شده می باشد.این زیرپروژه شامل الگوریتم ها و کتابخانه های مختلفی برای داده کاوی می باشد.این زیر پروژه هنوز در حال تکمیل شدن است اما تا به حال الگوریتم های زیادی برای آن پیاده سازی شده است. هرچند Mahout بیشتر به عنوان یکی از زیرپروژه های هدوپ شناخته می شود ولی این به این معنی نیست که وابسته به هدوپ باشد. Mahoutمی تواند بدون هدوپ و بر روی Single Node و حتی کلاستر غیر هدوپی مورد استفاده قرار گیرد.در این مقاله قصد داریم به بررسی ساختارهاونحوه کار کتابخانه ماشین یادگیری ماهوت بپردازیم.
واژگان کلیدی:ماهوت،داده های بزرگ، داده کاوی، هدوپ


مقدمه
امروزه آنالیز کردن داده های بزرگ یکی از مهمترین دغدغه های تمام صنعتها و سازمانها میباشد . در عصر حاضر داشتن داده های زیاد مهم نیست بلکه درست استفاده کردن و تحلیل این داده ها ارزشمند است .دانش استفاده از این داده ها و قدرت جدا کردن دسته های مشتریان متفاوت از یکدیگر داده کاوی نام دارد .داده کاوی به معنای کاوش در داده ها برای استخراج اطلاعات ارزشمند در کوتاهترین مدت ممکن است و در نهایت رسیدن به دانشی که بتواند ما را در اهداف خود کمک نماید.Apache Mahout یکی از متداول ترین ابزارهای داده کاوی مبتنی بر هدوپ است. (هدوپ یک نرم افزار متن باز است که برای تقسیم بندی و توزیع فایلهای متمرکز به کار میرود به عبارت دیگر برای ذخیره سازی و فراخوانی اطلاعات حجیم مورد استفاده قرار میگیرد). ماهوت یک کتابخانه ماشین یادگیری((machine learning library مقیاس پذیر است که از سه بخش اصلی پشتیبانی میکند :
استخراج نظریات( مدلی از رفتار افراد و کاربران و آن چه که به آن علاقمند هستند را در اختیار ما قرار میدهد) ، خوشه بندی( اسناد متنی و گروه هر یک را در اختیار گروهی از اسناد مرتبط موضعی قرار میدهد )و کلاس بندی(اسناد را ابتدا طبقه بندی کرده و سپس اسناد جدید بدون برچسب را در گروه مرتبط با آن قرار میدهد). [1]
ماهوت یک کتابخانه ماشین یادگیری((machine learning متن باز برای آپاچی است .الگوریتمها این کتابخانه را در زیر چتر گسترده ای از" ماشین یادگیری "یا" هوش جمعی "پیاده سازی میکنند .در حال حاضر برای تعریف ماهوت نخست به معنی موتورهای پیشنهاددهنده()(recommender engines فیلترهای مشترک)، خوشه بندی و کلاس بندی پرداخته می شود.[1] ماهوت مقیاس پذیر است و قصد دارد تا ابزار ماشین یادگیری زمانیکه مجموعه داده ها برای پردازش حجیم باشند و یا بیش از حد برای یک ماشین بزرگ باشند را انتخاب کند .در تجسم فعلی ماهوت، این اجرای ماشین یادگیری مقیاس پذیر در جاوا نوشته شده است و برخی از بخشها بر روی پروژه های محاسباتی توزیع شده آپاچی هدوپ ساخته شده اند. ماهوت یک کتابخانه جاوا است .و یک واسط کاربر، سرور آماده یا یک نصاب را فراهم نمیکند بلکه چهارچوبی از ابزار در نظر گرفته شده است تا مورد استفاده قرار بگیرد و به وسیله توسعه دهندگان تطبیق دهی شود.شکل 1 برخی از سطح بندی های ماهوت را در بنیاد نرم افزار آپاچی نشان میدهد .در آوریل 2010ماهوت در نوع خودش به یک پروژه آپاچی سطح بالا تبدیل شد و نام تجاری جدیدی گرفت.

ماهوت تعدادی از الگوریتمها و تکنیکهایی که هنوز در حال توسعه و یا در مرحله آزمایش هستند را رشد داده است.[2]
در مراحل اولیه زندگی پروژه ماهوت ، سه موضوع هسته ای مشهود است :موتورهای پیشنهاددهنده( فیلترینگ مشترک)، خوشه بندی و کلاس بندی .این بدین معنا نیست که تمامی این موارد در ماهوت هستند ولی از برجسته ترین و بالغ ترین مضامین در هنگام نوشتن به شمار میروند.
2. زمینه های ماشین یادگیری ماهوت
ماهوت در تئوری یک پروژه متن باز است که همه تکنیکهای ماشین یادگیری را پیاده سازی میکند .در عمل پروژه ای است که بر روی سه سطح کلیدی از ماشین یادگیری در لحظه تمرکز دارد .این سه سطح موتورهای پیشنهاددهنده(فیلتر مشترک)، خوشه بندی و کلاس بندی هستند. که در ادامه به توضیح آنها می پردازیم.[3]
2,1 موتورهای پیشنهاددهنده
موتورهای پیشنهاددهنده بیشترین تکنیک های ماشین یادگیری قابل تشخیص بلادرنگ در استفاده امروزه هستند.موتورهای پیشنهاددهنده سعی میکنند تا به علایق ،ترجیحات و یا موارد ناشناخته ای که ممکن است به آنهاعلاقه داشته باشیم پی ببرند.

· :Amazon.com یکی از معروفترین سایتهای تجارت الکترونیک است که پیشنهاددهی براساس خریدها و عملیات سایت را گسترش میدهد، آمازون کتابها و سایر آیتم هایی که به احتمال زیاد موردعلاقه هستند را پیشنهاد میدهد.

· DVD: NetFlix هایی که ممکن است مورد علاقه باشند را پیشنهاد میدهد و به محققانی که بتوانند ، کیفیت پیشنهاددهی را بهبود ببخشند جایزه ای یک میلیون دلاری ارائه میکند.
· سایتهای دوست یابی مانندLíbímseti حتی میتواند مردم را به یکدیگر پیشنهاد دهند .

· سایتهای شبکه های اجتماعی مانند Facebook از انواع تکنیکهای پیشنهاددهی استفاده میکنند تا افرادی که به احتمال زیاد به دوستانشان متصل شده اند را شناسایی کنند.

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

2,2 خوشه بندی
تکنیکهای خوشه بندی تلاش میکنند تا تعداد زیادی از آیتمها را در خوشه هایی که در برخی شباهتهااشتراک دارند گروه بندی کنند .خوشه بندی یک راه برای کشف سلسله مراتب و نظم در مجموعه داده هایی است که خیلی بزرگ یا غیرقابل فهم هستند .در این روش الگوهای جالب معلوم میشوند و یا مجموعه داده ها قابل فهم تر میشوند.
· خبرهای گوگل، سرتیتر خبرها را طبق موضوعات با استفاده از تکنیک های خوشه بندی گروه بندی می کند . به این منظور که اخبار گروه بندی شده با داستانهای منطقی را به جای یک لیست اولیه از همه مقالات ارائه بدهد.
· موتورهای جستجو مانند Clusty نتایج جستجوی خود را به دلایلی مشابه به آن چه که بالا گفتیم گروهبندی می کند.
· مصرف کنندگان هم میتوانند با استفاده از تکنیکهای خوشه بندی براساس ویژگیهایی مثل درآمد و موقعیت و عادتهای خرید در خوشه ها گروه بندی شوند.

· 2,3 کلاس بندی
تکنیکهای کلاس بندی تصمیم میگیرند که یک شی تا چه مقدار جزیی از برخی دسته ها است یا تا چه اندازه بعضی از ویژگیها را دارا است .کلاس بندی مانند خوشه بندی همه جا ظاهر میشود ولی بیشتر در پشت صحنه عمل میکند . اغلب این سیستمها با بررسی بسیاری از نمونه های آیتم ها در دسته به منظور استنتاج قوانین کلاس بندی یاد میگیرند . این ایده کلی تعداد بسیاری از برنامه های کاربردی را دارا است.
· یاهومیل براساس ایمیلهای قبلی یا گزارشات هرزنامه ها از کاربران و همچنین از روی ویژگیها و کاراکترهای خود ایمیل تصمیم میگیرد که آیا پیامهای دریافتی هرزنامه هستند یا خیر.
· Google picasa و دیگر برنامه های کاربردی مدیریت تصویر میتوانند تصمیم بگیرند که یک قسمت ازتصویر شامل چهره انسان است یا خیر؟
· نرم افزار شناسایی کاراکتر بصری بخشهای کوچک از متن اسکن شده را میتواند به شخصیتهای فردی طبقه بندی کند.
· ویژگی Apple Genius در I Tunes بنا به گزارشها از کلاس بندی استفاده میکند تا آهنگها را به لیست پخش بالقوه برای کاربران کلاس بندی کند.
کلاس بندی به تصمیم گیری برای فهم اینکه آیا یک ورودی یا شی جدید با الگوهای مشاهده شده قبلی مطابقت دارد یا خیر ، کمک میکند و اغلب جهت کلاس بندی رفتارها یا الگوهای غیرمعمول استفاده میشود .همچنین میتواند جهت تشخیص فعالیتهای شبکه ای مشکوک یا تقلب مورد استفاده قرار بگیرد.هر کدام از این تکنیکها زمانی بهترین عملکرد را دارند که تعداد زیادی داده های ورودی مناسب فراهم باشد. در برخی موارد این تکنیکها نه تنها باید با مقدار حجیمی از داده ها کار کنند بلکه باید نتایج را به سرعت تولید کنند و این عوامل یک مسئله مهم را مقیاس پذیر میسازد. یکی از دلایل کلیدی ماهوت برای بودن، تولید و پیاده سازی های این تکنیک ها است که مقیاسی برای داده های حجیم ایجاد میکند.

3. تقابل مقیاس بزرگ با ماهوت و هدوپ
روشهای ماشینهای یادگیری باید در مواردی که شامل میلیونها ورودی است و نیاز به پردازش تمامی آنهابه طور همزمان است توسعه پیدا کند .شرکتهای تکنولوژی پیشرفته توانسته اند استفاده از تکنیکهای ماشین یادگیری پیچیده، قابل اجرا در مقیاس را در نظر بگیرند. برخی از استفاده هایی که ماهوت از هدوپ ایجاد می کند، شامل یک منبع باز است، پیاده سازی مبتنی بر جاوا از چهارچوب مجاسبات توزیع شده MapReduce مشهور شده و به صورت داخلی در گوگل استفاده شده است. MapReduce یک الگوی برنامه نویسی است که برای قدرتمند ساختن استفاده میشود .الگوهایMapReduce برای مشکلات در جاهایی که ورودیها مجموعه ای از جفت های ارزشهای کلیدی هستند مورد استفاده قرار میگیرند . یک تابع نقشه، این جفت ارزش کلیدی را به سایز جفت ارزشهای کلیدی واسطه تبدیل میکند.یک تابع کاهشی، در بعضی موارد همه ارزشها را برای هر کلید واسطه ادغام میکند تا خروجی را تولید کند .در واقع تعداد زیادی از مشکلات میتوانند به عنوان مشکلات MapReduce یا یک سری از آنها شکل بگیرند . تمامی این پردازشها مستقل هستند و بنابراین میتوانند به بسیاری از ماشین آلات در سراسر تقسیم شوند. [4-7 ]
4. تفاوت بین کلاسبندی، خوشه بندی و پیشنهاددهی
الگوریتمهای کلاسبندی در مقابل الگوریتمهای خوشه بندی ایستاده اند زیرا که الگوریتمهای خوشه بندی قادرند به طور خود به خودی تصمیم بگیرند( در اصطلاح ماشین یادگیری ، الگوریتمهای آموزشی به دون نظارت هستند).در حالی که الگوریتمهای کلاسبندی یاد میگیرند تا نمونه هایی از تصمیم های درست را شبیه سازی کنند( الگوریتمهای یادگیری با نظارت) .الگوریتمهای کلاسبندی با الگوریتمهای پیشنهاددهی نیز تفاوت دارند .زیرا که آنها جهت گرفتن یک تصمیم واحد با مجموعه خیلی محدودی از نتایج ممکن در نظر گرفته شده اند، در حالی که الگوریتمهای پیشنهاددهی بهترین گزینه از جایگزینهای احتمالی را انتخاب و اولویت بندی میکنند .به طور معمول استفاده از یک کلاسبندبرای ساخت سیستم پیشنهاددهی به اندازه یک سیستم پیشنهاددهی واقعی کارآمد نیست اما کلاسبند به عنوان پیشنهاددهنده می تواند از برخی اطلاعاتی که یک سیستم پیشنهاددهنده معمولی برای استفاده از آنها به زمان طولانی ای نیازمند است استفاده کند.[1],[3]
5. کلاسبندی((classification چگونه کار میکند؟
دو فاز اصلی دخیل در ساخت سیستم کلاسبندی :یک مدل تولیدشده توسط الگوریتم یادگیری و استفاده ازآن در جهت تخصیص داده های جدید به دسته ها است .انتخاب داده های آموزشی، دسته بندی خروجی( اهداف)الگوریتم از طریق سیستمی که از آن یاد خواهد گرفت و متغیرهای استفاده شده به عنوان ورودی انتخابهای کلیدی در فاز اول ساخت سیستم کلاسبندی هستند .گامهای اساسی در ایجاد سیستم کلاس بندی در شکل 3 نشان داده شده است .مسیر بالایی آموزش مدل کلاسبندی را نشان میدهد .مسیر پایینی نمونه های جدید را برای مدلسازی تهیه میکند .ورودی برای الگوریتم آموزشی نمونه داده های برچسب خورده با متغیرهای هدف شناخته شده است.

در داخل کمان نقطه چین قلب سیستم کلاسبندی قرار دارد .یک الگوریتم آموزشی که مدل را برای شبیه سازی تصمیم های انسانی آموزش می دهد .یک کپی از مدل در ارزیابی یا در تولید با نمونه های ورودی جدید استفاده شده است تا متغیرهدف را تخمین بزند.[1],[3]

1,5 آموزش در برابر تست در برابر تولید
در عمل نمونه های آموزشی به دو بخش تقسیم شده اند .یک بخش به عنوان داده آموزشی شناخته شده است.شامل 90 تا 80 درصد از داده های موجود شامل این بخش میشوند .داده آموزشی در آموزش استفاده شده است تا مدل را تولید کند .بخش دوم که داده آزمایشی نامیده میشود، پس از بخش اول به مدل بدون گفتن اینکه پاسخ داده شده مدنظر است داده میشود .که این بخش در جهت مقایسه خروجی مدل با خروجی مدنظر انجام میگیرد.نتایج تولید محصول معمولا 100 درصد دقیق نیستند اما کیفیت خروجی طی اجرای آزمون باید مطابق با آنچه که به دست آمده است باقی بماند مگر اینکه کیفیت داده ورودی یا شرایط بیرونی تغییر کند.

2,5 متغیرهای پیشبینی کننده (Predictor variables) در مقابل متغیر هدف (target variable)
یک متغیر مقداری برای یک ویژگی یا مشخصه از نمونه است .مقدار میتواند توسط اندازه گیری یا محاسبات نتیجه شده باشد .هدف نهایی از یک طبقه بندی برآورد پاسخهای قطعی برای سوالات خاص است .این پاسخ به عنوان هدف متغیر شناخته شده است .در طبقه بندی متغیرهای پیشبینی کننده سرنخهای داده شده به مدل هستند.بنابراین میتوانند تصمیم بگیرند که متغیر هدف جهت اختصاص به هر نمونه چیست .متغیرهای پیشبینی کننده استفاده شده برای طبقه بندی نیز به عنوان متغیرهای ورودی یا پیشبینی کننده شناخته شده هستند .از مشخصه های نمونه هایی که طبقه بندی شده اند میتوان با عنوان ویژگی نام برد . فرآیند توصیف یک مشخصه خاص در شیوه ای که توسط سیستم طبقه بندی میتواند استفاده شود به عنوان استخراج ویژگی شناخته شده است .اگر یک ویژگی جهت استفاده به عنوان ورودی برای مدل انتخاب شده باشد، مقدار آن ویژگی به عنوان یک متغیر پیشبینی کننده در نظر گرفته میشود.در طول آموزش داده هم از متغیر هدف و هم متغیر پیشبینی کننده استفاده میشود ولی در طی آزمون و در تولید فقط متغیرهای پیشبینی کننده برای مدل موجود هستند .در طی آزمایش متغیرهای هدف برای داده آزمایشی نهان خواهند شد. مقایسه متغیرهای هدف برآوردشده به همراه مقدار شناخته شده برای هر نمونه آزمایشی که تولید شده بود،دقت مدل کلاسبندی را نشان خواهد داد .مقادیر برای متغیرهای پیشبینی کننده میتواند پیوسته((continuous، قطعی (categorical )، مانندکلمه (word-like) یا مانند متن (text-like) باشد .برای کلاسبندی فیلد نمایندگی متغیر هدف باید یک مقدار قطعی داشته باشد .اغلب متغیر هدف یک مقدار دودویی قطعی دارد .یعنی تنها دو مقدار ممکن دارد، مانند

در متن اصلی مقاله به هم ریختگی وجود ندارد. برای مطالعه بیشتر مقاله آن را خریداری کنید