به نظر می آید شبیه سازی های شبکه عصبی یکی از پیشرفت های اخیر باشد . اگرچه این موضوع پیش از ظهور کامپیوتر ها بنیان گذاری شده و حداقل یک مانع بزرگ تاریخی و چندین دوره مختلف را پشت سر گذاشته است. خیلی از پیشرفت های مهم با تقلید ها و شبیه سازی های ساده و ارزان کامپیوتری بدست آمده است. در پی یک دوره ابتدائی اشتیاق و فعالیت در این زمینه ، یک دوره ی بی میلی و بدنامی راهم پشت سر گذاشته است .
در طول این دوره سرمایه گذاری و پشتیبانی حرفه ای از این موضوع در پایین ترین حد خود بود ، پیشرفت های مهمی به نسبت تحقیقات محدود در این زمینه صورت گرفت . که بدین وسیله پیشگامان قادر شدند تا به گسترش تکنولوژی متقاعد کننده ای بپردازند که خیلی برجسته تر از محدودیت هایی بود که توسط Minsky و Papert شناسانده شد. Minsky و Papert ،کتابی را در سال 1969 منتشر کردند که در آن عقیده عمومی راجع به میزان محرومیت شبکه های عصبی را در میان محققان معین کرده بود و بدین صورت این عقیده بدون تجزبه و تحلیل های بیشتر پذیرفته شد. هم اکنون ، زمینه تحقیق شبکه های عصبی از تجدید حیات علایق و متناطر با آن افزایش سرمایه گذاری لذت می برد .
اولین سلول عصبی مصنوعی در سال 1943 بوسیله یک neurophysiologist به نامWarren McCulloch و یک منطق دان به نام Walter Pits ساخته شد . اما محدودیتهای تکنولوژی در آن زمان اجازه کار بیشتر به آنها نداد.
یک شبکه عصبی مصنوعی (Artificial Neural Network (ANN)) ایده ای است برای پردازش اطلاعات که از سیستم عصبی زیستی الهام گرفته شده و مانند مغز به پردازش اطلاعات می پردازد . عنصر کلیدی این ایده ، ساختار جدید سیستم پردازش اطلاعات است. این سیستم از شمار زیادی عناصر پرداز شی فوق العاده بهم پیوسته تشکیل شده (neurons)که برای حل یک مسأله با هم هماهنگ عمل می کند.ANN ها ،نظیر انسانها ، با مثال یاد می گیرند . یک ANN برای انجام وظیفه های مشخص ، مانند شناسایی الگو ها و دسته بندی اطلاعات ، در طول یک پروسه یاد گیری ، تنظیم می شود . در سیستم های زیستی یاد گیری با تنظیماتی در اتصالات سیناپسی که بین اعصاب قرار دارد همراه است . این روش ANN ها هم می باشد.
شرکت نتفلیکس فرانسه در یک حرکت تبلیغاتی هوشمندانه، نام اکانت توئیتر شرکت را (به طور موقت) به «نکسفلیکس» تغییر داده است، چون مادر یکی از کاربران اسم شرکت را به این صورت تلفظ میکرده است.
نتفلیکس برای رفع تمسخر مادر با تغییر نام اکانت نوشته است که: «همیشه حق با مادران است»!
جک دورسی، برای چک کردن توئیتر و Square همزمان بهجای استفاده از لپتاپ از آیفون خود استفاده میکند. در همین حال طبق دستور جدید قرار است روی پستهای حذفشده کاربران، دلیل قانونی آن درج شود تا کاربران بفهمند توئیتر پست مذکور را حذف کرده است یا کاربران گزارش علیه آن دادهاند.
وی اخیراً در مصاحبهای گفت: بحث اصلی تمرکز است که میتواند با غیرفعال کردن نوتیفیکیشنها از یک اپلیکیشن در آنِ واحد استفاده کند.
وی زمانی که با همکاران خود جلسه دارد، موبایل را نیز کنار گذاشته تا روی موضوع موردبحث تمرکز داشته باشند.
دورسی در این زمینه میگوید: اگر قرار است 15 دقیقه مفید در جلسه داشته باشیم این 15 دقیقه بدون موبایل و لپتاپ میتواند واقعاً همان 15 دقیقه باشد!
Ex:
[1 2 3 4 5 6 7 8 9]
ans =
1 2 3 4 5 6 7 8 9
برای جدا کردن سطر ها باید مطابق زیر عمل کنیم :
[1 2 3 ;4 5 6 ;7 8 9]
ans =
1 2 3
4 5 6
7 8 9
نماد ; دو کاربرد دارد یکی در همینجا که سطر های یک ماتریس را به وسیله ی آن مشخص می کنیم و دیگری در برنامه ها است که اگر در آخر هر دستور از ; استفاده کنبم، نتیجه ی آن خط دستور نمایش داده نمی شود.
برای یافتن تعداد سطر و ستون ماتریس از تابع size استفاده میشود.
Size(a)
تعداد سطر و ستون ماتریس A را نمایش می دهد.
اگر به شکل زیر تعریف کنیم، تعداد سطر ها میردو در a و تعداد ستون ها میرود در b
[a b]=size(q)
برای فهمیدن تعداد سطر ها یا همان طول ماتریس از تابع length استفاده می کنیم:
Length(a)
تالع دترمینان:
Det(a)
برای استفاده از این تابع، ماتریس حتما باید مربعی باشد.
اگر مربعی نباشد با error زیر مواجه میشویم:
??? Error using ==> det
Matrix must be square
پنجره ی فرمان
هرگونه محاسبه مثل 4 عمل اصلی را در این پنجره میتوانیم مشاهده کنیم . هم چنین میتوانیم حاصل این اعمال را نیز در یک متغیر بریزیم.
Current directory
مسیر پیش فرض
برنامه ای را که مینویسیم و میخواهیم ذخیره کنیم ، در این مسیر پیش فرض ذخیره می شود . این مسیر قابل عوض کردن است
work space
تمام متغیر هایی که در command window معلوم کردیم را در این جا نشان می دهد.
Command history
تمام دستورات قبلی که اجرا کرده ایم در اینجا ذخیره می شود . همچنین میتوانیم با استفاده از کلید های جهت نما به دستورات قبلی برویم.
اگر در work space بر روی هر کدام از متغیر ها click کنیم، مشخصات آن را نشان میدهد . مثلا از جنس ماتریس است.
در این قسمت برخی دستورات ساده و مقدماتی گفته می شود :
Clc :
این دستور کل پنجره ی command window را پاک میکند .
اگر بخواهیم یکی از متغیر های موجود در work space را پاک کنیم، به صورت دستور زیر:
Clear a
متغیرa از work space پاک میشود .
Clear a b
متغیر a و متغیر b را پاک میکند.
پاک کردن کلیه ی متغیر ها از work space:
Clear all یا clear
در متلب حروف کوچک و بزرگ متفاوتند .
در متلب لازم به تعیین نوع متغیر و تعیین ابعاد آن نیست. هر متغیری که به آن عددی اختصاص یابد به عنوان یک متغیر حساب میشود.
شبکه های عصبی نسبت به کامپیوتر های معمولی مسیر متفاوتی را برای حل مسئله طی می کنند . کامپیوتر های معمولی یک مسیر الگوریتمی را استفاده می کنند به این معنی که کامپیوتر یک مجموعه از دستورالعمل ها را به قصد حل مسئله پی میگیرد. بدون اینکه، قدم های مخصوصی که کامپیوتر نیاز به طی کردن دارد، شناخته شده باشند کامپیوتر قادر به حل مسئله نیست. این حقیقت قابلیت حل مسئله ی کامپیوتر های معمولی را به مسائلی ،محدود می کند که ما قادر به درک آنها هستیم و می دانیم چگونه حل می شوند. اما اگر کامپیوتر ها می توانستند کار هایی را انجام دهند که ما دقیقا نمی دانیم چگونه انجام دهیم ، خیلی پر فایده تر بودن
شبکه های عصبی اطلاعات را به روشی مشابه با کاری که مغز انسان انجام می دهد پردازش می کنند. آنها از تعداد زیادی از عناصر پردازشی(سلول عصبی) که فوق العاده بهم پیوسته اند تشکیل شده است که این عناصر به صورت موازی باهم برای حل یک مسئله مشخص کار می کنند .شبکه های عصبی با مثال کار میکنند و نمی توان آنها را برای انجام یک وظیفه خاص برنامه ریزی کرد مثال ها می بایست با دقت انتخاب شوند در غیر این صورت زمان سودمند، تلف می شود و یا حتی بدتر از این شبکه ممکن است نا درست کار کند. امتیاز شبکه عصبی این است که خودش کشف می کند که چگونه مسئله را حل کند ، عملکرد آن غیر قابل پیشگویی است.از طرف دیگر ، کامپیوتر های معمولی از یک مسیر مشخص برای حل یک مسئله استفاده می کنند. راه حلی که مسئله از آن طریق حل می شود باید از قبل شناخته شود و به صورت دستورات کوتاه و غیر مبهمی شرح داده شود. این دستورات سپس به زبان های برنامه نویسی سطح بالا برگردانده می شود و بعد از آن به کدهایی که کامپیوتر قادر به درک آنها است تبدیل می شود. به طور کلی این ماشین ها قابل پیشگویی هستند و اگر چیزی به خطا انجام شود به یک اشتباه سخت افزاری یا نرم افزاری بر میگردد.
شبکه های عصبی و کامپیوتر های معمولی با هم در حال رقابت نیستند بلکه کامل کننده یکدیگرند. وظایفی وجود دارد که بیشتر مناسب روش های الگوریتمی هستند نظیر عملیات محاسباتی و وظایفی نیز وجود دارد که بیشتر مناسب شبکه های عصبی هستند . حتی فراتر از این ، مسائلی وجود دارد که نیازمند به سیستمی است که از ترکیب هر دو روش بدست می آید (بطور معمول کامپیوتر های معمولی برای نظارت بر شبکه های عصبی به کار گرفته می شوند ) به این قصد که بیشترین کارایی بدست آید.شبکه های عصبی معجزه نمی کنند اما اگر خردمندانه به کار گرفته شوند نتایج شگفت آوری را خلق میکنند.
مزیتهای دیگر آن شامل موارد زیر می شود:
یادگیری انطباق پذیر: قابلیت یاد گیری نحوه انجام وظایف بر پایه اطلاعات داده شده برای تمرین و تجربه های مقدماتی .
سازماندهی توسط خود: یک ANN می تواند سازماندهی یا ارائه اش را ، برای اطلاعاتی که در طول دوره یادگیری دریافت می کند، خودش ایجاد کند.
عملکرد بهنگام: محاسبات ANN می تواند بصورت موازی انجام شود، و سخت افزارهای مخصوصی طراحی و ساخته شده است که می تواند از این قابلیت استفاده کند.
تحمل اشتباه بدون ایجاد وقفه در هنگام کد گذاری اطلاعات : خرابی جزئی یک شبکه منجر به تنزل کارایی متناظر با آن می شود اگر چه تعدادی از قابلیت های شبکه ممکن است حتی با خسارت بزرگی هم باقی بماند
دسته بندی : آموزشی متلب
حالا مثال دیگری مینویسیم که در آن دنبال سکّههایی میگردیم که مربوط به سالهای قبل از ۱۹۸۶ هستند (قبل از تولّد من). وقتی این سکّهها را پیدا کردیم جنس آنها، سال ساخت و کشور سازندهشان را چاپ میکنیم.
فایلی به اسم exam2.awk را به شکل زیر میسازیم.
{ if ($3 < 1986) printf("%s t%s t%sn", $1, $3, $4); }
همانطور که میبینید عبارت /~~~/ دیگر وجود ندارد و این به آن معنی است که دستورات داخل آکولاد برای همهی خطها اجرا شوند. دستور if هم خیلی شبیه C است. در آرگومانهای دستور printf کاراکتر t معرّف TAB است.
حالا برنامه را مانند مثال اوّل اجرا میکنیم و نتیجه به این شکل خواهد بود.
gold 1908 Austria-Hungary
silver 1981 USA
gold 1984 Switzerland
gold 1979 RSA
gold 1981 RSA
در آخر یک مثال پیچیدهتر میزنیم. برنامهای مینویسیم که با فرض اینکه هر اونس طلا ۴۸۵ دلار و هر اونس نقره ۱۶ دلار است، ارزش و وزن سکّههای طلا و نقره و ارزش و وزن کل مجموعه را چاپ کند.
فایلی به نام exam3.awk را به این شکل بسازید.
/gold/ { goldsNum++; goldsWt += $2 }
/silver/ { silversNum++; silversWt += $2 }
END {
goldsVal = goldsWt * 485;
silversVal = silversWt * 16;
totalNum = goldsNum + silversNum;
totalVal = goldsVal + silversVal;
printf ("nSummary data for coin collection:nn");
printf (" Gold pieces: %dn", goldsNum);
printf (" Weight of gold pieces: %.2fn", goldsWt);
printf (" Value of gold pieces: %.2fnn", goldsVal);
printf (" Silver pieces: %dn", silversNum);
printf (" Weight of silver pieces: %.2fn", silversWt);
printf (" Value of silver pieces: %.2fnn", silversVal);
printf (" Total number of pieces: %dn", totalNum);
printf (" Value of collection: %.2fnn", totalVal);
حالا میخواهیم چند تا برنامه بنویسیم که پردازشهایی را روی این فایل انجام بدهند. برای اوّلین مثال برنامهی زیر را در فایل exam1.awk مینویسیم.
/gold/ { printf("%s\n", $0); }
این برنامه به مفسّر میگوید اوّل در فایل دنبال عبارت gold بگرد بعد در هر خطی که آن را پیدا کردی دستورات داخل آکولاد را برای آن خط اجرا کن. در این مثال مفسّر در همان خط اول gold را پیدا میکند بعد تمام کلمات آن خط را که با فاصله از هم جدا شدهاند در متغیّرهای $1 و $2 و . میریزد و کلّ خط را هم در متغیّر $0 میریزد. در این مثال در خطّ اوّل $1=”gold”، $2=”1”، $3=”1986” و حالا برای خطهایی که حاوی gold هستند دستور printf اجرا میشود. عملکرد دستور printf و همچنین طرز استفاده از آن درست شبیه زبان C است که من اینجا تکرارش نمیکنم.
پس نتیجتاً این برنامه هر خطی را که توش gold پیدا کند کلاً چاپ میکند. حالا میرسیم به طرز اجرای این برنامه در لینوکس. اوّل فایلهای coins.txt و exam1.awk را درست کنید و سپس این عبارت را در خطّ فرمان لینوکس تایپ کنید.
awk –f exam1.awk coins.txt
چیزی که به عنوان خروجی چاپ خواهد شد این خواهد بود.
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
gold 1 1984 Switzerland ingot
gold 1 1979 RSA Krugerrand
gold 0.5 1981 RSA Krugerrand
gold 0.1 1986 PRC Panda
gold 0.25 1986 USA Liberty 5-dollar piece
gold 0.25 1987 USA Constitution 5-dollar piece
gold 1 1988 Canada Maple Leaf
Awk (بخوانید آوک) یک زبان برنامهنویسی است که روی پردازش متن متمرکز شده (text-processing programming language) و طوری طراحی شده است که امکانات زیادی برای تکهتکه کردن متن (parsing) و پردازش اطّلاعات بدست آمده دارد. برنامههایی که تحت این زبان هستند توسّط یک مفسّر (interpreter) اجرا میشوند که باید قبلاً روی سیستم نصب شده باشد. در اغلب لینوکسها دستور awk مفسّریست که فایلهای تحت این زبان را اجرا میکند.
فرض کنید که شما یک فایل به نام coins.txt دارید که در آن لیست سکّههایی که تا به حال جمع کردهاید را نگه میدارید. فرمت این فایل به این شکل است که اول جنس فلز سکّهها را نوشتهاید، بعد وزنشان به اونس، بعد سال ساخته شدنشان، بعدش اینکه سکّه متعلّق به چه کشوری است و در آخر هم توضیحات. اینجا یک مثال برای فایل coins.txtداریم.
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot
gold 1 1979 RSA Krugerrand
gold 0.5 1981 RSA Krugerrand
gold 0.1 1986 PRC Panda
silver 1 1986 USA Liberty dollar
gold 0.25 1986 USA Liberty 5-dollar piece
silver 0.5 1986 USA Liberty 50-cent piece
silver 1 1987 USA Constitution dollar
gold 0.25 1987 USA Constitution 5-dollar piece
gold 1 1988 Canada Maple Leaf
پیش بینی در داده کاوی مانند دسته بندی یا تخمین است که بسیاری از پروژه متلب در بحث داده کاوی به این موضوع مربوط می شود با این تفاوت که اطلاعات ، مطابق برخی از رفتارهای پیش بینی شدهی آینده یا ارقام تخمین زده ی آینده دستهبندی می شوند. در عملِ پیش بینی ، تنها روش برای بررسی صحت دسته بندی ، انتظار و دیدن آینده است.
هر یک از تکنیک های استفاده شده در دستهبندی و تخمین را می توان برای استفاده در پیش بینی تطبیق داد. جایی که متغیری که باید پیش بینی شود از قبل معلوم است و دادههای پیشین برای آن وجود دارد ؛ از دادههای پیشین برای تهیه ی یک مدل که بیانگر رفتار مشاهده شده ی کنونی است استفاده میشود ؛ وقتی این مدل برای ورودی های کنونی به کار رفت ؛ نتیجه ی کار ، پیش بینی رفتار آینده خواهد بود. مثال هایی از پیش بینی از این قرارند :
* پیش بینی اینکه کدام مشتریان در طول 6 ماه آینده ، بازار محصول ما را ترک خواهند کرد.
* پیش بینی اینکه کدام مشترکین تلفن ، متقاضی خدمات ویژه مانند مکالمه ی سه جانبه یا پیغام گیر خواهند شد.
بیشتر تکینک های دادهکاوی در صورت وجود دادههای مناسب ، برای استفاده در پیش بینی مناسبند. انتخاب تکنیک به ماهیت دادههای ورودی و نوع متغیری که باید پیش بینی شود بستگی دارد.
تخمین ، با نتایج مجزایی که با ارقام پیوسته نشان داده شده اند ، سروکار دارد. در تخمین ، دادههای ورودی در قالب متغیرهای ورودی مختلف به سیستم داده میشود و متغیرهای خروجی آن رقمی چون درآمد یا تراز کارت اعتباری میباشد. در عمل ، تخمین اغلب برای انجام دستهبندی استفاده میشود. یک شرکت کارت های اعتباری که مایل است یک فضای تبلیغاتی را در پاکت های صورت حساب به یک تولید کننده ی پوتین اسکی بد ، باید مدل دستهبندی تهیه کند که همه ی دارندگان کارت ها را در یکی از دو دسته ی اسکی باز یا غیر اسکی باز قرار دهد. روش دیگر ایجاد مدل تخمین این است که به هر دارندهی کارت ، یک امتیاز تمایل به اسکی تخصیص می دهد ؛ این ارقام میتواند صفر و یک باشد که نشانگر احتمال تخمین زده شده برای اسکی باز بودن یا نبودن دارندهی کارت است. عمل دستهبندی ، اکنون به ایجاد امتیازی آستانهای منجر میگردد. هر کسی که امتیازی بیشتر یا مساوی با امتیاز آستانه داشته باشد به عنوان اسکی باز قلمداد میشود و هر کسی که امتیازی کمتر از امتیاز مورد نظر داشته باشد اسکی باز محسوب نمی گردد. روش تخمین فواید زیادی دارد که مهم ترین آنها این است که می توان اطلاعات را مطابق تخمین به دست آمده مرتب نمود. برای پی بردن به اهمیت آن فرض کنید که شرکت تولید پوتین های اسکی ، برای ارسال پانصد هزار آگهی تبلیغاتی محصول جدید خود بودجه ریزی نموده است. فرض کنید از روش دستهبندی استفاده شده و یک و نیم میلیون نفر اسکی باز تعیین شدهاند. پس به راحتی می توان به صورت تصادفی ، تبلیغات را برای پانصد هزار نفر منتخب از آن افراد ارسال نمود ؛ در حالی که اگر مدل تخمین ، امتیاز تمایل به اسکی را برای کلیه افراد تعیین نماید شایسته است که تبلیغات را برای پانصد هزار نفر از محتملترین کاندیداها فرستاد. پر واضح است که احتمال پاسخ گیری از ارسال تبلیغات بر اساس مدل تخمین بسیار بیشتر از ارسال تصادفی تبلیغات میباشد. برخی دیگر از مثال های تخمین در ادامه آمده است ؛ تخمین تعداد فرزندان در یک خانواده ، تخمین درآمد کل یک خانواده ، تخمین دوره عمر یک مشتری ، تخمین احتمال پاسخ فردی خاص به یک پیشنهاد بیمه ی عمر
مدل های رگرسیون و شبکه های عصبی از جمله تکنیک های مناسب دادهکاوی برای تخمین می باشند.
به نظر می رسد دسته بندی که یکی از معمول ترین کارکردهای دادهکاوی است ، یکی از واجبات بشر باشد. تمامی خلقت خداوند بر پایه دستهبندی ایجاد گردیده است. ما برای شناخت و برقراری رابطه درباره ی دنیا ، به طور مداوم دسته بندی ، طبقه بندی و درجه بندی میکنیم. ما موجودات زنده را به شاخه ها و گونه ها ، مواد را به عناصر و حیوانات و انسانها را به نژادها تقسیم میکنیم.
دسته بندی شامل بررسی ویژگی های یک شئ جدید و تخصیص آن به یکی از مجموعههای از قبل تعیین شده میباشد. عمل دسته بندی با تعریف درستی از دسته ها و مجموعه ای از ویژگیها که حاوی موارد از پیش دسته بندی شده هستند مشخص میگردد ؛ این عمل شامل ساختن مدلی است که بتوان از آن برای دسته بندی کردن دادههای دسته بندی نشده ، استفاده نمود. اشیائی که باید دسته بندی شوند ، معمولاً به وسیله ی اطلاعاتی در جدول پایگاه دادهها یا یک فایل ارائه می شوند. عمل دسته بندی شامل افزودن ستون جدیدی با کد دسته بندی خاصی است. مثال هایی از دسته بندی در زیر ارائه شده است دسته بندی در داده کاوی یکی از اصلی ترین ویژگی های در انجام پروژه متلب می باشد که به در زیر به آن اشاره شده است
* دسته بندی متقاضیان وام و اعتبار به عنوان کم خطر ، متوسط و پرخطر
* انتخاب محتویات یک صفحه ی وب برای قرار دادن در شبکه ی اینترنت
* تعیین شماره تلفن های متصل به دستگاه های نمابر
* تشخیص مدعیان غیر واقعی دریافت خسارت از بیمه
داده کاوی با همه ی عظمت و بزرگی خود که امروزه در تمامی موضوعات جهان ورود پیدا کرده است شامل شش عمل و وظیفه مهم است که می توان بسیاری از مسائل محیط اطراف را در قالب یکی از این شش عمل و وظیفه ی زیر گنجاند :
1) دستهبندی 2) تخمین 3) پیش بینی 4) گروه بندی شباهت 5) خوشهبندی 6) توصیف و نمایه سازی
سه مورد اول همگی داده کاوی هدایت شده هستند که هدف آنها یافتن ارزش یک متغیر هدف خاص است. گروه بندی شباهت و خوشه بندی جزو داده کاوی غیر هدایت شده هستند که در آن هدف ، یافتن ساختار پنهان درون دادهها بدون توجه به یک متغیر هدف خاص است. نمایه سازی عملی توصیفی است که می تواند هم هدایت شده و هم غیر هدایت شده باشد.
برای آن که داده کاوی موثر باشد ، سیستم داده کاوی باید قادر به ارائه و نمایش الگوهای کشف شده در اشکال مختلف مانند قواعد ، جداول ، نمودارهای مختلف ، درخت های تصمیم و سایر نمایش های تصویری باشد. امکان به تصویر کشیدن الگوهای کشف شده می تواند به کاربران با پس زمینه های مختلف برای شناسایی الگوهای مورد علاقه و هدایت سیستم به اکتشاف بیشتر کمک کند. استفاده از سلسله مراتب مفاهیم نیز بسیار مفید است و امکان نمایش دادهها به صورت مفاهیم سطح بالاتر ممکن است برای کاربران بیش از قواعد ارائه شده به صورت مفاهیم سطح پایین قابل درک باشد اصلی کاربرد ارزیابی تصاویر در انجام پروژه های داده کاوی می باشد
درباره این سایت