View Full Version : سیگما
mkkamrani
سه شنبه 17 شهریور 1394, 18:16 عصر
چگونه می توان در خط 8 کد زیر از سیگما استفاده کرد. به طوری که بازه سیگما برابر با بردار xy باشد.
for u=22166
[r, c] = nonzidx(S(u,:));
c=c';
for v=c(1, : )
[ff,x]=find(rprim(u,:));
[gg,y]=find(rprim(v,:));
xy=intersect(x,y);
similari(u,v)=(sigma cov(rprim(u,xy),rprim(v,xy)))/((sigma std(rprim(u,xy))*(sigma std(rprim(v,xy)))));
end
end
rahnema1
سه شنبه 17 شهریور 1394, 20:56 عصر
سلام
الان سایز این ماتریسها چند در چنده؟
اگه بتونید فرمول اصلی را اینجا بذارید تا مطابق اون بگیم چیکار کنید
mkkamrani
چهارشنبه 18 شهریور 1394, 14:56 عصر
سلام ببخشید من در خط یک عدد 1 جا انداختم.
for u=1:22166
[r, c] = nonzidx(S(u,:));
c=c';
for v=c(1, : )
[ff,x]=find(rprim(u,:));
[gg,y]=find(rprim(v,:));
xy=intersect(x,y);
similari(u,v)=(sigma cov(rprim(u,xy),rprim(v,xy)))/((sigma std(rprim(u,xy))*(sigma std(rprim(v,xy)))));
end
end
در ضمن ماتریس rprim یک ماتریس 296277*22166 و ماتریس s شبکه اعتماد میان کاربران هست که عدد 1 نمایانگر وجود اعتماد و عدد 0 نمایانگر عدم اعتماد می باشد که بردار v افراد مورد اعتماد کاربر u در ماتریس s هستند.
rahnema1
چهارشنبه 18 شهریور 1394, 18:09 عصر
ای کاش دقیقا توضیح می دادید چه کاری می خواد انجام بشه
مثلا قبلا که گفتم از nonzidx استفاده بشه باید nonzidx را فقط یک بار روی کل ماتریس S اعمال کنید نه اینکه در حلقه روی سطر به سطر اون
فکر کنم روندی که در پیش گرفتید زمان زیادی می گیره
در هر صورت برای sigma از دستور sum استفاده می شه
لطفا توضیح بیشتر بدید
mkkamrani
چهارشنبه 18 شهریور 1394, 21:11 عصر
موضوع پروژه من recommender system هستش. این کد شباهت میان دو کاربر را با استفاده از ضریب همبستگی پیرسون بدست میاره. سوال من اینه که چطور میشه در معادله similari از سیگما استفاده کرد به صورتی که حد پایین سیگما برابر با ارایه اول بردار xy و حد بالا سیگما برابر با ارایه اخر بردار xy باشه؟ در ضمن xy برابر ایتم هایی است که کاربر u و v مشترکا به ان در ماتریس rprim امتیاز داده باشند.
rahnema1
چهارشنبه 18 شهریور 1394, 22:26 عصر
برای همبستگی می تونید از دستور corr استفاده کنید
البته با این روش پیشنهاد می کنم ماتریس similari را تشکیل ندهید زیرا حدود 4 گیگ حافظه اشغال می کنه
for u = 1:22166
c = find(S(u, :));
for v = c'
x = find(rprim(u, :));
y = find(rprim(v, :));
xy = intersect(x, y);
similari(u, v) = corr(rprim(u, xy), rprim(v, xy));
end
end
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.