از پایگاه داده خود حذف کنیم و بدین صورت به آماده سازی داده ها جهت اعمال روش تاخر، تناوب و مالی بر روی آنها و همچنین استخراج قوانین استنتاجی از آنها می پردازیم.
3-3 تعیین ارزش مشتری:
از آنجا که قصد ما این است که مشتریان را بر اساس ارزش آنها برای شرکت یا فروشگاه دسته بندی کنیم، باید بتوانیم که معیاری برای ارزیابی و مشخص کردن ارزش آنها تعیین کنیم.برای هر شرکت تجاری که به فروش کالا می پردازد میزان فروش بسیار حائز اهمیت می باشد.از این رو مشتریانی که میزان خرید آنها بالاتر می باشد برای آنها با ارزش تر و جذاب تر می باشند.همچنین میزان وفاداری مشتری به شرکت یا فروشگاه برای صاحبان شرکت نکته مهم و قابل توجهی می باشد.بدیهی است مشتریانی که وفاداری آنها به شرکت بیشتر می باشد، دارای ارزش بیشتری نزد مدیران شرکت یا صاحبان فروشگاه هستند.تعداد خریدهای مشتری و درعین حال در دسترس بودن آن می تواند معیار مناسبی برای تعیین و مقداردهی میزان وفاداری مشتری باشد.یکی از اهداف شرکت های تجاری نگه داشتن و حفظ مشتریان فعلی می باشد.از این رو نیز در دسترس بودن مشتری برای آنها دارای اهمیت می باشد.یکی از معیارهایی که در دسترس بودن مشتری را مشخص می کند تاریخ آخرین خرید مشتری می باشد.
تمام معیارهای بالا می تواند برای تعیین ارزش مشتریان یک سایت خرده فروشی اینترنتی حائز اهمیت باشد.برای اینکه بتوانیم تمام این معیارها را در ارزشیابی مشتریان بکار ببریم از روش تاخر، تناوب و مالی استفاده کردیم.این روش این امکان را بوجود می آورد که معیارهای تاخر که در دسترس بودن مشتری را نشان می دهد و تناوب که تعداد خریدهای مشتری را مشخص می کند و همچنین معیار مالی که مقدار پول خرج شده از طرف مشتری را نشان می دهد، بصورت یکجا مورد سنجش و ارزیابی قرار گیرند.
برای ارزشیابی مشتریان توسط این روش هر سه معیار را برای مشتریان بررسی می کنیم و یک امتیاز کلی به آنها اختصاص می دهیم.برای تعیین معیار تاخر بازه زمانی که مشتریان مورد مطالعه ما قرار گرفته اند را به 5 بازه زمانی تقسیم می کنیم و از دورترین بازه زمانی تا نزدیکترین بازه زمانی عدد 1، 2، 3، 4 و 5 را به ترتیب به آنها اختصاص می دهیم.بنابراین اگر زمان آخرین خرید مشتری در هر یک از این بازه های زمانی باشد، نمره اختصاص یافته به آن بازه ارزش مشتری برای این معیار می باشد.بدیهی است که مشتری با نمره بیشتر ارزش بیشتری برای شرکت یا فروشگاه خواهد داشت.
بازه زمانی کلی ما در این تحقیق از تاریخ 27/09/1390 تا تاریخ 26/11/1390 بود که آن را به 5 بازه تقسیم کرده ایم که همراه با نمره و ارزش آنها در جدول (3-2) آورده ایم.
جدول3-2 : ارزش گذاری معیار Recency
شماره بازه
تاریخ ابتدای بازه
تاریخ انتهای بازه
ارزش بازه
1
27/09/1390
08/10/1390
1
2
09/10/1390
20/10/1390
2
3
21/10/1390
02/11/1390
3
4
03/11/1390
14/11/1390
4
5
15/11/1390
26/11/1390
5

برای تعیین معیار تناوب،کمترین و بیشترین تعداد خرید توسط مشتریان را مشخص کرده و این دو عدد را بازه کلی در نظر می گیریم و این بازه را به پنج بازه تقسیم می کنیم.بعد از آماده سازی داده ها و حذف رکوردهای زائد، کمترین تعداد خرید یک مشتری 3 و بیشترین تعداد خرید یک مشتری 12 می باشد.بنابر این به تعداد خرید 3 و 4 عدد خرید، نمره 1 و به 5 و 6 عدد خرید، نمره 2 و به 7 و 8 عدد خرید نمره 3 و به 9 و 10 عدد خرید نمره 4 و در نهایت به 11 و 12 عدد خرید نمره 5 را اختصاص می دهیم.
برای تعیین معیار مالی نیز به این صورت عمل کردیم که کمترین و بیشترین میزان خرید را به عنوان بازه کلی در نظر گرفتیم و آن را به 5 بازه تقسیم کردیم.کمترین مقدار خرید 7000 تومان و بیشترین مقدار خرید نیز 75000 تومان می باشد.5 بازه مساوی بین این دو عدد در نظر گرفته شد که این بازه ها و نمره ای که برای آنها تعیین شده است در جدول ( 3-3) نشان داده شده است.
جدول 3-3 : ارزش گذاری معیار Monetary

شماره بازه
اندازه بازه
ارزش بازه
1
از 7000 تومان تا 20000 تومان
1
2
از 21000 تومان تا 34000 تومان
2
3
از 35000 تومان تا 47000 تومان
3
4
از 48000 تومان تا 61000 تومان
4
5
از 62000 تومان تا 75000 تومان
5

پس از مشخص شدن نحوه ارزش گذاری مشتریان بر اساس سه معیار تاخر، تناوب و مالی هریک از مشتریان را ارزش دهی می کنیم، به این صورت که به هر مشتری طبق قوانینی که برای ارزش دهی قرار دادیم سه عدد از 1 تا 5 اختصاص داده می شود که اولین عدد مربوط به معیار تاخر، دومین عدد مربوط به معیار تناوب و آخرین عدد مربوط به معیار مالی می باشد.این ارزش دهی برای تعدادی از مشتریان در جدول ( 3-4) آمده است و ارزش دهی کل مشتریان در فصل چهارم پایان نامه آمده است.

جدول 3-4 : مثال نحوه تخصیص RFM
شماره مشتری
تاریخ آخرین خرید
تعداد خرید
مقدار خرید
ارزش RFM
1
29/10/1390
8
33000
2،3،3
2
17/11/1390
8
31000
5،3،2
101
16/10/1390
4
25000
2،1،2

3-4 استفاده از تکنیک های داده کاوی:
برای دسته بندی مشتریان با توجه به ارزش های اختصاص داده شده به آنها از روش تاخر، تناوب و مالی، احتیاج داریم تا مشتریانی که ارز
ش های آنها مشابه و یا نزدیک بهم می باشد را در یک دسته قرار دهیم.یکی از ساده ترین و در دسترس ترین روش ها، خوشه بندی توسط الگوریتم K-Means است که با توجه به مراکزی که برای هر خوشه در نظر می گیرد، نمونه ها را بر طبق فاصله اقلیدسی آنها از هر یک از این مراکز به یکی از این خوشه ها اختصاص می دهد.از آنجایی که این الگوریتم معیار اندازه گیری فاصله اقلیدسی را برای نسبت دادن نمونه ها به نزدیکترین خوشه بکار می گیرد، ما هر یک از سه معیار تاخر، تناوب و مالی را یک بعد از فض در نظر می گیریم و ارزش های معیارهای هر یک از مشتریان را نشان دهنده مختصات آنها در فضا در نظر می گیریم.به این ترتیب با استفاده از الگوریتم خوشه بندی K-Means به دسته بندی مشتریان بر اساس ارزش آنها می پردازیم.
قصد ما این است که مشتریان را بر اساس ارزش آنها که از رفتار خرید پیشینشان بدست آمده است، به 3 دسته مشتریان برتر، مشتریان میانه و مشتریان کم بهره دسته بندی کنیم بطوریکه آن دسته از مشتریانی که ارزش بیشتری برای شرکت دارند در دسته مشتریان برتر و آن دسته که پایین ترین ارزش را برای شرکت دارند در دسته مشتریان کم بهره و آن دسته که ارزش پایین تری از مشتریان برتر و ارزش بالاتری از مشتریان کم بهره دارند در دسته مشتریان میانه قرار گیرند.
از آنجا که فضای مسئله ما یک فضای سه بعدی می باشد که اندازه هر بعد آن از عدد 1 تا عدد 5 می باشد، برای اینکه بتوانیم 3 مرکز خوشه داشته باشیم که فضا را به شکل مساوی تقسیم کنند و فاصله های یکسان از هم داشته باشند، ابتدا فضا را به 3 قسمت مساوی تقسیم کردیم و نقطه وسط هر قسمت را به عنوان مرکز انتخاب کردیم.بنابر این مختصات مرکز خوشه کم بهره (1.6،1.6،1.6 ) و مرکز خوشه میانه ( 3،3،3 ) و مرکز خوشه برتر ( 4.3،4.3،4.3 ) شد.
پس از انجام خوشه بندی با استفاده از الگوریتم K-Means هر یک از مشتریان تنها و تنها به یک خوشه تعلق پیدا می کنند.با توجه به مشکلاتی که این الگوریتم دارد و پیش تر ذکر شدند، نیاز به تکمیل و اصلاح عیوب و نقوص بود.در نتیجه بر آن شدیم تا الگوریتم K-Harmonic Means که اصلاحی از الگوریتم K-Means می باشد را بصورت موازی با K-means بکار ببریم.با استفاده از این الگوریتم درجه تعلق هر مشتری را نسبت به هر کدام از این خوشه ها بدست می آوریم.بدین ترتیب علاوه بر تعلق مطلق هر مشتری به یک خوشه که از الگوریتم K-Means منتج می شود، درجه تعلق هر مشتری نسبت به هر خوشه را نیز در اختیار داریم که بعد از مرحله استخراج قوانین از آن ها استفاده می کنیم.
بنابر این برای هر مشتری خوشه ای که توسط الگوریتم K-Means به آن اختصاص داده شده است به عنوان خوشه اصلی و خوشه ای که با توجه به الگوریتم K-Harmonic Means دومین درجه تعلق بزرگتر را نسبت به آن دارد، به عنوان خوشه دوم در نظر گرفته می شوند.اما با توجه به اینکه بیشترین درصدی که برای خوشه دوم یک مشتری می توان متصور شد کمتر از 50% می باشد، ما برای تحقیق خود درصدی بیش از نصف این 50% را برای معتبر ساختن خوشه دوم هر مشتری در نظر گرفتیم.بدین ترتیب برای هر مشتری اگر درجه تعلق آن به خوشه دوم بیشتر از 25% باشد معتبر شمرده می شود و می توان از قوانین مربوط به این خوشه برای مشتری استفاده کرد.
هر دو الگوریتم K-Means و K-Harmonic Means را در محیط متلب ( MATLAB 7.12 )پیاده سازی کردم.کدهای مربوط به این دو پیاده سازی در زیر آمده است :
کد خوشه بندی توسط K-harmonic means :
x = [3.0 3.0 2.0;5.0 3.0 2.0;5.0 3.0 2.0;5.0 3.0 3.0;5.0 3.0 2.0;5.0 3.0 2.0;5.0 4.0 3.0;5.0 3.0 3.0;5.0 3.0 2.0;4.0 3.0 4.0;5.0 3.0 3.0;5.0 3.0 2.0;4.0 3.0 4.0;4.0 3.0 3.0;4.0 3.0 2.0;4.0 3.0 2.0;4.0 3.0 4.0;5.0 3.0 2.0;5.0 4.0 3.0;5.0 3.0 2.0;5.0 4.0 2.0;5.0 4.0 2.0;5.0 3.0 2.0;5.0 3.0 2.0;5.0 3.0 2.0;4.0 3.0 4.0;4.0 3.0 2.0;3.0 3.0 2.0;4.0 3.0 3.0;4.0 3.0 2.0;4.0 3.0 2.0;4.0 3.0 2.0;4.0 4.0 4.0;4.0 3.0 2.0;4.0 3.0 2.0;4.0 3.0 3.0;4.0 3.0 2.0;5.0 5.0 5.0;5.0 4.0 5.0;5.0 5.0 4.0;5.0 2.0 3.0;5.0 2.0 1.0;4.0 2.0 2.0;4.0 2.0 1.0;4.0 2.0 3.0;4.0 2.0 1.0;2.0 2.0 2.0;5.0 2.0 1.0;4.0 2.0 2.0;5.0 2.0 1.0;4.0 2.0 1.0;4.0 2.0 3.0;3.0 2.0 1.0;5.0 2.0 2.0;4.0 2.0 2.0;5.0 2.0 2.0;3.0 2.0 2.0;3.0 2.0 1.0;4.0 2.0 1.0;2.0 2.0 2.0;5.0 2.0 1.0;3.0 2.0 2.0;5.0 2.0 3.0;4.0 2.0 3.0;5.0 2.0 2.0;3.0 2.0 2.0;4.0 2.0 3.0;5.0 2.0 2.0;5.0 2.0 2.0;5.0 2.0 2.0;5.0 2.0 3.0;5.0 2.0 2.0;3.0 2.0 2.0;1.0 2.0 2.0;2.0 2.0 2.0;4.0 2.0 2.0;5.0 2.0 2.0;4.0 2.0 2.0;3.0 2.0 2.0;3.0 2.0 2.0;5.0 2.0 3.0;4.0 1.0 1.0;4.0 1.0 1.0;4.0 1.0 1.0;3.0 1.0 1.0;5.0 1.0 1.0;4.0 1.0 1.0;5.0 1.0 1.0;4.0 1.0 1.0;2.0 1.0 1.0;4.0 1.0 1.0;2.0 1.0 1.0;3.0 1.0 1.0;3.0 1.0 1.0;4.0 1.0 1.0;5.0 1.0 2.0;4.0 1.0 1.0;4.0 1.0 1.0;4.0 1.0 3.0;3.0 1.0 1.0;2.0 1.0 2.0];

c = [1.7 1.7 1.7;3.0 3.0 3.0;4.3 4.3 4.3];
B = 0;
while B 20
t = 0;
cluster = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
q = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
f = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
s = [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
o1 = [0 0 0];
o2 = [0 0 0];
o3 = [0 0 0];
l = [0 0 0];
for i = 1:101
for j = 1:3
D1(i,j) = ( x(i,1) – c(j,1) );
D2(i,j) = ( x(i,2) – c(j,2) );
D3(i,j) = ( x(i,3) – c(j,3) );
end
end
for i = 1:101
for j = 1:3
fprintf(‘Dis %d %d is: (%f,%f,%f)n’,i,j,D1(i,j),D2(i,j),D3(i,j));
end
end
for i = 1:101
for j = 1:3
dist(i,j)= sqrt((D1(i,j) ^ 2) + (D2(i,j) ^ 2) + (D3(i,j) ^ 2));
end
end
for i = 1:101
for j = 1:3
fprintf(‘Dist %d %d is: %fn’,i,j,dist(i,j));
end
end
for i = 1:101
for j = 1:3
t = t + ( 1 / ( dist(i,j) ^ 2 ));
end
end
KHM = 2 / t;
fprintf(‘KHM is:%fn’,KHM);
for i = 1:101
for j = 1:3
q(i) = q(i) + ( dist(i,j) ^ (-4) );
end
end
for j
= 1:3
for i = 1:101
m(j,i) = ( dist(i,j) ^ (-4) ) / q(i);
end
end

for i = 1:101
for j = 1:3
f(i) = f(i) + ( dist(i,j) ^ (-4) );
s(i) = s(i) + ( dist(i,j) ^ (-2) );
end
end
for i = 1:101
r(i) = s(i) ^ 2;
w(i) = f(i) / r(i);
end
for i = 1:101
fprintf(‘the weight of %d is: %fn’,i,w(i));
end
for j = 1:3
for i = 1:101
o1(j) = o1(j) + ( m(j,i) * w(i) * x(i,1) );
o2(j) = o2(j) + ( m(j,i) * w(i) * x(i,2) );
o3(j) = o3(j) + ( m(j,i) * w(i) * x(i,3) );
l(j) = l(j) + ( m(j,i) * w(i) );
end
end
for j = 1:3
c(j,1) = o1(j) / l(j);
c(j,2) = o2(j) / l(j);
c(j,3) = o3(j) / l(j);
end
for j = 1:3
fprintf(‘c %d = (%f,%f,%f)n’,j,c(j,1),c(j,2),c(j,3));
end
B = B + 1;
end

for i = 1:101
if (m(1,i) m(2,i)&& m(1,i) m(3,i))
cluster(i) = 1;
else if (m(2,i) m(3,i))
cluster(i) = 2;
else
cluster(i) = 3;
end
end
end
for i = 1:101
fprintf(‘membership of item %d for cluster 1,2,3 is: %f,%f,%f n’,i,m(1,i),m(2,i),m(3,i));
end
for i = 1:101
fprintf(‘first cluster of the item %d is:%d n’,i,cluster(i));
end

کد خوشه بندی توسط K-means :
x = [3.0 3.0 2.0;5.0 3.0 2.0;5.0 3.0 2.0;5.0 3.0


دیدگاهتان را بنویسید