Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > متفرقه > نرم افزار MATLAB


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۷-۲۹-۱۳۹۲, ۰۱:۱۳ قبل از ظهر   #1 (لینک دائم)
عضو جدید
 
آواتار sbaran
 
تاريخ عضويت: اسفند ۱۳۸۹
محل سكونت: تهران
پست ها: 9
تشكرها: 20
1 تشكر در 1 پست
پيش فرض ارزیابی یک مجموعه قانون با استفاده از مجموعه داده تست

با سلام

من می خوام یک مساله دسته بندی رو حل کنم. برای این کار، یک مجموعه قانون رو با استفاده از الگوریتمی به صورت ماتریسی ایجاد می کنم. برای مثال ماتریس
0 1 2 3 3
1 4 0 4 6
دو رول مختلف رو نشون میده. برای مثال، سطر دوم نشون می ده که اگر متغیر اول مقدار 6، متغیر دوم مقدار 4 و متغیر چهارم هم مقدار 4 را گرفت (متغیر سوم در این قانون تاثیری ندارد)، آنگاه نمونه به کلاس 1 تعلق دارد.

در مرحله تست، یک مجموعه داده که به شکل ماتریس هست بر روی این قانون ها اعمال می شود و دقت دسته بندی محاسبه می شود.

آیا تابعی در متلب برای این کار، یعنی مقایسه هر سطر از یک ماتریس با هر سطر از ماتریس دیگه وجود داره؟ بدون اینکه حلقه for نوشته بشه؟

ممنون
sbaran آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۰۷-۲۹-۱۳۹۲, ۱۱:۲۹ قبل از ظهر   #2 (لینک دائم)
Moderator
 
آواتار babak_1234
 
تاريخ عضويت: شهريور ۱۳۸۸
محل سكونت: تهران
پست ها: 252
تشكرها: 1
140 تشكر در 108 پست
My Mood: Khonsard
پيش فرض

نقل قول:
نوشته اصلي بوسيله sbaran نمايش پست
با سلام

من می خوام یک مساله دسته بندی رو حل کنم. برای این کار، یک مجموعه قانون رو با استفاده از الگوریتمی به صورت ماتریسی ایجاد می کنم. برای مثال ماتریس
0 1 2 3 3
1 4 0 4 6
دو رول مختلف رو نشون میده. برای مثال، سطر دوم نشون می ده که اگر متغیر اول مقدار 6، متغیر دوم مقدار 4 و متغیر چهارم هم مقدار 4 را گرفت (متغیر سوم در این قانون تاثیری ندارد)، آنگاه نمونه به کلاس 1 تعلق دارد.

در مرحله تست، یک مجموعه داده که به شکل ماتریس هست بر روی این قانون ها اعمال می شود و دقت دسته بندی محاسبه می شود.

آیا تابعی در متلب برای این کار، یعنی مقایسه هر سطر از یک ماتریس با هر سطر از ماتریس دیگه وجود داره؟ بدون اینکه حلقه for نوشته بشه؟

ممنون

سلام دوست من

شما دنبال تابع آماده برای این کار نباشید. بهتره از classifier هایی مثل درخت تصمیم یا شبکه عصبی و... برای این کار استفاده کنید.

موفق باشید
babak_1234 آفلاين است   پاسخ با نقل قول
از babak_1234 تشكر كرده است:
sbaran (۰۷-۲۹-۱۳۹۲)
قديمي ۰۷-۲۹-۱۳۹۲, ۰۶:۵۴ بعد از ظهر   #3 (لینک دائم)
عضو جدید
 
آواتار sbaran
 
تاريخ عضويت: اسفند ۱۳۸۹
محل سكونت: تهران
پست ها: 9
تشكرها: 20
1 تشكر در 1 پست
پيش فرض

با سلام

ممنون از جواب تون

من در واقع می خوام از الگوریتم ژنتیک یا یک متاهیوریستیک دیگه برای انجام دسته بندی استفاده کنم. در این صورت برای اعمال عملگرها روی یک جواب، باید قانون ها را به صورت یک ماتریس بسازم. برای مثال هر ماتریس می تونه معادل یک درخت تصمیم باشه که هر قانون اون در یک سطر از ماتریس آورده شده.
حالا سوال من اینه که در این صورت چطور می تونم مجموعه داده تست رو با این مجموعه قانون ها مقایسه کنم؟ در واقع لازمه تا هر سطر از ماتریس تست با هر سطر از ماتریس قانون ها مقایسه بشه . از طرفی هر دو ماتریس دارای ابعاد بزرگی هستند (ماتریس تست شامل 12 هزار سطر و 17 ستون است) و استفاده از حلقه for روش مناسبی برای این کار نیست. آیا راه دیگه ای برای انجام مرحله ارزیابی قانون های ساخته شده وجود داره؟

خیلی ممنون
sbaran آفلاين است   پاسخ با نقل قول
قديمي ۰۷-۲۹-۱۳۹۲, ۰۸:۴۷ بعد از ظهر   #4 (لینک دائم)
Moderator
 
آواتار babak_1234
 
تاريخ عضويت: شهريور ۱۳۸۸
محل سكونت: تهران
پست ها: 252
تشكرها: 1
140 تشكر در 108 پست
My Mood: Khonsard
پيش فرض

نقل قول:
نوشته اصلي بوسيله sbaran نمايش پست
با سلام

ممنون از جواب تون

من در واقع می خوام از الگوریتم ژنتیک یا یک متاهیوریستیک دیگه برای انجام دسته بندی استفاده کنم. در این صورت برای اعمال عملگرها روی یک جواب، باید قانون ها را به صورت یک ماتریس بسازم. برای مثال هر ماتریس می تونه معادل یک درخت تصمیم باشه که هر قانون اون در یک سطر از ماتریس آورده شده.
حالا سوال من اینه که در این صورت چطور می تونم مجموعه داده تست رو با این مجموعه قانون ها مقایسه کنم؟ در واقع لازمه تا هر سطر از ماتریس تست با هر سطر از ماتریس قانون ها مقایسه بشه . از طرفی هر دو ماتریس دارای ابعاد بزرگی هستند (ماتریس تست شامل 12 هزار سطر و 17 ستون است) و استفاده از حلقه for روش مناسبی برای این کار نیست. آیا راه دیگه ای برای انجام مرحله ارزیابی قانون های ساخته شده وجود داره؟

خیلی ممنون
سلام

معمولا از الگوریتم ژنتیک برای دسته بندی استفاده نمیشه. ذات این الگوریتم ها بهینه سازی هست و بیشتر برای ایجاد خود مدل یا آموزش آن کاربرد داره. به طور مثال برای آموزش یک شبکه عصبی یا سایر کاربرد های مشابه.

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


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

موفق باشید
babak_1234 آفلاين است   پاسخ با نقل قول
از babak_1234 تشكر كرده است:
sbaran (۰۷-۲۹-۱۳۹۲)
قديمي ۰۷-۲۹-۱۳۹۲, ۱۰:۰۵ بعد از ظهر   #5 (لینک دائم)
عضو جدید
 
آواتار sbaran
 
تاريخ عضويت: اسفند ۱۳۸۹
محل سكونت: تهران
پست ها: 9
تشكرها: 20
1 تشكر در 1 پست
پيش فرض

سلام

من تصمیم گرفتم که از یک الگوریتم جستجو برای پیدا کردن یک مجموعه خوب از قانون ها استفاده کنم. با به دست آوردن این مجموعه قانون در واقع یک مدل دسته بندی ساخته می شه. با استفاده از بقیه روش ها مثل شبکه عصبی یا درخت تصمیم در متلب خیلی جای مانور وجود نداره.
داده های من شامل 17 مشخصه یا فیچر هستند و به طور متوسط هر فیچر 10 مقدار اسمی رو به خودش اختصاص داده. در واقع کل فضای جستجو من شامل حدود 17 به توان 10 قانون می شه. از طرفی مجموعه داده آموزش من که برای پیدا کردن مجموعه بهینه از این قانون ها استفاده می شه یک ماتریس با 28 هزار رکورد و 17 مشخصه است.
درختی که با نرم افزار متلب ساختم شامل 1900 گره پایانی هست که با در نظر گرفتن اینکه بعضی از گره ها چند حالت یک متغیر رو به گره تخصیص دادند، می شه گفت تعداد کل قانون چند برابر 1900 می شه.

به نظر شما چنین کاری رو می شه تو متلب انجام داد؟ لب تاپم هنگ نمی کنه؟!
اگر بشه که خیلی عالی می شه
sbaran آفلاين است   پاسخ با نقل قول
قديمي ۰۷-۲۹-۱۳۹۲, ۱۰:۵۲ بعد از ظهر   #6 (لینک دائم)
Moderator
 
آواتار babak_1234
 
تاريخ عضويت: شهريور ۱۳۸۸
محل سكونت: تهران
پست ها: 252
تشكرها: 1
140 تشكر در 108 پست
My Mood: Khonsard
پيش فرض

نقل قول:
نوشته اصلي بوسيله sbaran نمايش پست
سلام

من تصمیم گرفتم که از یک الگوریتم جستجو برای پیدا کردن یک مجموعه خوب از قانون ها استفاده کنم. با به دست آوردن این مجموعه قانون در واقع یک مدل دسته بندی ساخته می شه. با استفاده از بقیه روش ها مثل شبکه عصبی یا درخت تصمیم در متلب خیلی جای مانور وجود نداره.
داده های من شامل 17 مشخصه یا فیچر هستند و به طور متوسط هر فیچر 10 مقدار اسمی رو به خودش اختصاص داده. در واقع کل فضای جستجو من شامل حدود 17 به توان 10 قانون می شه. از طرفی مجموعه داده آموزش من که برای پیدا کردن مجموعه بهینه از این قانون ها استفاده می شه یک ماتریس با 28 هزار رکورد و 17 مشخصه است.
درختی که با نرم افزار متلب ساختم شامل 1900 گره پایانی هست که با در نظر گرفتن اینکه بعضی از گره ها چند حالت یک متغیر رو به گره تخصیص دادند، می شه گفت تعداد کل قانون چند برابر 1900 می شه.

به نظر شما چنین کاری رو می شه تو متلب انجام داد؟ لب تاپم هنگ نمی کنه؟!
اگر بشه که خیلی عالی می شه
به دلیل sequential بودن روال اجرا فکر نمیکنم مشکلی برای لپتاپتون به جود بیاد.
اگرچه ممکنه اجرا یکم طولانی باشه ولی با پدیده هنگ کردن مواجه نمیشید.

پیشنهاد میکنم از سایر نرم افزار هایی که در این زمینه وجود دارن مانند clementine یا weka استفاده کنید و درخت بدست آمده را با درختی که در متلب ساختید مقایسه کنید.

همچنین شما میتونید با استفاده از تکنیک های هرس کردن درخت خودتون رو کوچکتر کنید تا پیچیدگی محاسباتی کاهش پیدا کنه.

موفق باشید
babak_1234 آفلاين است   پاسخ با نقل قول
از babak_1234 تشكر كرده است:
sbaran (۰۷-۲۹-۱۳۹۲)
قديمي ۰۹-۹-۱۳۹۲, ۰۸:۵۵ بعد از ظهر   #7 (لینک دائم)
Active users
 
آواتار mahdiii
 
تاريخ عضويت: اسفند ۱۳۸۸
محل سكونت: مشهد
پست ها: 355
تشكرها: 27
167 تشكر در 131 پست
My Mood: Khoshhal
پيش فرض

شما برای این کار با فرض اینکه هر سطر از ماتریستون نشان دهنده یک قانون باشد که مقدار صفر نشان دهنده این است که مقدار آن ویژکی برایتان مهم نیست. خیلی راحت میتونین داده تست (که یک سطر می باشد) را با تک تک سطرها مقایسه کنین. برای اینکه سرعت اجرا بره بالا هرجا دیدید یکی از ویژگیها با یکدیگر متفاوت است برید سراغ سطر بعدی. شما نیاز به حلقه دارین و مجبور هستین ازش استفاده کنین!!!
هرجا قانون با اون داده تست منطبق شد و شماره کلاس پیدا شد دیگر نیازی نیست بقیه قوانین مقایسه شوند. فقط مشکلی که هست این است که برای هر داده تست نیاز است به صورت خطی عمل مقایسه انجام شود که در بدترین حالت برابر با تعداد قوانین * تعداد ویژگیها خواهد بود که مقدار قابل توجهی است.
برای این کار شما میتونین یکبار عمل مرتب سازیو انجام بدین . به این صورت که ابتدا بر اساس مقادیر ویژگی اول قوانین مرتب شوند . سپس بر اساس ویژگی دوم و.... . مثلا مثل زیر:
1 3 4 5 6

1 4 2 3 5

1 4 3 5 5

2 1 3 3 2

و ...
با این کار می تونین از جستجوی دودویی استفاده کنین. به این صورت که ابتدا بر اساس ویژگی اول داده تست به دنبال قوانینی میگردین که با اون منطبق هست. ابتدا از اندیس وسط قوانین شروع میکنین (مثلا 1000 تا قانون دارین از اندیس 500) و ویژگی اولشو با هم مقایسه میکنین بر اساس اون می فهمین باید برین سراغ زیر بازه اول یا دوم . بعد از اینکه اولین و آخرین قانون با این مقدار ویژگی پیدا شد، میرید سراغ ویژگی دوم و همین کارو با این مجموعه قوانین به دست اومده انجام میدید تا بالاخره قانون منطبق شده به دست بیاد.
mahdiii آفلاين است   پاسخ با نقل قول
قديمي ۰۹-۱۰-۱۳۹۲, ۰۲:۰۴ قبل از ظهر   #8 (لینک دائم)
عضو فوق فعال
 
آواتار masood
 
تاريخ عضويت: خرداد ۱۳۸۸
محل سكونت: اسالم
پست ها: 98
تشكرها: 291
37 تشكر در 30 پست
My Mood: Khoshhal
ارسال پيغام Yahoo به masood
پيش فرض

ضمن تایید فرمایشات دوستان mahdiii و babak_1234، اطلاع ندارم که در نرم افزار Matlab تابع، تولباکس یا هر چیز دیگری از قبل برای اینکار آماده کردند یا خیر.
قطع به یقین اگر 17 ستون و برای هر ستون 10 مقدار اسمی داشته باشیم 10 به توان 17 حالت داریم. با توجه به 1900 گره پایانی در درخت شما اگر از درخت تصمیم گیری استفاده می کنید در تبدیل درخت به ماتریس همون 1900 سطر در احیانا 18 ستون کفایت می کنه (یکی برای کلاس مورد نظر). حالا ما اگر یک بار به ازای یکی از 1900 سطر کل 12 هزار سطر داده های تست شما رو جستجو کنیم ممکنه چند مورد از داده ها با اون قانون همخوانی داشته باشند که اگر این داده ها رو به فضای دیگری از حافظه انتقال بدیم برای جستجو در گام بعدی فضای کمتری از حافظه رو خواهیم گشت و لذا سرعت هر بار جستجو افزایش پیدا می کنه و با توجه به اینکه هر انتقال زمان کمی میبره (به خصوص اگر از لیست پیوندی استفاده کرده باشید) این فرآیند اضافی توجیه پذیر هستش.
(البته اگر بخواهید از روش جستجوی باینری استفاده کنید کار با لیست پیوندی کمی مشکل هستش)
داده های تست شما به نظر، زیاد نسیت. ولی با این شرایط هم توصیه دارم در شرایط مسئله خودتون بازنگری کنید و تعداد مشخصه ها رو حتی المقدور کمتر کنید.
__________________
یک روز یک ماشین برای انتخابات ریاست جمهوری ثبت نام می کند
چه بخواهیم چه نخواهیم این اتفاق می افتد.
masood آفلاين است   پاسخ با نقل قول
پاسخ

Tags
classification, matrix, rules



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۲:۳۴ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design