داده کاوی چیست ؟

شاید تاکنون شنیده اید که گوگل و یاهو در رابطه با کاربران شان بیلیون ها اطلاعات داده ای را ذخیره میکنند و احتمالاً از خودتان می پرسید آنها با این همه اطلاعات می خواهند چکار کنند ؟

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

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

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

داده کاوی چیست ؟

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

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

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

علاوه بر این، اصطلاح داده کاوی کلمه ای است که خودش را به خوبی معرفی می‌کند ، یعنی در رابطه با مجموعه ای از تکنیک ها و روش ها صحبت می کند که برای تخمین و تبدیل داده ها استفاده می شود .بنابراین این مجموعه مقالات به کاربردهای اولیه داده کاوی می پردازند. اگر بخواهم صادقانه بگویم باید بدانید که حرفه ای ها در این زمینه کسانی هستند که در حوزه های آمار و احتمالات در سطوح بالای تحصیلاتی مثلاً دکترا تحصیل کرده اند و ۱۰ تا ۳۰ سال از عمرشان را در این رشته صرف تحقیقات کردند .با این توصیفات ممکن است فکر کنید که داده کاوی کاری است که فقط کمپانی های بزرگ می توانند از عهده آن برآیند .

اما باید بدانید که این تصورات صحیح نیستند و من امیدوارم که فقط این موضوع را روشن کرده باشم که داده کاوی صرفاً اجرای یک تابع بر روی مجموعه ای از داده ها نیست اما در عین حال هم آنقدر ها سخت نیست که هیچ کس خودش نتواند مقادیر و سطوحی از آن را انجام دهد . این دقیقاً همان مثال ۸۰ به ۲۰ است . یعنی شما میتوانید یک مدل داده کاوی با کارایی ۸۰ درصد ایجاد کنید که در مقابل ، فقط ۲۰ درصد دیگر آن کار حرفه ای هاست .بعد از خواندن این آموزش شما باید بتوانید به دیتاست خود نگاه کنید و تکنیکهای صحیح را که برای آن مفید است به کار ببرید و سپس گام هایی را برای تصحیح و تصفیه آن پیش برید و در نهایت  شما می توانید یک مدل خوب را برای داده های تان بسازید .

WEKA

داده کاوی صرفاً حوزه ای  نیست که محدود به کمپانی های بزرگ و نرم افزارهای گران قیمت باشد .در واقع یک نرم افزاری وجود دارد که تقریبا تمام کارهایی را که نرم افزار های گران قیمت انجام می دهند ان هم می‌تواند انجام دهند،  این نرم افزارweka  نام دارد . weka محصول دانشگاه Waikato   است ، و در شکل کنونی آن برای اولین بار در سال ۱۹۹۷ تولید شد .این برنامه به زبان جاوا نوشته شده است و شامل یک محیط گرافیکی برای کار کردن با فایل های داده و تولید نتایج گرافیکی(جدول ها و منحنی ها)  است .همچنین یک API  دارد ,که به وسیله آن شما می‌توانید WEKA را درون پروژه های کدنویسی خودتان فراخوانی کنید دقیقا همانطور که سایر کتابخانه‌ها را فراخوانی می کنید .

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



هنگامی که را WEKA باز کنید، پنجره گرافیکی آن باز می شود و به شما امکان می دهد تا 4  روش را برای کار کردن با WEKA و داده‌های تان انتخاب کنید .برای تمام مثال های این آموزش ما فقط از گزینه Explorer  استفاده میکنیم .این گزینه تمام آنچه را در این آموزش به آن  نیاز داریم فراهم می کند .

حالا که یاد گرفتید چطورWEKA  را نصب کنید و اجرا کنید اجازه دهید به سراغ اولین تکنیک داده کاوی خود یهنی رگرسیون برویم .

رگرسیون

رگرسیون ساده ترین تکنیک است اما همچنین احتمالاً کم قدرت ترین تکنیک ها هم هست .این مدل می تواند به سادگی یک متغیر ورودی و یک متغیرخروجی باشد (در اکسل به آن دیاگرام پراکندگی می گوییم).البته این موضوع می‌تواند بسیار پیچیده تر از این شود هنگامی که شامل تعداد زیادی متغیر های ورودی باشد .در عمل مدل های رگرسیون همگی از یک الگوی کلی تبعیت می کنند ، یعنی تعدادی متغیر مستقل وجود دارد که هنگامی که با همدیگر دریافت می شوند نتیجه ای را تولید می کنند و آن نتیجه ، یک متغیر وابسته است . پس مدل رگرسیون برای پیش بینی نتیجه یک متغیر وابسته استفاده می شود در حالی که مقادیر متغیرهای غیر وابسته به آن داده شده اند .

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

اجازه دهید همین مساله رگرسیون قیمت یک خانه را ادامه دهیم و چند داده ی واقعی را برای تخمین و بررسی ایجاد کنیم .

جدول ۱  - مقادیر خانه برای مدل رگرسیون

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

least squares, homoscedasticity, normal distribution, White tests, Lilliefors tests, R-squared, and p-values

طراحی دیتاست برای weka

برای لود کردن داده ها در به درون weka, باید آنها را به فرمتی در آوریم که برای weka قابل درک است . فرمت مورد علاقه weka  برای لود کردن داده ها ARFF است .درون فایل شما هر ستون را و آنچه را که شامل می شود تعیین خواهید کرد.در مورد مدل رگرسیون ما،  به یک ستون عددی (NUMERIC) یا تاریخ (DATE) محدود می شوید .در نهایت هر ردیف از داده ها را پر خواهیم کرد .فایل ARFF  که قرار است توسط weka بکار گرفته شود را در زیر می بینید .به ردیف‌های داده دقت کنید .در میان داده ها خبری از خانه ای که می خواهم بفروشم نیست از آنجایی که داریم یک مدل میسازیم ما نمی‌توانیم تا زمانی که قیمت خانه فروشی خود را نمی دانیم آن را در لیست قرار دهیم .


برای نمایش کدها کلیک کنید
                      

لود کردن داده ها در weka

حالا که فایل داده را ساختیم،  اکنون وقت آن رسیده است که مدل رگرسیون خود را هم بسازیم . weka را باز کنید ، Explorer را انتخاب کنید .اکنون به صفحه Explorer   وارد می شوید در حالی که تب Preprocess انتخاب شده است .بر روی دکمه Open File کلیک کنید و فایل ARFF  که در بخش قبلی ساختید را انتخاب کنید. بعد از انتخاب آن باید با چیزی مشابه شکل زیر روبرو شویم :

دراین نما weka به شما امکان می دهد داده هایی را که بر روی آن کار می کنید را مشاهده و مرور کنید. در بخش سمت چپ این پنجره تمام ستون های مربوط به داده های تان(Attributes) و شماره ردیف های داده ها   (Instances) مشخص شدند .با انتخاب هر ستون بخش سمت راست پنجره اکسپلورر اطلاعاتی در رابطه با داده های آن ستون به شما می دهد . برای مثال با انتخاب ستون houseSize در بخش سمت چپ (که احتمالا به طور پیش فرض هم انتخاب شده است)، بقش سمت راست باید به نحوی تغییر کند که اطلاعات آماری بیشتری را در رابطه با این ستون به شما بدهد .ماکسیمم مقدار در دیتا ست برای این ستون که برابر با 4,032 square feet است و حداقل مقدار که برابر با 2,200 square feet را می بینید. مقدار متوسط برابر با 3,131 square feet است ، و همچنین انحراف استاندارد برابر با  655 square feet است . (انحراف معیار استاندارد یک مقیاس آماری برای واریانس است).در نهایت یک روش گرافیکی برای بررسی داده ها در اختیار شماست که می توانید با کلیک کردن بر روی دکمه  Visualize All آن را مشاهده کنید .به خاطر تعداد ردیف‌های اندک که ما در این دیتاست داریم قابلیتهای گرافیکی آنقدرها قدرتمند نخواهد بود که اگر صدها داده داشتیم .حالا بیایید یک مدل بسازیم و قیمت خانه خود را به دست بیاوریم .

ایجاد یک مدل رگرسیون با weka

برای ایجاد این مدل بر روی تب Classify کلیک کنید . اولین گام انتخاب مدلی هست که می خواهیم بسازیم ، به نحوی که weka بداند چطور با داده ها کار کند و چه طور مدل مناسب را بسازد :

  1. بر روی دکمه Choose کلیک کنید ،سپس بر روی شاخه functions کلیک کنید
  2. برگ LinearRegression را انتخاب کنید



این کاربه weka  می‌گوید که ما می‌خواهیم یک مدل رگرسیون بسازیم .همه جا که شما می‌توانید از سایر گزینه ها متوجه شوید مدل های بسیاری برای ساختن وجود دارد .عنوان یک نکته: گزینه دیگری به نام SimpleLinearRegression در همان شاخه وجود دارد .دقت کنید که ان را انتخاب نکنید چرا که رگرسیون ساده فقط به دنبال یک متغیر می گردد در حالی که ما ۶ متغیر داریم .پس از آنکه مدل را انتخاب کردیم نمای weka باید به صورت شکل زیر باشد

حالا که مدل مطلوب انتخاب شده است باید به weka بگوییم داده ها کجا هستند تا از آن برای ساختن مدل استفاده کند .هر چند ممکن است برای ما واضح باشد که می خواهیم از داده هایی که در فایل ARFF ایجاد کردیم استفاده کنیم ، اما درواقع گزینه‌های متفاوت دیگری وجود دارد که برخی از آنها بسیار پیچیده تر از آن چیزی است که ما می‌خواهیم استفاده کنیم . سه گزینه دیگر Supplied test set  هستند که می‌توانید یک مجموعه متفاوت دیگری از داده ها را برای ساختن مدل با آنها بدهید : Cross-validation ، که به weka امکان می‌دهد تا مدلی را بر مبنای زیر مجموعه هایی از داده های داده شده بسازد و سپس از آنها میانگین بگیرد تا یک مدل نهایی را به دست آورد ، و Percentage split ،که weka یک زیرمجموعه تقسیم شده به صورت درصدی از داده های داده شده را میگیرد تا یک مدل نهایی را بسازد.این قبیل گزینه ها برای کارکردن با سایر مدلها مفید هستند ، سعی می‌کنم در آموزشهای بعدی به آنها بپردازم. با رگرسیون می‌توانیم به سادگی Use training set را انتخاب کنیم . این گزینه به weka می گوید که برای ساختن مدل مطلوب خودمان میتوانیم از داده هایی که در فایل ARFF  ایجاد کردیم استفاده کنیم .

و در نهایت  آخرین گام برای ایجاد مدل، انتخاب متغیر وابسته است یعنی همان ستونی که میخواهیم پیش بینی کنیم .ما می دانیم این ستون باید selling price باشد .دقیقاً در زیر گزینه‌های test ، پنجره وجود دارد که شما امکان می دهد تا متغیر وابسته را انتخاب کنید .ستون  sellingPrice باید به طور پیش فرض انتخاب شده باشد . البته اگر اینطور نیست لطفاً آن را انتخاب کنید.

و حالا آماده ایم تا مدل  را بسازیم .بر روی Start کلیک کنید شکل زیر آنچه را باید در خروجی مشاهده کنید نشان می دهد .




تفسیر مدل رگرسیون

weka علاقه ای به شلوغ کاری ندارد ! برای همین یک راست می آید و مدل رگرسیون خروجی را به شما می دهد:


برای نمایش کدها کلیک کنید
                      

نتیجه زیر مقادیر مورد نظر برای خانه من را به شما نشان می‌دهند :


برای نمایش کدها کلیک کنید
                      

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

سنگ گرانیت مهم نیست ! - weka فقط از ستونهای استفاده می کند که به طور آماری در برآورد دقت مدل شرکت می‌کنند ، weka ستون هایی را که به ایجاد یک مدل خوب کمک نمی کنند را نادیده می گیرد و دور می‌اندازند .بنابر این این مدل رگرسیون به ما می‌گوید که سنگ گرانیت آشپزخانه بر روی قیمت خانه تاثیر نمی گذارد .

حمام مهم است  - از آنجایی که ما از مقادیر صفر و یک برای تعیین وضعیت حمام استفاده کردیم ، می‌توانیم از ضریب مدل رگرسیون برای تخمین ارزشی که  یک حمام خوب بر روی قیمت خانه می گذارد استفاده کنیم.این مدل به ما می‌گوید که یک حمام خوب  $42,292 به قیمت خانه اضافه می‌کند .

خانه های بزرگتر از ارزش کم میکند - weka به ما می‌گویند که هر چقدر خانه ما بزرگ تر باشد قیمت فروش آن پایین تر می آید ؟این موضوع را می توانید توسط ضریب منفی در جلوی متغیر houseSize ببینید .این مدل به ما می‌گوید که هر متر مربع اضافی از مساحت خانه ، قیمت آن را $26 کم میکند ؟می‌دانم که احتمالاً این موضوع برای تان بی‌معنی به نظر می رسد .پس چطور آن را تفسیر کنیم ؟مساحت خانه متاسفانه یک متغیر مستقل نیست زیرا به متغیر اتاق خواب مرتبط است و این یعنی خانه بزرگتر به معنی  تعداد اتاق خواب های بیشتر است .پس مدل ما یک مدل بی عیب و نقص نیست .اما می توانیم آن را ترمیم کنیم .

به یاد بیاورید که در تب Preprocess ، می‌توانید ستونهایی را از دیتاست خود حذف کنید.

در مورد مثال ما ستون  houseSize را حذف کنید و یک مدل دیگر بسازید .این موضوع چطور در قیمت خانه من تأثیر می گذارد ؟این مدل جدید چه معنی ای می دهد ؟

نکته ای برای آمار دانان !!

این مدل از برخی نیازمندیهای یک مدل رگراسیون خطی تخطی می کند ، چراکه هر ستون به معنای واقعی مستقل نیست و ردیف های کافی داده وجود ندارد تا یک مدل دقیق را ایجاد کند. اما از آنجایی که هدف اصلی این آموزش معرفی weka  به عنوان یک ابزار داده کاوی  است, ما داده های این مثال را بسیار ساده در نظر گرفته ایم .



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

دانلود فایل نمونه

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

علاوه بر این این دیتاست ۳۸۹ ردیف داده دارد و بسیاری از نیازمندی های آماری که مدل قیمت خانه ما نداشت را دارد .از لحاظ تئوری این مورد باید یک مدل رگرسیون بسیار پیچیده تر باشد.

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


برای نمایش کدها کلیک کنید
                      

این مدل به نظر می‌آید که نسبت به داده های خانه که توضیح دادیم خیلی پیچیده تر باشد ، اما در واقع اینطور نیست. برای مثال خط اول مدل رگرسیون -2.2744 * cylinders=6,3,5,4 می‌گوید که اگر ماشین ۶ سیلندر باشد شما یک 1 را در این ستون قرار می دهید و اگر هشت سیلندر باشد 0 را قرار می دهید .بیایید یک  ردیف را برای مثال از این ۱۰ تا ۱۰۰ انتخاب کنیم مثلا ردیف ۱۰ و آن تعداد را به مدل رگرسیون خودمان بدهیم و ببینیم آیا خروجی مدل،  آن خروجی ای که در دیتاست به ما داده شده بود را تقریب می زند :


برای نمایش کدها کلیک کنید
                      

بنابراین مدل ما هنگامی که آن را با داده آزمایشی رندم تست کردیم  خیلی خوب از  عهده این کار برآمد،  که در واقع میزان مصرف بنزین برابر با 14.2 MPG  را برای ماشینی که مقدار مصرف واقعی آن 15 MPG بود را تخمین زد .





برچسب ها: