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

۱. مقدمه

در این مقاله می خواهیم با دانش و تجربه کم خود در بحث خرید و فروش املاک و مستغلات پا جای پای بزرگانی همچون رابرت کیوساکی (نویسنده کتاب پدر پولدار و پدر بی پول) و دارن هاردی (نویسنده کتاب اثر مرکب) بگذاریم.
به این سوال جواب خواهیم داد که آیا کامپیوتر ها هم میتوانند با داشتن اطلاعات کافی همچون آنان پیش بینی و انتخاب درست را در بازار شلوغ املاک داشته باشند؟!

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

۲. کارهای مرتبط

حل مسئله‌های پیش بینی با یادگیری ماشین و عموماً مسائلی که در آن داد های قبلی وجود دارد که ماشین توسط آن داده قبلی ردیف های بعدی را پیش بینی می کند معمولا با الگوریتم های پسرفتی یا regression انجام می گیرد.

پسرفتی یا regression چیست؟!
در الگوریتم های regression ماشین داده های قبلی را تحلیل کرده و توسط آن مدلی می‌سازد و الگو را یاد می گیرد، سپس توسط آن مدل با احتمال خوبی داده های بعدی را پیش بینی می کند. به طور ساده regression یک ابزاری یادگیری ماشین است که کمک میکنند با یادگیری روابط بین متغیر هدف (خروجی) و متغیرهای دیگر (ورودی) - که از داده های آماری قبلی به دست آمده - ‌ پیش‌بینی‌کنیم.
با این تعریف متغیر هدف ما که قیمت مثلا یک خانه است به متغیرهای دیگری همچون تعداد اتاق ها، متراژ، همسایگی آن خانه، منطقه و ... بستگی دارد. اگر ما یادگیری ماشین را به این متغیر ها اعمال کنیم می‌توانیم ارزش یک خانه را در یک منطقه جغرافیایی مشخص محاسبه کنیم.
عملکرد پسرفت ساده است : توسط داده های قبلی کافی رابطه بین متغیر هدف و متغیرهای دیگر را پیدا کرده و این رابطه را در داده های مشاهده شده واقعی اعمال می کنیم.
برای اینکه نشان بدهیم پسرفت چگونه کار می کنند مثالی ساده می زنیم :
در محاسبه قیمت یک ملک (متغیر هدف) فقط یک متغیر را در نظر می گیریم و آن هم مساحت آن خانه است (متغیر های دیگر).منطقی است که قیمت خانه ها رابطه‌ی خطی با مساحت دارند. پس :
y = k0 + k1 * x
که در آن y قیمت ملک و x مساحت آن است.
حال کافیست با استفاده از الگوریتم های regression ضرایب k0 و k1 را بدیت بیاوریم و در پیش‌بینی بعدی از آن استفاده کنیم.

در این عکس x مساحت خانه و y قیمت آن است. نقاط سیاه مشاهدات ما هستند. خطوط متغیر نشان می‌دهند وقتی k0 و k1 را تغییر می‌دهیم چه اتفاقی می‌افتد.


نحوه‌ی استفاده از الگوریتم های regression در یادگیری ماشین

  1. جمع آوری داده: همان داده ای که ماشین قرار است از آن یاد گرفته و پیش بینی کند.

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

  3. چک کردن همبستگی بین متغیر ها: متغیر هایی که باهم همبستگی قوی دارند باید حذف شوند

  4. حذف داده‌های خارج از محدوده

  5. انتخاب الگوریتم regression : الگوریتم های متعددی برای آنالیز پسرفتی وجوددارد و ما دنبال دقیق ترین آن‌ها هستیم. ولی چگونه می‌توان دقت را بررسی کرد؟روش رایج برای این کار r^2 نام دارد که عملا یک امتیاز به اندازه‌ی مربع تفاضل قیمت پیش بینی شده و قیمت اصلی است. برای این کار معمولا از ۸۰٪ داده برای یادگیری و از ۲۰٪ باقیمانده برای تست دقت پیش بینی استفاده می‌شود.

حرف های بیان شده خلاصه‌ای ساده و قابل فهمی از این دو مقاله ( [۱] و [۲]) و کلاس دکتر Andrew Ng بود که توضیخات دقیق تر در آنان راجع به تک تک الگوریتم ها بیان شده.
در این مقاله [۱] انواع الگوریتم‌های regression معرفی و توضیح داده شده و در این مقاله [۲] مقایسه‌ی خوبی بین آنها بیان شده.

۳. آزمایش‌ها

۴. مراجع

۵. پیوندهای مفید

وحید خرازی

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

  • سعی کنید قواعد نگارش رو دقیق‌تر رعایت کنید؛ رعایت نیم‌فاصله‌ها، نشانه‌گذاری‌ها، جمله‌بندی مناسب و فرمول‌نویسی بهتر خواندن متن شما را راحت‌تر می‌کنه.

  • در هر متنی که می‌نویسید اگر جایی از متن برداشتی از مقاله یا متنی بوده است یا مستقیما ترجمه و نقل قول عبارات است حتما و حتما و حتما باید همان‌جا به آن مطلب ارجاع بدهید وگرنه کار شما مصداق دزدی! می‌شه حتی اگر در مراجعتون اسم اون مطلب رو آورده باشید.

  • مراجع را با فرمت کامل بیاورید.(ذکر نام نویسنده، مجله، سال انتشار و ...)

موفق باشید.