الگوریتم
(اَ گُ ) [ فر. ] (اِ. ) فرایندهای متناهی برای حل نوعی از مسائل ، خصوصاً روشی که در آن به طور متوالی یک فرایند پایه برای حل مسئله تکرار شود.
فرهنگستان زبان و ادب
دانشنامه عمومی
الگوریتم (نسبت: الگوریتمی، خوارزمیک) یا خوارزمی مجموعه ای متناهی از دستورالعمل ها است، که به ترتیب خاصی اجرا می شوند و مسئله ای را حل می کنند. به عبارت دیگر یک الگوریتم، روشی گام به گام برای حل مسئله است. شیوه محاسبه معدل در مدرسه، یکی از نمونه های الگوریتم است.du scheisse du huso
ورودی:
تمام الگوریتم ها باید شرایط و معیارهای زیر را دارا باشند:
یک الگوریتم باید هیچ یا چندین پارامتر را به عنوان ورودی بپذیرد؛
الگوریتم بایستی حداقل یک کمیت به عنوان خروجی (نتیجه عملیات) تولید کند؛
الگوریتم (سی++). الگوریتم های استاندارد سی++ توابعی همه منظوره هستند که یک یا چند بازه را به شکل Iterator دریافت می کنند و عملیات های متفاوتی مثل مرتب سازی، جستجو و . را بر روی آن بازه ها انجام می دهند.
در کتابخانه استاندارد سی++ در سرآیند حدود ۸۰ الگوریتم متفاوت وجود دارد.الگوریتم ها چگونه اجرا می شوند؟
این دسته از الگوریتم های یک یا چند iterator را به عنوان ورودی دریافت می کنند و بدون تغییر iteratorهای ورودی صرفاً یک مقدار را بر می گردانند.مثل std::find و std::search و std::count و std::for_eachمثال:
# include # include int main() < std::vectorarr = < 2, 5, 7, 2, 3, 4, 4, 5, 2 >; std::cout الگوریتم های متوالی تغییر دهنده ورودیویرایشاین دسته از الگوریتم ها یک یا چند بازه را به شکل Iterator دریافت می کنند و آن ها را بسته به نوع الگوریتم تغییر می دهند. مثل std::remove , std::reverse , std::fill . مثال :
دانشنامه آزاد فارسی
اَلگوریتم (algorithm)
در علوم رایانه و ریاضیات، فرآیند اجرای مجموعه ای از عملیات و دستورات مشخص، برای رسیدن به هدفی از پیش تعیین شده یا حل مسئله. این فرآیند معمولاً با شرط توقف در مرحله ای خاص همراه است. فرآیند پردازش الگوریتم بر روی ورودی و استخراج نتیجۀ حاصل را محاسبه می نامند. الگوریتم تقسیم، که معمولاً چندمرحله ای است، و الگوریتم اقلیدس، برای تعیین بزرگ ترین مقسوم علیه مشترک دو عدد، نمونه های معروف و ابتدایی الگوریتم در ریاضیات اند. در علوم رایانه، این اصطلاح به سلسلۀ عملیاتی اطلاق می شود که برنامه ای خاص صورت می دهد. نمایش بصری الگوریتم را روندنما یا فلوچارت می نامند. کلمۀ الگوریتم برگرفته از نام ریاضی دان ایرانیِ قرن ۳ق، محمد بن موسی خوارزمی، است.
الگوریتم چیست؟ + مثال کاربردی
در این نوشته ما به صورت کامل با الگوریتم و نحوه ایجاد یک الگوریتم آشنا می شویم. در خصوص اهمیت آن در برنامه نویسی صحبت می کنیم و می بینیم که اصلا باید الگوریتم رو به عنوان یک برنامه نویس یاد بگیریم یا خیر. این نوشته برای کسانی که هیچ دانش تخصصی در خصوص الگوریتم ندارند و یا نمی ندانند که اصلا الگوریتم چیست کاربرد دارد.
در این نوشته همچنین ما اقدام به ارائه روش های حل یک مسئله با الگوریتم و معرفی معروف ترین الگوریتم های جهان که هروزه با آن ها سر و کار داریم می کنیم. پس با ما همراه باشید.
الگوریتم چیست
بر اساس تعریف ویکیپدیا از الگوریتم: الگوریتم روشی برای حل یک مسئله است. مثالا نحوه محاصبه معدل در مدرسه ها یک الگوریتم ساده است. از دیگر الگوریتم هایی که هروزه با آن سر و کار داریم به عنوان یک فرد عادی می توان به نرم افزار ویز یا گوگل مپ اشاره کرد که آدرس مبدا و مقصد رو بهش می دهیم و کوتاه ترین مسیر رو به ما می دهد.
اگر من بخواهم به زبان ساده بگویم. الگوریتم یعنی همان الگو! الگویی برای حل یک بازه مشخص از مسئله ها. چیزی که داخل الگوریتم همیشه مطرح است این موضع است که ما می توانیم برای هر مسئله چند الگو تعریف کنیم که همه آن ها به درستی مشکل ما را حل می کنند اما در این میان آن الگوریتیمی را انتخاب می کنیم که از همه سریع تر مشکل را حل می کند.
بنا بر این مسئله سرعت در الگوریتم خیلی خیلی اهمیت دارد.
ما در دنیای واقعی از تعداد بی شماری الگوریتم بی آن که بدانیم استفاده می کنیم. در این خصوص باید بگویم که بسیاری از راهبرد های جنگی و راه های برون رفت از یک موقعیت خاص در زندگی واقعی همان الگوریتم است. چینش بازیکنان بازی فوتبال نیز یک الگوریتم است.
با این حال امروزه این موضوع جا افتاده که الگوریتم تنها در حوزه برنامه نویسی فعالیت می کند، در صورتی که اینطور نیست اما ما در این نوشته سعی می کنیم به همه ابعاد تعریف الگوریتم بپردازیم و روش های ایجاد یک الگوریتم به همراه مفاهیم الگوریتم را به شما معرفی کنیم.
همچنین این سوال دیرینه که آیا باید برای یادگیری برنامه نویسی الگوریتم بلد شد را به شما پاسخ می دهیم.
مفاهیم الگوریتم
بیایید کمی با مفاهیمی که در طراحی الگوریتم هستند آشنا شویم و به چیستی آن ها بپردازیم.
ببینید هر الگوریتم به عنوان یک راهکار گام به گام و مرحله به مرحله تعریف می شود.
یک یا چند ورودی دریافت می کند و هر ورودی بر اساس مراحلی که داخل خود الگوریتم تعریف شده یک خروجی به ما می دهد.
در داخل الگوریتم ما چیزی به نام یا نداریم. یعنی الگوریتم باید قطعیت داشته باشد. نمی توانیم بگوییم که اگر ورودی ما ۲ بود بیاد این کارو انجام بده اگر ۳ بود بیا اون کارو انجام بده و…. باید بدانید گرچه چنین عملیات هایی در خود طراحی الگوریتم صورت می پذیرد اما به روشی دیگر، به این صورت که در صورتی که نیاز شد ما بتونیم برای ۴ و ۵ هم یه حرکتی متفاوت بزنیم.
از دیگر مفاهیمی که داخل یک الگوریتم مطرح هست مرتبه اجرایی آن می باشد. در صورتی که برنامه نویسی کار کرده اید یا حداقل با مبحث حلقه ها در برنامه نویسی آشنایی دارید می توانید موضوع زیر را درک کنید.
ببینید همانطور که گفته شد ما برای حل یک مسئله می توانیم با استفاده از روش های طراحی الگوریتم، الگوریتم های متنوعی بسازیم. به طور مثال برای مرتب سازی دانش آموزان یک مدرسه از قد بلند به کوتاه ما می توانیم چند الگوریتم پیاده سازی کنیم که قد دانش آموزان آن مدرسه را بگیرد و از بزرگ به کوچک یا بلعکس مرتب کند.
در این میان ما مثالا برای این کار ۳ الگوریتم ساخته ایم(لزومی نداره بسازید. چنین الگوریتم هایی تعریف شده اند و اگر الگوریتم الگوریتم ها چگونه اجرا می شوند؟ مرتب سازی رو داخل گوگل سرچ کنید با اونا آشنا می شوید). در بین این الگوریتم ها در نهایت اونی بهتره که سریع در این عملیات مرتب سازی رو انجام میده. به این حداکثر مدت زمانی که الگوریتم ما بر اساس تعداد وردی خود اقدام به پردازش می کند و در نهایت خروجی رو به ما می دهد مرتبه اجرایی یک الگوریتم می گویند که هر چی زمان پردازش آن کمتر باشه بهتره.
به طور مثال شما می خواهید از تهران به شیراز بروید. مسلما از اون مسیری می روید که کوتاه تره و کم ترافیک تر هست.
یکی دیگر از مفاهیمی که داخل الگوریتم مطرح است کد نمونه است.
کد نمونه یعنی چه؟ ببینید معمولا زبان های برنامه نویسی ساختار و ویژگی های مشترک زیادی دارند اما کاربرد آن ها و همچنین نحوه اجرا و نوشتن دستورات آن ها متفاوت است اما می توان از یک الگوریتم در تمامی آن ها به درستی استفاده نمود. در این میان ما چیزی نام کد نمونه الگوریتم داریم که عملا یک حال کلی از نحوه استقرار الگوریتم در زبان برنامه نویسی رو به ما نشون میده.
فلوچارت
باید بدانید که الگوریتم ها دارای پیچیدگی های خاص خود می باشند(حقیقا وقتی که وارد این حوزه بشین متوجه می شوید). از این رو معمولا قبل از دست به کار شدن و نوشتن کد سمپل یا نمونه کد میان نحوه کار الگوریتم رو به صورت نمایشی در میارن و قسمت های مختلفش رو می سازند. باید بدایند که این رسم کردن شکل ظاهری برای درک نحوه کارکرد یک الگوریتم بسیار کارامد هست و خیلی میتونه کار رو ساده و مرتب و منظم کنه.
اما فلوچارت هم دقیقا مانند خود مبحث طراحی الگوریتم اصول و مبانی خاصی داره که در یک نوشته دیگر در آینده در خصوص اون توضیح می دهم و اون رو اینجا لینک می کنم
آیا برای یادگیری برنامه نویسی باید الگوریتم بلد باشیم یا بلعکس؟
بسیاری از دوستان به خصوص کسانی که رشته دانشگاهی آنان در حوزه های کامپیوتری بوده از من می پرسند که من می خواهم برنامه نویس شوم اما واقعا دوست ندارم که الگوریتم یاد بگیریم یا الگوریتم خیلی سخته و از این جور حرفا.
بای بدونید که اول الگوریتم به خصوص طراحی الگوریتم برای حل یک مسئله واقعا می تونه کار خیلی پیچیده و زمان بری باشه. اما اگر شما بخواهید در حوزه برنامه نویسی فعالیت کنید و از اون کسب درامد کنید واقعا لزومی نداره که خیلی به مبحث الگوریتم مسلط باشید و یا بلد باشید الگوریتم طراحی کنید.
به طور کلی ما با استفاده از زبان های برنامه نویسی الگوریتمی که یک (طراح الگوریتم ساخته) رو برای فهموندن به کامپیوتر پیاده سازی می کنیم. از ان رو ما در بسیاری از مواقع نیاز داریم الگوریم رو پیاده سازی کنیم که خیلی ساده است نه اینکه اونو طراحی کنیم.
دقت کنید که طراح الگوریتم خودش یه عنوان شغلی. این فرد باید به حوزه طراحی الگوریتم و کمی هم برنامه نویسی مسلط باشه اما برنامه نویس نیز می بایست کمی به حوزه طراحی الگوریتم و خود مبحث برنامه نویسیش نیز مسلط باشه.
از این رو پیشنهاد من اینه که برنامه نویسی رو یاد بگیرید اما کمی هم در خصوص الگوریتم و پیاده سازی آن و مفاهیم دیگر اون اطلاعات کسب کنید.
آیا الگوریتم همان هوش مصنوعی است؟
بسیاری از افراد فکر می کنند که الگوریتم همان هوش مصنوعی است. یعنی مثالا موتور گفتار به نوشتار گوگل یا بازی های رایانه ای که انجام می دهید و هم محاصبه آمار اینستاگرام همشون یکی هستند.
ببینید همانطور که گفته شد داخل الگوریتم ما قطعیت تایین می کنیم. یعنی اینکه می گیم این اتفاق باید به درستی رخ بده واسه همین چیزی به اسم خطا داخلش وجود نداره. اما اگر از نرم افزار گفتار و به نوشتار گوگل یا نرم افزار هایی اینچنینی استفاده کرده باشید می بینید که گاها خطا دارند.
در طراحی الگوریتم ما بیشتر با محاصبات سر و کار داریم و در هوش مصنوعی و یادگیری ماشین ما با مدل ها و احتمالات سر و کار داریم که این موضوع این دوتا مبحث رو کاملا از هم جدا می کنه.
تفکر الگوریتمی چیست؟
تفکر الگوریتمی چیست؟ در این مقاله برآنیم تا در مورد تفکر الگوریتمی توضیح دهیم. با ما همراه باشید.
فهرست مطالب و عناوین
تفکر الگوریتمی چیست؟
این مقاله به این پرسش پاسخ می دهد که: “تفکر الگوریتمی چیست؟” بر اساس توضیح دانشنامه بریتانیکا ، الگوریتم یک روش سیستماتیک است که در تعداد محدودی از مراحل ، پاسخ به یک سوال را داده یا راه حل یک مشکل را بنیان مینهد. الگوریتمها به طور کلی برای تصمیمگیری به دانش منطق تکیه میکنند. اما منطق و الگوریتم یک اصطلاح واحد نیستند.
الگوریتمها به تعیین یک کار در چند مرحله کمک میکنند. با صحبت از منطق ، انسانها می توانند الگوریتمها را بطور شهودی درک کنند. و در عین حال ، علم معمولاً نحوه کار الگوریتمها را مشخص میکند. الگوریتمها در رشته ها و برنامههای مختلف استفاده میشوند. در علوم کامپیوتر برای ارائه ایدهها به کامپیوتر ، از الگوریتم استفاده می شود. حتی فرآیند آشپزی نیز یک الگوریتم است.
الگوریتمها معمولاً عملیات روی دادهها را انجام میدهند. الگوریتمها میتوانند اندازههای مختلفی داشته باشند که کم و بیش پیچیده هستند.
ویژگیهای الگوریتم
الگوریتم دارای چندین ویژگی است:
هر مرحله از الگوریتم به طور جداگانه انجام میشود. مگر اینکه مراحل قبلی الگوریتمها ذخیره نشده باشند ، که باید با استفاده از متغیرها ذخیره شوند. تعریف فرآیند متغیر در الگوریتم ، تخصیص نامیده میشود.
عملکرد الگوریتم در تفکر الگوریتمی چیست؟
برای این که بتوانیم تفکر الگوریتمی را پیادهسازی کنیم، بایستی عملکرد الگوریتم را بررسی کنیم. عملکرد الگوریتم را میتوان به دو روش زیر بررسی کرد:
تکرار
تکرار راهی است برای کنترل اجرای الگوریتم با استفاده از متغیرها ، هنگامی که هر مجموعه از مراحل بارها و بارها تکرار میشود. ذکر این نکته ضروری است که متغیر در هر تکرار، تغییر میکند. و شرط پایان تکرار باید مشخص شود.
انتخاب
انتخاب راه دیگری برای کنترل اجرای الگوریتم است. فرآیند انتخاب ، مقدار فعلی متغیر را در صورتی که به شرایط خاصی تعلق دارد ، آزمایش میکند و تصمیم خاصی میگیرد.
یک عامل مهم در ایجاد یک الگوریتم ترتیب روش است که ترتیب انجام هر قسمت از الگوریتم را مشخص میکند.
در این مقاله درباره اینکه تفکر الگوریتمی چیست صحبت کردیم. با تشکر از مطالعه شما.
درخت تصمیم چیست و چگونه از الگوريتم هاي آن وضعیت آینده را پیشبینی کنیم
اگر میخواهید تا تصمیم پیچیدهای بگیرید و تصمیم دارید تا مسائل را برای خودتان به بخشهای کوچکتری تقسیم کرده تا به شکل بهتری قادر به حل آنها شوید، میتوانید از درخت تصمیم استفاده کنید. درخت تصمیم نقشهای از نتایج احتمالی یکسری از انتخابها متوالی به منظور کوچک شدن ونهایتا حل صورت مسئله می باشد.
مقدمه اي بر درخت تصميم
یکی از پرکاربردترین الگوریتمهای دادهکاوی، الگوریتم درخت تصمیم است. در دادهکاوی، درخت تصمیم یک مدل پیشبینی کننده است به طوری که میتواند برای هر دو مدل رگرسیون و طبقهای مورد استفاده قرار گیرد. زمانی که درخت برای کارهای طبقهبندی استفاده میشود، به عنوان درخت طبقهبندی (Classification Tree) شناخته میشود و هنگامی که برای فعالیتهای رگرسیونی به کار میرود درخت رگرسیون (Regression Decision Tree)نامیده میشود.
درخت تصمیم چگونه کار میکند؟
کسانی که بازی بیست سوالی انجام داده اند به سادگی میتوانند درخت تصمیم گیری را درک کنند. در این بازی یک نفر موضوع خاصی را در ذهن خود در نظر میگیرد و شخص دیگری سعی میکند با پرسش تعدادی سوال که جواب آنها بلی و خیر است موضوع مورد نظر شخص اول را شناسایی کند. در درخت تصمیم(decision tree ) نیز تعدادی پرسش وجود دارد و با مشخص شدن پاسخ هر سوال یک سوال دیگر پرسیده میشود. اگر سوالها درست و سنجیده پرسیده شوند، تعداد کمی از پرسشها برای پیش بینی رکورد جدید کافی می باشد.
عملکرد درخت تصمیم به این صورت است که یک گره ریشه در بالای آن قرار دارد و برگ های آن در پایین می باشند. یک رکورد در گره ریشه وارد میشود و در این گره یک تست صورت می گیرد تا معلوم شود که این رکورد به کدام یک از گره های فرزند (شاخه پایینتر) خواهد رفت.
درخت الگوریتم ها چگونه اجرا می شوند؟ تصمیم از تعدادی گره و شاخه تشکیل شده است که در آن نمونه ها را به نحوی طبقه بندی میکند که از ریشه به سمت پایین رشد می کند و در نهایت به گره های برگ م یرسد. هر گره داخلی یا غیر برگ با یک ویژگی مشخص می شود. این ویژگی سوالی را در رابطه با مثال ورودی مطرح می کند. در هر گره داخلی به تعداد جواب های ممکن با این سوال شاخه وجود دارد که هریک با مقدار آن جواب مشخص میشوند. برگهای این درخت با یک کلاس و یا یک طبقه از جوابها مشخص میشوند.
مزایا و معایب Decision Tree
- درخت تصمیم بدیهی است و نیاز به توصیف ندارد.
- هر دو مشخصه اسمی و عددی را میتواند مورد توجه قرار دهد.
- نمایش درخت تصمیم به اندازه کافی برای نشان دادن هرگونه طبقهبندی غنی است.
- مجموعه دادههایی که ممکن است دارای خطا باشند را در نظر میگیرد.
- مجموعه دادههایی که دارای مقادیر مفقوده هستند را شامل میشود.
- درختهای تصمیم روشهای ناپارامتری را نیز مورد توجه قرار میدهد.
در میان متخصصین در صنایع مختلف، مدیران و حتی دولوپرها، درختهای تصمیم محبوباند چرا که درک آنها آسان بوده و به دیتای خیلی پیچیده و دقیقی احتیاج ندارند، میتوان در صورت لزوم گزینههای جدیدی را به آنها اضافه کرد، در انتخاب و پیدا کردن بهترین گزینه از میان گزینههای مختلف کارآمد هستند و همچنین با ابزارهای تصمیمگیری دیگر به خوبی سازگاری دارند.
با تمام اینها، درختهای تصمیم ممکن است گاهی به شدت پیچیده شوند! در چنین مواردی یک به اصطلاح Influence Diagram جمع و جورتر میتواند جایگزین بهتری برای درخت تصمیم باشد به طوری که این دست نمودارها توجه را به تصمیمات حساس، اطلاعات ورودی و اهداف محدود میکنند.
ساختار درخت تصمیم
یک درخت تصمیمگیری به طور معمول با یک نُود اولیه شروع میشود که پس از آن پیامدهای احتمالی به صورت شاخههایی از آن منشعب شده و هر کدام از آن پیامدها به نُودهای دیگری منجر شده که آنها هم به نوبهٔ خود شاخههایی از احتمالات دیگر را ایجاد میکنند که این ساختار شاخهشاخه سرانجام به نموداری شبیه به یک درخت مبدل میشود. در درخت تصمیمگیری سه نوع Node (گِره) مختلف وجود دارد که عبارتند از:
- نُودهای تصمیمگیری: که توسط یک مربع نشان داده میشود، تصمیمی که میتوان اتخاذ کرد را نشان میدهد.
- نُودهای شانس يا احتمال: که توسط یک دایره نشان داده میشود، نمایانگر احتمال وقوع یکسری نتایج خاص است.
- نُودهای نتيجه پایانی: نمایانگر پیامد نهایی یک مسیر تصمیمگیری خواهد بود.
یک مثال خوب از درخت تصمیم (از سایت چیستو)
فرض کنید میخواهید مشخص کنید کدام یک از دانشجوهای این دانشکده میتوانند در آزمون دکتری، قبول شوند (در واقع میخواهید یک پیشبینی انجام دهید). این پیشبینی میتواند باعثِ این شود که شما از این به بعد دانشجویان با پتاسیلِ بالا را پیدا کرده و روی آنها سرمایهگذاری کنید. در واقع میخواهید یک مدلِ طبقهبندی ایجاد کنید تا بتواند توسط دادههای گذشته، یک مدل ساخته و از این به بعد، هر بار که یک دانشجوی جدید را به مدلِ یادگرفته شده دادیم، این مدل بتواند بفهمد که این دانشجو با چه احتمالی میتواند در آزمونِ دکتری قبول شود.
در اولین گام باید یک مجموعه داده (dataset) از دانشجویانِ گذشته که در آزمونِ دکتری قبول شدند یا نشدند ایجاد کنیم تا بتوانیم آن را به الگوریتمِ دادهکاوی بدهیم و این الگوریتم یاد بگیرد. فرض کنید مجموعه داده را به این صورت میسازیم:
درخت های تصمیم با توجه به دادهها مبادرت به ایجادِ یک ساختارِ درختی میکنند که مانندِ قانونهای IF و ELSE عمل کرده و در نهایت به برچسبهای دلخواهِ ما که از دادههای آموزشی یاد گرفته شدند، میرسند. فرض کنیدمیخواهیم دادههای بالا را به صورت یک درخت بسازیم. شکلِ زیر در واقع یک نمونه درخت تصمیم از روی دادههای بالا است.
حال فرض کنید این درخت توسط یکی از الگوریتمهای درختهای تصمیم (decision trees) ساخته شده است. در واقع عملیاتِ یادگیری در درختِ تصمیم، همان ساخت عناصر و برگهای یک درخت است.
حال میخواهیم یک دانشجوی جدید معدل ۱۵.۵ دارد، تعداد ۵ مقاله ارائه کرده است ولی مدرک IELTS زبان ندارد. همچنین ۳ سال سنوات تحصیلی دارد. میخواهیم بدانیم آیا این شخص در آزمون دکتری قبول میشود یا خیر؟ اگر بخواهیم با توجه به درخت ساخته شده در شکل بالا، این دانشجو را ارزیابی کنیم مانند شکل زیر مسیر را ادامه میدهیم تا به یکی از برگها برسیم (مسیر حاشور خورده قرمز). درخت تصمیمِ ساخته شده به ما میگوید که این دانشجو احتمالاً نمیتواند در آزمون دکتری قبول شود.
الگوریتمهای پرکاربرد برای ساختن درخت تصمیم
الگوریتم ID3
یکی از الگوریتمهای بسیار ساده درخت تصمیم که در سال 1986 توسط Quinlan مطرح شده است. اطلاعات به دست آمده به عنوان معیار تفکیک به کار میرود. این الگوریتم هیچ فرایند هرس کردن را به کار نمیبرد و مقادیر اسمی و مفقوده را مورد توجه قرار نمیدهد.
این الگوریتم یکی از ساده ترین الگوریتم های درخت تصمیم(decision-tree) است. در این الگوریتم درخت تصمیم از بالا به پایین ساخته میشود. این الگوریتم با این سوال شروع میشود: کدام ویژگی باید در ریشه درخت مورد آزمایش، قرار بگیرد؟ برای یافتن جواب از معیار بهره اطلاعات استفاده میشود.
با انتخاب این ویژگی، برای هر یک از مقادیر ممکن آن یک شاخه ایجاد شده و نمونه های آموزشی بر اساس ویژگی هر شاخه مرتب میشوند. سپس عملیات فوق برای نمونه های قرار گرفته در هر شاخه تکرار می شوند تا بهترین ویژگی برای گره بعدی انتخاب شود.
الگوریتم C4.5
این الگوریتم درخت تصمیم، تکامل یافته ID3 است که در سال 1993 توسط Quinlan مطرح شده است. Gain Ratio به عنوان معیار تفکیک در نظر گرفته میشود. عمل تفکیک زمانی که تمامی نمونهها پایین آستانه مشخصی واقع میشوند، متوقف میشود. پس از فاز رشد درخت، عملِ هرس کردن بر اساس خطا اعمال میشود. این الگوریتم مشخصههای اسمی را نیز در نظر میگیرد.
این الگوریتم یکی از تعمیم های الگوریتم ID3 است که از معیار نسبت بهره(Gain ratio) استفاده می کند. الگوریتم هنگامی متوقف میشود که تعداد نمونه ها کمتر از مقدار مشخص شدهای باشد. این الگوریتم از تکنیک پس هرس استفاده میکند و همانند الگوریتم قبلی دادههای عددی را نیز میپذیرد.
از نقاطِ ضعف الگوریتم ID3 که در C4.5 رفع شده است میتوان به موارد زیر اشاره کرد:
- الگوریتم C4.5 میتواند مقادیر گسسته یا پیوسته را در ویژگیها درک کندو
- الگوریتم C4.5 قادر است با وجود مقادیر گمشده نیز درخت تصمیم(decision tree) خود را بسازد، در حالی که الگوریتمی مانند ID3 و بسیاری دیگر از الگوریتمهای طبقهبندی نمیتوانند با وجود مقادیر گمشده، مدلِ خود را بسازند.
- سومین موردی که باعث بهینه شدن الگوریتم C4.5 نسبت به ID3 میشود، عملیاتِ هرس کردن جهت جلوگیری از بیش برازش میباشد. الگوریتمهایی مانند ID3 به خاطر اینکه سعی دارند تا حد امکان شاخه و برگ داشته باشند (تا به نتیجه مورد نظر برسند) با احتمال بالاتری دارای پیچیدگی در ساخت مدل و این پیچیدگی در بسیاری از موارد الگوریتم را دچار بیش برازش و خطای بالا میکند.اما باعملیات هرس کردن درخت که در الگوریتم 5 انجام میشود، میتوان مدل را به یک نقطه بهینه رساند که زیاد پیچیده نباشد (و البته زیاد هم ساده نباشد) و بیش برازش یا کم برازش(Underfitting) رخ ندهد.
- الگوریتم C4.5 این قابلیت را دارد که وزنهای مختلف و غیر یکسانی را به برخی از ویژگیها بدهد.
الگوریتم CART
برای برقراری درختهای رگرسیون و دستهبندی از این الگوریتم استفاده میشود. در سال 1984توسط Breiman و همکارانش ارائه شده است. نکته حائز اهمیت این است که این الگوریتم درختهای باینری ایجاد میکند به طوری که از هر گره داخلی دو لبه از آن خارج میشود و درختهای بدست آمده توسط روش اثربخشی هزینه، هرس میشوند.
یکی از ویژگیهای این الگوریتم، توانایی در تولید درختهای رگرسیون است. در این نوع از درختها برگها به جای کلاس مقدار واقعی را پیشبینی میکنند. الگوریتم برای تفکیک کنندهها، میزان مینیمم مربع خطا را جستجو میکند. در هر برگ، مقدار پیشبینی بر اساس میانگین خطای گرهها میباشد.
الگوریتم CHID
این الگوریتم درخت تصمیم به جهت در نظرگرفتن مشخصههای اسمی در سال 1981 توسط Kass طراحی شده است. الگوریتم برای هر مشخصه ورودی یک جفت مقدار که حداقل تفاوت را با مشخصه هدف داشته باشد، پیدا میکند.
محققان آمار کاربردی، الگوریتمهایی را جهت تولید و ساخت درخت تصمیم توسعه دادند. الگوریتم CHAID در ابتدا برای متغیرهای اسمی طراحی شده بود. این الگوریتم با توجه به نوع برچسب کلاس از آزمونهای مختلف آماری استفاده میکند. این الگوریتم هرگاه به حداکثر عمق تعریف شدهای برسد و یا تعداد نمونهها در گره جاری از مقدار تعریف شدهای کمتر باشد، متوقف میشود. الگوریتم CHAID هیچگونه روش هرسی را اجرا نمیکند.
نرم افزارهای مورد استفاده برای انجام الگوریتم درخت تصمیم
زمانیکه بخواهید از نرمافزار برای دستهبندی نمونهها به روش الگوریتم درخت تصمیم استفاده کنید میتوانید از نرمافزارهای زیر بهرهمند شوید.
پردازش داده ، و پیش پردازش ها، روش ها و راهکاری پردازش داده ها
پردازش داده یعنی چه؟ پردازش داده، به مجموعه ای از عملیات گفته می شود که بر روی داده ها جهت رسیدن به نتایج انجام می گردد. به طور کلی پردازش داده ها شامل هر پردازشی شود که داده ها را از یک صورت به صورت دیگری تبدیل می کند و اگر چه اصطلاح «تبدیل داده ها» می تواند اصطلاح منطقی تر و صحیح تر است. بنابراین ممکن است از این نظر پردازش و تحلیل داده ها همان تبدیل داده ها به اطلاعات باشد و یا بر عکس یعنی تبدیل مجدد اطلاعات به داده ها. تنها تفاوت بین تبدیل و Data processing در این است که تبدیل داده ها نیاز به درخواست ندارد.
همانطور که میدانید اطلاعات از داده ها استخراج می شوند. داده های دارای سطح کیفیت پایین منجر به اطلاعات غیر مطمئن و یا حتی غلط می شود. پس تعریف دقیق و صحیح داده ها برای کسب اطلاعات معتبر، ضروری می باشد. در پردازش داده ها، داده های تحلیلی به صورتی تبدیل می شوند که بتوان داده ها را بهتر نمایش داد. برای درک تعریف Data processing بایستی مفاهیم داده ها، اطلاعات و پردازش را بهتر بشناسیم.
انواع پردازش
انواع پردازش داده ها عبارتند از:
- مرتب سازی داده ها یا رتبه بندی داده ها
- جستجو در بین داده ها
- محاسبات انجام گرفته بر الگوریتم ها چگونه اجرا می شوند؟ روی داده ها
پیش پردازش داده چیست؟
به عنوان مثال در مسئله تعیین معدل یک دانش آموز، عملیات محاسبه معدل دانش آموز با استفاده از عملیات جمع و تقسیم پردازش مسئله می باشد. لازم به ذکر است که در این بحث نباید از فرایند Data pre-processing غافل شد. حال پیش پردازش داده چیست؟ Data pre-processing شامل کلیه تبدیلاتی می باشد که بر روی داده های خام انجام می شود و آنها را به شکلی در می آورد که برای پردازش های بعدی نظیر استفاده در دسته بندی، ساده تر و موثرتر باشد.
مراحل Data pre-processing
از جمله مراحلی که باید قبل از تحلیل داده ها انجام شود، عبارتند از:
- ویرایش داده ها
- کد گذاری داده ها
- ورود داده ها به رایانه
- تعریف داده ها در رایانه
- طبقه بندی و کدگذاری مجدد داده ها (در صورت نیاز)
- آموزش برازش داده ها (این مرحله باید در زمان پیش آزمون انجام گیرد.)
مراحل پردازش داده ها
برای تبدیل داده های خام به اطلاعات معنادار چندین مرحله برای Data processing وجود دارد که به شرح زیر می باشد:
- مجموعه: این مرحله، مرحله بسیار مهمی می باشد زیرا کیفیت داده های گردآوری شده بر روی خروجی اطلاعات تاثیر مستقیم میگذارد. در این مرحله بایستی مطمئن شد که داده های جمع آوری شده دقیق هستند. همچنین این مرحله پایه ای برای اصلاح بیشتر از هر داده خروجی می باشد.
- آماده سازی: در این مرحله داده ها برای پردازش و تحلیل به چیزی بهتر و مناسب تبدیل می شوند.لازم به ذکر است که یک مجموعه داده از یک یا چند منبع داده برای پردازش بیشتر ایجاد می شود و اگر داده ها در این مرحله به درستی انتخاب نشوند می تواند منجر به نتایج گیج کننده ای شود. بنابراین همواره آماده سازی داده ها مقدم بر تحلیل آنها است و هر نوع سهل انگاری در این مرحله میتواند نتایج و یافته های پژوهش را تحت تاثیر قرار دهد.
- ورودی داده ها: در این مرحله داده های تایید شده به یک قالب قابل خواندن برای دستگاه تبدیل می شوند که از طریق یک برنامه پردازش می شود. لازم به ذکر است که این مرحله زمان بر است زیرا ورودی نیاز به دقت دارد و بایستی یک دستورالعمل دقیق را برای کمک به منظور Data processing به صورت موثرتر دنبال کرد.
- Data processing: سپس داده ها را به کمک الگوریتم ها برای تولید اطلاعات معنادار و قابل استفاده مورد استفاده قرار می گیرند.
- خروجی داده ها: خروجی Data processing می تواند در یک فرم قابل نمایش مانند گزارش ها، نمودارها، ویدئو، صدا یا اسناد در اختیار کاربر قرار بگیرد و در نهایت با استفاده از این اطلاعات معنی دار کاربر به راحتی می تواند در مورد داده های خود تصمیم گیری کند.
المان های پردازش داده
داده ها برای پردازش ابتدا باید به شکلی تغییر پیدا کنند که توسط کامپیوتر قابل خواندن باشند. وقتی داده ها به صورت دیجیتالی باشند فرایندهای متفاوتی می تواند روی آنها اتفاق بیفتد تا به اطلاعات معناداری تبدیل شوند. از این رو Data processing شامل تمام پردازش ها از ثبت داده داده ها تا داده کاوی به شرح زیر می باشد:
- ثبت داده
- خالص سازی داده
- کد کردن داده
- تبدیل داده
- ترجمه داده
- خلاصه سازی داده
- اجتماع داده
- معتبر سازی داده
- جدول بندی داده
- آنالیز آماری
- گرافیک کامپیوتری
- نگهداری داده
- داده کاوی
روش های پردازش داده
رایانه های به روش های مختلف می توانند اطلاعات را پردازش کنند که این روش ها عبارتند از:
- پردازش ترتیبی: این نوع پردازش، معمولی ترین روش Data processing در کامپیوتر ها می باشد که براساس معماری ترتیبی است. در این روش Data processing به وسیله یک زیرپردازنده انجام می شود و دستورات یکی بعد از دیگری اجرا می شوند. معمولا در کامپیوترهای شخصی (PC) از روش های پردازش ترتیبی و موازی برای Data processing بهره می برند.
- پردازش موازی: این روش براساس معماری موازی طراحی شده است که در آن داده ها به چند قسمت تقسیم می شود و سپس به صورت همزمان توسط چند CPU پردازش می شوند. به پردازشی که توسط چند پردازنده و به صورت همزمان انجام می شود، پردازش موازی می گویند.
- پردازش محاوره ای: گاهی اوقات ممکن است لازم باشد که پردازش بلافاصله پس از ورود داده ها به کامپیوتر آغاز شود و نتایج خروجی نیز به سرعت تولید شود و یا به عبارتی نوعی پرسش و پاسخ بین کامپیوتر و کاربر انجام شود.
- پردازش دسته ای: در پردازش هایی که به پردازش بلافاصله نیاز ندارند از روش پردازش دسته ای استفاده می شود. در این روش ابتدا داده ها جمع آوری می شوند و قبل از پردازش در یک دسته قرار می گیرند، سپس در یک زمان مشخص وارد کامپیوتر و پردازش می شوند.
- پردازش بی درنگ: در این پردازش تغییرات ورودی باید سریعا وارد کامپیوتر شود تا در تصمیم گیری مفید باشد. در پردازش های بی درنگ از خطوط ارتباطی سرعت بالایی استفاده می شود که به طور مستقیم با یک یا چند پردازنده در ارتباط می باشند. در این نوع پردازش ها داده ها در هر دقیقه به روز می شوند و در کسری از ثانیه پاسخ داده می شوند.
- پردازش اشتراک زمانی: در پردازش اشتراک زمانی، زمان پردازنده بین تعدادی کاربر همزمان تقسیم می شود، بدین صورت در یک بازه زمانی بسیار کوتاه عمل پردازش برای یک کاربر انجام می شود. در ادامه پردازش برای این کاربر قطع شده و پردازنده به فرد دیگری اختصاص داده می شود و این چرخه ادامه پیدا می کند.
سوالات متداول
- منظور از Data pre-processing چیست؟
Data pre-processing شامل تمام تبدیلاتی است که بر روی داده های خام انجام می شود و آنها را به شکلی در تغییر می دهد که برای پردازش های بعدی نظیر استفاده در دسته بندی، ساده تر و موثرتر باشد.
- روش های پردازش داده را نام ببرید؟
از جمله روش های Data processing می توان به روش های ترتیبی، موازی، محاوره ای، دسته ای، بی درنگ و اشتراک زمانی اشاره کرد.
- المان های Data processing را نام ببرید؟
المان های Data processing عبارتند از: ثبت داده، خالص سازی داده، کد کردن داده، تبدیل داده، ترجمه داده، خلاصه سازی داده، اجتماع داده، معتبر سازی داده، جدول بندی داده، آنالیز آماری، گرافیک کامپیوتری، نگهداری داده و داده کاوی
دیدگاه شما