چکیده

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

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

کلمات کلیدی

سیستمهای توصیهگر، پالایش مشارکتی، معیار شباهت، الگوریتم ازدحام ذرات، الگوریتم ژنتیک.

-۱ مقدمه

در عصر جدید اگرچه در اینترنت با حجم زیادی از اطلاعات روبرو هستیم ولی این مسئله فرایند تصمیم گیری و انتخاب اطلاعات را برای کاربران وب دشوار ساخته است. این موضوع انگیزهای شد تا پژوهشگران را به یافتن راهحلی برای رفع مشکل مذکور وادار نماید. یکی از این رویکردها اسـتفاده از سیسـتمهـای توصیهگر است. این سیستمها در دههی ۹۰ بهعنوان یـک شـاخهی مسـتقل پا به عرصهی تحقیق و پژوهش گذاردند. این سیستم ها تـلاش مـی کننـد بـا حذف اطلاعات اضافه یا نامطلوب، آن دسته از آیتم های اطلاعاتی را پیشـنهاد دهند که موردعلاقهی کاربر باشد.[۲] تنها کارایی یـک سیسـتم توصـیه گـر،

×

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

W=(1,0.5,0,-0.5,-1)

این الگوریتم در حالت کلی، همه شباهتها یا ارتباطات موجود میان کاربران را محاسبه میکند.[۳] درنتیجه هستهی اصلی این الگوریتم تعیین شباهت است.

-۲ کارهای مرتبط
در سالهای اخیـر معیارهـای شـباهت متفـاوتی در سیسـتمهـای توصـیهگـر استفادهشده است نظیر ضـریب همبسـتگی پیرسـون، ایـن معیـار از امتیـازات کاربران به طور مستقیم استفاده میکند. اسپیرمن، که ترتیب رتبهبندیها را در نظر میگیرد. تفاضل مربعات میانگین در مقایسه با ضریب همبستگی پیرسون محدود میباشد، زیرا همبستگیهـای منفـی بـین ترجیحـات کـاربر یـا درک آیتمهای مختلف را در نظر نمیگیرد؛ در حالی که وجود چنین همبستگیهـای منفی ممکن است باعث بهبود دقت پیش بینی رتبهبندی شود. معیـار شـباهت جاکارد برای استفاده از دیتاستهایی مناسب میباشد که بسیار پراکنده اسـت. ضریب همبسـتگی پیرسـون بـهعنـوان یـک معیـار شـباهت، بهتـر از سـایر دیدگاه های سنتی عمل میکند.[۴] یکـی از چـالش هـای الگـوریتم پـالایش مشارکتی که از همبستگی پیرسون برای محاسبه شباهت بین دو کاربر استفاده می کند این است که ارزش تمامی امتیازهای کاربران به آیتم ها، یکسان فرض می شود این در صورتی است که در واقعیت امتیازهای کاربران روی آیتم هـای مختلف ارزش های متفاوت دارد.[۵] برای رفع این مشکل مـی تـوان از معیـار شباهتی استفاده نمود که وزنی را برای امتیازات کاربران در نظر میگیرد.

-۳ معرفی معیار شباهت

انتخاب صحیح یک تابع شباهت برای تعیین شباهت میان کاربران یک فاکتور مهم در الگوریتمهای پالایش مشارکتی است زیرا دقت توصیه را تحـت تـأثیر

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

پایگاه داده، به صورت رابطه (۱) تعریف شدهاست که با استناد بـه مقالـهی[۶] استخراج شده است:
(۱) ( ) ( ) ∑ ( )

در رابطه (۱)،M، بالاترین رتبـه و m پـایین تـرین رتبـه تعریـفشـده در سیستم است، که کاربر می تواند به هر یک از آیتم ها بدهد. Va,u بردار مقـادیر برای هر زوج کاربر a,u است و W بردار وزن و هم اندازه با بردار V است که در ادامه روش محاسبه هر دو بردار تشریح میشود.

-۱-۳ محاسبه بردار مقادیر((V
بهمنظور مقایسه دو بردار ra ,ru، که درواقع رتبههای دادهشده به آیتمها توسط دو کاربر a,u هستند، بردار بـهصـورت(( ) ( ) )

تعریف می شود که تعداد عناصـر آن برابـر حـداکثر رتبـه ای کـه یـک کـاربر میتواند روی یک آیتم ایجاد کند.

هر عنصر ( ) از بردار به صورت کسر تعریف مـی شـود کـه در آن بیان گر تعداد آیـتم هـای رتبـه بنـدی شـده توسـط هـر دو کـاربر(یعنی ( ) ( ) ) و بیان گر تعداد آیتم های رتبه بندی شده توسـط هر دو کاربر است با این شرط که تفاضل مطلق رتبهبندیهای کاربر a و کاربر
u برابر i باشد( .(| |

-۲-۳ بردار وزن

بر طبق این تابع شباهت به ازای هر بردار V یک بردار W با همان اندازه باید تعریف شود که هر عنصر w(i )، نشان دهنده اهمیت عنصـر ( ) در محاسـبه شباهت میان دو کاربر است.
ویژگی هر عنصر بردار W=(w(0 ),…,w(M-m)) کـه عناصـر آن در بـازه [-۱,۱] قــرار دارنــد مــیتــوان بــا در نظــر گــرفتن یــک بــردار نمونــه

بهصورت زیر تشریح کرد:

• w(0)= 1، آیتمهایی که مشابه هم رتبه دهـی شـدند را در محاسـبه شباهت بسیار مثبت ارزیابی میکند.

• w(1 )= 0.5، آیتمهایی را که اختلاف بین رتبههای آنها ۱ است را با یک مقدار متوسط، مثبت ارزیابی میکند.
• w(2)= 0، آیتمهایی را که اختلاف رتبه دهی دو کاربر بـه آنهـا ۲ است را در محاسبه شباهت در نظر نمیگیرد.

• w(3)= -0.5، آیتمهایی را که اختلاف رتبه آنها ۳ است را بـا یـک مقدار متوسط منفی ارزیابی میکند.
• w(4)= -1، آیتمهایی که متضاد هم رتبهدهـی شـدند را در محاسـبه
شباهت بسیار منفی ارزیابی میکند.

به اینترتیب، میتوان به صورت منطقی انتظار داشت که تابع شباهت، یک مقدار مثبت بالا(w(0 و یک مقدار منفی بالا از w(M-m) داشته باشد.

موضوع اصلی، تعیین مناسبترین تابع شباهت ارائهشـده توسـط یکـی از بردارهــایW اســت کــه در ایــن روش بســتگی بــه ذات خــاص دادههــا در سیستم توصیه گر دارد. از میان کلیهی بردارهایW تولیدشده بـرداری انتخـاب می شود که تـابع هـدف یعنـی میـانگین خطـای مطلـق (MAE) را کمینـه کند؛ بنابراین برای یافتن بهینه ترین بردار W که مناسب ترین تـابع شـباهت را ارائه میدهد، از الگوریتم تکاملی ترکیبی GAPSO استفاده میشود.

-۴ الگوریتم ترکیبی GAPSO

یکی از ویژگیهای الگوریتمهای تکاملی این است که برای حل مسئله نیاز به یک جمعیت اولیه دارد.
-۱-۴ جمعیت اولیه

جمعیت اولیه همان بردارهای وزن است که بهصورت تصادفی تولید میشود. با توجه به اینکه[ ] است طول بازه بهصورت فرمول (۲) به دست میآید:[۶]
( ۲) ( ) بازه طول

بنــابراین طــول هــر بــازه بــا در نظــر گــرفتن M=5 و m=1 برابــر ۰/۴
محاسبه شده و محدوده های مناسب برای قرار گرفتن جمعیت اولیه به صـورت
زیر تعیین می شود:
] [ ] [ ] [
] [ ] [

بهینهترین بردار W، برداری خواهد بود که مناسبترین وزنها را برای هر یک از عناصر بردار V در نظر بگیرد تا با محاسبه دقیـقتـر میـزان شـباهت میـان کاربران بتواند مقدار خطای میان رتبه هـای واقعـی دادهشـده توسـط کـاربران
æ رتبههای پیشبینـیشـده توسـط سیسـتم را کـاهش داده و درنتیجـه دقـت

æ صحت توصیه ها را در سیستم توصیه گر افزایش دهد؛ بنابراین بـرای یـافتن

بهینهترین بردار W، توسط الگوریتم GAPSO یک تـابع برازنـدگی مناسـب برای آن تعریف میشود.
-۲-۴ تابع برازندگی

در این مسئله، تابع برازندگی بر اساس دقـت توصـیه و مـؤثر بـودن آن ارائـه میشود. معیارهای مختلفی برای دقت توصیه مطرح است که میانگین خطای مطلق (MAE) در نظر گرفته میشود زیرا MAE یکی از مهمترین معیارهـا

برای سنجش دقت توصیه است.
الگوریتم GAPSO سعی می کند از میان تمام بردارهای W که درواقع جمعیت اولیهی الگوریتم را تشکیل می دهنـد، W ای را پیـدا کنـد کـه منجـر به کمترین میانگین خطـای مطلـق((MAE شـود. درواقـع تـابع برازنـدگی استفاده شده در الگوریتم، تابع MAE است که به صـورت معادلـه (۳) تعریـف میشود:[۶]
(۳) | | ∑ ∑

در معادلــه (۳)،#U و #Iu بــه ترتیــب تعــداد کــاربران آموزشــی و تعــداد آیتم های آموزشی رتبه بندی شده به وسیله کاربر u اسـت. و بـه ترتیـب رتبــه واقعــی کــاربر u بــه آیــتم i و رتبــه پــیشبینــیشــده توســط سیستم توصیهگر برای آیتم i است.

MAE، میزان خطای رتبههای واقعی کاربران با رتبههای پیشبینیشـده سیستم است؛ هر چه این مقدار کمتر باشد عملکرد سیستم دقیقتر خواهد بود.

الگوریتم GAPSO برای محاسبه MAE، گامهای زیر را برای هر کاربر هدف (a) نیاز دارد:
۱٫ بر اساس تابع شباهت (simw) تعریفشده در معادله (۱)، شباهت

میان کاربر هدف (a) و سایر کاربران محاسبه میشود. در حقیقت مجموعه همسایههای کاربر a، با عنوان k) ka، تعداد همسایههای شبیهتر به کاربر هدف است) به دست میآیند که با تغییر مقدار k، تعداد k همسایه برای کاربر a، از میان کاربرانی با بالاترین مقدار شباهت، انتخاب میشوند.

.۲ پیشبینی رتبهبندی کاربر a روی آیتم i، با عنوان است. این
پیشبینی از طریق رابطه انحراف از میانگین (DFM) که در
رابطه (۴) با استفاده از رتبهای که همسایگان کاربر a به آیتم i
دادهاند به دست میآید.[۴]
(۴) ̅)] ) ( ) [ ∑ ̅

( ) ∑
در معادله (۴)،̅ متوسط رتبه های ایجادشده توسط کـاربر a اسـت،
رتبه ای است که کاربر u به آیتم i داده است، ( ) شباهت کـاربر
هدف با همسایهاش میباشد.
با محاسبه تابع شباهت simw بین هر زوج کاربر و مشخص شدن k تا از
شبیه ترین همسایه ها به کاربر هدف با استفاده از امتیازات همسـایه هـا بـرای
آیتمهای کاربر هدف، پیشبینی انجام میشود؛ سـپس MAE بـا اسـتفاده از

معادله (۳) محاسبه میشود. درنهایت بهینه ترین بردار وزن مربوط به کم تـرین

MAE توسط الگوریتم GAPSO محاسبه میشود کـه از آن در فـاز تسـت برای ارزیابی استفاده میشود.

-۳-۴ معرفی الگوریتم ژنتیک

الگوریتم ژنتیک از قانون گزینش طبیعت مطرحشده توسط داروین، برای یافتن جواب بهینه استفاده میکند. طبق این قانون تنها گونههایی از یک جمعیت ادامه نسل میدهند که بهترین خصوصیات را جهت سازگاری با طبیعت داشته باشند. با توجه به اینکه فرزندان نسل بعد، از ترکیب کروموزومهای والدین پدید میآیند. درنتیجه خصوصیات والدین را به ارث میبرند. بنابراین گونههای سازگار از جمعیت در نسلهای بعد تکثیر یافته و مابقی موجودات (ناسازگار) بهتدریج در طول زمان منقرضشده و از بین میروند. در این بین، گاهی اوقات جهشهایی نیز در کروموزومهای برخی از فرزندان روی میدهد که ممکن است باعث سازگاری بیشتر آن با طبیعت شود. الگوریتم ژنتیک (GA) با استفاده از عملگرهای ژنتیکی انتخاب، ترکیب و جهش، اقدام به حل مسائل میکند.[۷]

ابتدا GA کار خود را با یک جمعیت اولیه تصادفی از کروموزوم ها شـروع میکند، هر کروموزوم رشتهای از ژنها است کـه شـامل یـک راهحـل، بـرای مسئله ای که GA سعی در حل آن دارد میباشد. جمعیـت ایجادشـده توسـط یک تابع برازندگی، ارزیابی میشود. سپس جمعیت فعلی(مجموعه راه حـل هـا) با اسـتفاده از برخـی عملگرهـای ژنتیـک، در تولیـد نسـل بعـدی کـه اغلـب راه حل های بهتری برای مسئله میباشند، استفاده میشود. ابتدا عملگر انتخاب از بین کروموزوم های موجود در جمعیـت، دو کرومـوزوم (والـد) را بـر اسـاس شایســتگی بــرای تولیــد مثــل انتخــاب مــیکننــد؛ ســپس عملگــر ترکیــب اجراشده، فرزندانی به دست میآید که خصوصیات هر دو والد را بـه ارث بـرده که اغلب جواب های بهتری هستند و عملگر جهش با تغییر برخـی از ژنهـای کروموزوم های فرزندان باعث ایجـاد تنـوع ژنتیکـی در جمعیـت شـده سـپس برازندگی افراد نسل جدید به دست آمده، مـورد ارزیـابی قـرار مـیگیـرد و ایـن مراحل تکرار میشود تا شرط خاتمه الگویتم برقـرار گـردد؛ درنهایـت بهتـرین کروموزوم نسل آخر، جواب مسئله است.[۱]

-۱-۳-۴ نمایش کروموزومها
در این مسئله هر کروموزوم بهصورت بردار w با مقادیر اعشاری تصادفی در نظر گرفته میشود که شامل پنج ژن است که بازه مقادیر هر ژن نیز تصادفی و متفاوت است.

-۲-۳-۴ عملگر انتخاب
انتخابی که در اینجا مورد استفاده قرارگرفته، انتخاب نخبهگرا است. با استفاده از این عملگر بهترین عضو هر جمعیت، زنده میماند و در جمعیت بعد حضور مییابد. بهعبارتدیگر عضوی که بالاترین تطابق را دارد بهطور خودکار به جمعیت جدید منتقل میشود. این روش ابتدا در سال ۱۹۷۵ توسط ( کندی جونز) معرفی شد. اعمال نخبهسالاریدر الگوریتم ژنتیک، معمولاً باعث بهبود کارایی آن میشود.

-۳-۳-۴ عملگر ترکیب
از عملگر ترکیب محاسباتی، برای تولید فرزندان استفاده میشود. در این روش یک ضریب وزنی بین ۰ و ۱ بهاندازه طول والدین در نظر گرفته میشود و با استفاده از فرمولهای (۵) و (۶) دو کروموزوم جدید یا دو فرزند به وجود میآیند.
(۵) ( )
(۶) ( )
که در اینجا X1 و X2 بردارهای مقادیر اعشاری هسـتند کـه کرومـوزوم والــدین را نشــان مــیدهنــد؛ α ضــریب وزنــی و y1 و y2 کرومــوزومهــای فرزندان، حاصل از ترکیب والدین هستند.

-۴-۳-۴ عملگر جهش

عملگر جهش به روش گوسی پیادهسازی میشود. بدینصورت که ابتـدا یـک کروموزوم به صورت تصادفی از جمعیت انتخاب میشود و سپس یک یـا چنـد مؤلفه از آن، بر اساس تابع توزیع گوسی با اسـتفاده از فرمـول (۷) تغییـر داده میشود.
( ) (۷)

X1 بردار مقادیر وزن است که کروموزوم والد را نشان مـیدهـد. r1 یـک عدد تصادفی در بازه ۰ و ۱ می باشد. N(0,1) یک عدد تصادفی توزیع شده بـا استفاده از توزیع گوسی است.

-۴-۴ معرفی الگوریتم PSO
مشابه GA، الگوریتم PSO نیز با یک جمعیت اولیه از جوابها کـه بـهطـور تصادفی تولیدشده اند شـروع مـیشـود ولـی بـرخلاف الگـوریتم GA عملگـر ژنتیکی همانند ترکیب و جهش ندارد. در این روش هر جواب مسـئله یـکذره نامیده می شود که دارای موقعیت و سرعت است. موقعیت، در حقیقت نقطه ای از فضای جستجو را نشان می دهد و سرعت، تعیین کننـده جهـت حرکـت ذره است . همچنین ذره، دارای یک حافظه است که به نگهداری بهترین موقعیـت قبلی آن کمک میکند. ذرات فضای اطراف خود را بـرای پیـدا کـردن کمینـه یا بیشینه جستجو می کنند در طی جستجو هر ذره موقعیت خود را بـر اسـاس تجربههای خود و تجربههای بهترین ذره اصلاح میکند.[۸]

PSO ابتدا یک جمعیت اولیـه تصـادفی از ذرات ایجـاد مـی کنـد؛ یعنـی موقعیت ذرات با انتخاب تصادفی در فضای جستجو ایجاد می شـود و سـرعت هر ذره صفر است. سپس مقدار تابع هدف برای هر ذره محاسبه میشود.

در شروع الگوریتم، موقعیت فعلی هر ذره به عنوان بهترین موقعیت آن، در حافظــه هــر ذره ذخیــره مــیشــود. در مراحــل بعــدی، الگــوریتم بــر اســاس مقایسه ای که بین مقادیر شایستگی موقعیت فعلی و موقعیـت ذخیـره شـده در حافظه ذره انجام می دهد، بهترین موقعیت هر ذره را مشخص می کند. بهترین موقعیت سراسری بـا توجـه بـه مقـادیر شایسـتگی مرتـبشـده ذرات، تعیـین می شود؛ سپس یک مقدار سرعت جدید بـرای هـر ذره بـا توجـه بـه سـرعت فعلی، فاصله از بهترین موقعیت سراسری و بهترین موقعیـت محلـی( بهتـرین موقعیت فعلی ذره) تعیین می شود به عبارتی دیگـر موقعیـت جدیـد بـه صـورت مجموع موقعیت قدیم و سرعت جدید محاسبه می شود. سرعت و موقعیت هـر ذره با استفاده از فرمولهای (۸) و (۹) بهروزرسانی میشود.

(( ) ) ( ) ( )
(۸) (( ) )
(۹) ( ) ( ) ( )

در این روابط W، وزن اینرسی است که برای کنترل تأثیر سرعت قبلی بر روی سـرعت فعلـی اسـتفاده مـیشـود. ( ) سـرعت قبلـی ذره، r1 و اعداد تصادفی تولیدشدهی یکنواخت در بـازه ۰]و[۱ هسـتند. C1 ضـریب یادگیری مربوط به اطلاعات شخصی هر ذره اسـت و C2 ضـریب یـادگیری مربوط به اطلاعات کل جمعیت است. Pid بهترین موقعیت هر ذره نسـبت بـه موقعیت های قبلی خودش، pgb بهترین موقعیت سراسری یا بهترین مـوقعیتی که یک ذره نسبت به همهی ذرات کسب کـرده و xid موقعیـت هـر ذره را در فضای جستجو نشان می دهد. بعد از به روزرسانی، ممکن اسـت ذره بـه دلیـل فاصله از بهترین موقعیت قبلی و بهترین موقعیـت سراسـری، سـرعت زیـادی داشته باشد و از فضای جستجو خارج شود، به همین دلیل برای محدود کردن سرعت هر ذره، یک سرعت بیشینه vmax برای کنترل سـرعت ذرات اسـتفاده می شود و بهترین ذره (ازنظر شایسـتگی) در نسـل آخـر جـواب مسـئله اسـت

.[۹][۱]

-۵-۴ روش ترکیب الگوریتم GAPSO

الگوریتم ترکیبی، مزایای هـر دو الگـوریتم را دارا اسـت. شـبه کـد الگـوریتم ترکیبی بهصورت زیر میباشد:

گام .۱ تولید نسل اولیه ذرات بهصورت تصادفی گام .۲ ارزیابی نسل فعلی بر اساس تابع برازندگی و رتبهبندی آنها

گام .۳ انتخاب بهترین موقعیت ذره و انتخاب بهترین موقعیت سراسری گام .۴ توقف در صورت برقراری شرط توقف

گام .۵ درصورت ایستایی تابع برازندگی (مشکل بهینه محلی) اجرای گام ۶ در غیر این صورت اجرای گام ۷ گام .۶ اجرای عملگرهای ژنتیک(جهش و ترکیب) و ایجاد نسل جدید و رفتن به گام ۲

گام .۷ بهروزرسانی سرعت و موقعیت ذرات و ایجاد ذرات جدید و اجرای گام ۲ خروجی این الگوریتم ترکیبی بهینهترین بردار وزن میباشد که جهت ارزیـابی در فاز تست استفاده میشود.

-۵ آزمایشها
-۱-۵ مجموعه داده

برای انجام آزمایشها از مجموعه داده Movielens کـه بـهصـورت آنلایـن از وب سایت گروپ لنز قابل دریافت می باشد، استفاده می شـود. ایـن مجموعـه داده شامل ۱۰۰۰۰۰ امتیاز است که توسـط ۹۴۳ کـاربر بـه ۱۶۸۲ فـیلم داده است (ماتریس کاربر- آیتم از ۹۴۳ سطر و ۱۶۸۲ ستون تشکیل میشود). این امتیازدهی با ساختار ۵-Fold به دو قسمت تقسـیم مـی شـود: ۸۰% داده هـا ۸۰۰۰۰) امتیــاز) بــرای مجموعــه آمــوزش و ۲۰% دادههــا (۲۰۰۰۰) جهــت مجموعه تست استفاده می شود. رتبه بندی هـا شـامل یـک مقیـاس عـددی ۵ نقطه ای است که ۱ و ۲ بیانگر رتبهبندیهـای منفـی، ۴ و ۵ رتبـهبنـدیهـای مثبت و ۳ رتبهبندی میانه را نشان میدهد.

ابتدا برای تعیین تابع شباهت بهینه، فقط بخشـی از مجموعـه داده؛یعنـی کــاربران آموزشــی اســتفاده مــیشــود بــدین منظــور ۸۰ درصــد از کــاربران و آیتمها، بهعنوان کاربران وآیتمهای آموزشی در نظر گرفته میشوند.

در فاز آموزش با اجرای متعدد الگوریتم GAPSO تابع شـباهتی متنـاظر با بردار W ارائه می شود که تابع هدف MAE را کمینـه مـیکنـد. بـهمنظـور بررسی و مقایسهی نتایج، سیستم توصیه گر مبتنی بر الگوریتم هـای ژنتیـک و ازدحام ذرات نیز پیاده سازی می شود تـا بـا اسـتفاده از ایـن الگـوریتمهـا بهترین W که میانگین خطای مطلق کمینه را تولید میکند محاسبه شـود. در فاز تست از W بهینه فاز آموزش استفاده میشود تا معیارهای ارزیابی نظیـر میانگین خطای مطلق، فراخوانی و دقت، محاسبه شود.

در فاز تست برای آزمـایش W بهینـه و اسـتفاده از آن در تـابع شـباهت، ۲۰ درصــد از کــاربران را کــه در الگــوریتم ترکیبــی پیشــنهادی GAPSO استفاده نشده اند ( کاربران آزمایشی) در نظر گرفته میشـوند. ابتـدا بـا انتخـاب کــاربر هــدف، نســبت رتبــهبنــدیهــا محاســبه شــده و از بــردار وزن بهینــه به دست آمده فاز آموزش، شـباهت بـین زوج کـاربران اسـتفاده مـی شـود و k همسایهی شبیه تر به کاربر هدف مشخص می شود. در مرحلهی آخر پیش بینی رتبه بندی کاربر هدف روی آیتم ها با توجه به k همسایه اش به دست می آیـد که میانگین خطای مطلق با توجه به تمام کاربران فاز تست محاسبه میشود.

انتخاب درست تعداد همسایهها در فاز تست نیز، بسیار مهم است. ثابت k (تعداد همسایههای هر کاربر)، بین ۱۰ تا ۵۰۰ همسایه تغییر میکند که به ما کمک میکند تا روند تغییرات نمودار مشاهده شود. مقدار k با بررسی مقالات مرجع و اجرای متعدد برنامه بهدستآمده است.

در فاز تست با افزایش تعـداد همسـایگان از ۱۰ همسـایه تـا مقـدار ۱۲۰ همسایه با هر سه الگوریتم، مقدار خطای حاصل از معیار شباهت بهینه، کاهش یا بهبودیافته است. با افزایش تعداد همسایگان از ۱۲۰ همسایه به بعد، میـزان خطا به تدریج افزایش می یابد. بهترین میانگین خطای مطلق (کمترین خطا) در استفاده از مقدار میانی همسایه به دست می آید. شکل (۱) میـانگین خطاهـای به دست آمده از الگوریتم GA، GAPSO، PSO با مقادیر متفـاوت K نشـان میدهد.

۰٫۷۵