Системи за препоръчване, част 1
Как работят механизмите за препоръчване в Интернет
Серия съдържание:
Това съдържание е част # от поредица # статии: Системи за препоръчване
Това съдържание е част от поредицата: Системи за препоръчване
Очаквайте нови статии от тази серия.
Къде можете да намерите препоръчителна система?
Системите за препоръки присъстват на много от уебсайтовете, които използвате всеки ден, включително следните добре познати сайтове.
Amazon е популярен сайт за електронна търговия, който използва препоръки, базирани на съдържание. Когато посетител избере продукт за закупуване, Amazon препоръчва други продукти, закупени от други потребители въз основа на този оригинален продукт (използвайки следващата матрица за покупка на продукт въз основа на неговата прилика с предишната покупка). Amazon патентова този подход, наречен съвместно филтриране от артикул до артикул.
Освен това механизмите за препоръки се използват на сайтове като Facebook, Twitter, Google, MySpace, Last.fm, Del.icio.us, Pandora, Goodreads и вашия любим онлайн сайт за новини. Използването на един или друг механизъм за препоръки се превръща в стандартен елемент на съвременното уеб представяне.
Системите за препоръчване промениха начина, по който неодушевените уебсайтове взаимодействат със своите потребители. Вместо да предоставят статична информация, докато потребителите търсят и евентуално купуват продукти, препоръчителните системи повишават степента на интерактивност, за да подобрят потребителското изживяване. Системите за препоръки генерират препоръки независимо завсеки отделен потребител въз основа на техните минали покупки и търсения, както и въз основа на поведението на други потребители. Тази статия описва препоръчителните системи и алгоритмите, внедрени в тях. Втората статия от тази серия разглежда предложения с отворен код за изграждане на препоръчителни системи.
Основни подходи
Повечето системи за препоръчване използват един от двата основни подхода: съвместно филтриране и филтриране, базирано на съдържание. Съществуват и други подходи (включително хибридни).
Съвместно филтриране
Съвместното филтриране генерира препоръки въз основа на модел на миналото поведение на потребителя. Този модел може да бъде изграден единствено въз основа на поведението на даден потребител или, по-ефективно, като се вземе предвид поведението на други потребители с подобни характеристики. Когато съвместното филтриране взема предвид поведението на други потребители, то използва групови знания, за да направи препоръки въз основа на приликата на потребителите. По същество препоръките се основават на автоматичното сътрудничество на много потребители и на подбора (чрез филтриране) на тези потребители, които показват подобни предпочитания или модели на поведение.
Като пример, да приемем, че изграждате уебсайт, за да предлагате препоръки за блогове на посетителите. Въз основа на информация от много потребители, които се абонират и четат блогове, можете да групирате тези потребители според техните предпочитания. Например, можете да комбинирате в една група потребители, които четат няколко от едни и същи блогове. С тази информация виеидентифицирайте най-популярните блогове сред четените от членовете на тази група. След това на конкретен потребител в тази група препоръчвате най-популярния блог, за който той все още не е абониран или чел.
Фигура 1. Прост пример за съвместно филтриране
Вече ще можете да идентифицирате специфични разлики във всеки клъстер и да формирате смислени препоръки. В клъстер 1 Марк е прочел 10 статии в блог с отворен код, докато Елиз не е прочела нито една от тях; Елиза е прочела една публикация в блога на Agile, но Марк не е прочел нито една. Така, въз основа на фиг. 1, Elise може да препоръча блога с отворен код. Не е възможно Марк да формира каквито и да е препоръки, тъй като малката разлика между него и Елиза в броя на прочитанията на Agile блога вероятно ще бъде филтрирана. В Клъстер 2 Джил прочете три статии в блог с отворен код, докато Меган не прочете нито една; Меган е прочела 3 статии в блога за Linux, но Джил не е прочела нито една от тях. По този начин за членовете на клъстер 2 могат да бъдат формирани следните две препоръки: на член Джил се препоръчва да води блог на Linux, а на член Меган се препоръчва да блогва на продукти с отворен код.
Друг начин за разглеждане на тези връзки се основава на техните прилики и разлики, както е илюстрирано от диаграмата на Вен на фиг. 2. Приликите определят по какъв признак (с помощта на подходящ алгоритъм) да се групират потребители със сходни интереси. Разликите са възможности, които могат да се използват за отправяне на препоръки – например чрез прилагане на филтър за популярност.
Фигура 2. Прилики и разлики, използвани при съвместно филтриране
Въпреки че на фиг. Фигура 2 показва опростена картина (която също страда от рядкост на данните поради използването само на две проби), такова представяне е много удобно.
Филтриране на съдържание
Да се върнем на фиг. 1 и помислете за потребител на име Eliza. Да приемем, че прилагате класация на блог, която показва, че потребителите, които са чели статии за Linux, може да се интересуват от изчислителни облаци и продукти с отворен код. В този случай можете лесно да препоръчате на Elise - въз основа на настоящите й навици за четене - блог с отворен код. Този подход, илюстриран на фиг. 3 разчита единствено на съдържанието, достъпно от един потребител, а не на поведението на други потребители в системата.
Фигура 3. Класиран списък на разликите, използвани при филтриране на съдържание
Диаграмата на Venn (вижте Фигура 2) може да се приложи и тук: ако едната страна е потребител Eliza, а другата страна е класиран набор от подобни блогове, тогава приликите се игнорират (тъй като Eliza вече е чела съответните блогове), а класираните разлики създават възможности за препоръки.
Хибридни подходи
Хибридните подходи, които комбинират съвместно филтриране и филтриране на съдържание, също повишават ефективността (и сложността) на препоръчителните системи. Един прост пример за хибридна система може да използва подходите, показани на фиг. 1 и на фиг. 3. Комбинирането на резултатите от съвместното филтриране и филтрирането на съдържание потенциално подобрява точността на препоръката. В допълнение, хибридният подход може да бъде полезен, ако се използва съвместенфилтрирането започва, когато данните са много оскъдни (така наречения студен старт). Хибридният подход ви позволява първо да претеглите резултатите според филтрирането на съдържанието и след това да преместите тези тегла към съвместно филтриране (когато наличният набор от данни за конкретен потребител узрее).
Алгоритми, използвани от препоръчителните системи
Добре познатият подход, използван в конкурса за награди на Netflix, ясно демонстрира, че голямо разнообразие от алгоритми може да се използва в механизмите за препоръчване. Получените резултати може да се различават в зависимост от проблема, за който е проектиран конкретният алгоритъм, и от връзките, които присъстват в данните. Много от тези алгоритми идват от областта на машинното обучение (което от своя страна е подполе на изкуствения интелект), което се занимава с алгоритми за обучение, прогнозиране и вземане на решения.
Корелация на Пиърсън
Корелацията на Pearson, която се използва широко в изследователски дейности, е много популярен алгоритъм в областта на съвместното филтриране.
Алгоритми за групиране
Има много алгоритми за групиране. Най-простият от тях е алгоритъмът за k-средни стойности, който разделя елементите на k клъстера. Първоначално елементите се разпределят между тези клъстери в произволен ред. След това, за всеки клъстер, центърът на масата (или просто центърът) се изчислява като функция на неговите членове. След това се проверява разстоянието на всеки член на клъстера от центъра на този клъстер. Ако този тест доведе до това, че даден член е по-близо до друг клъстер, той се премества в този клъстер. След проверка на всички разстояния за всички членове, центровете на клъстерите се преизчисляват. При достиганестабилно състояние (по време на следващата итерация членовете не са се преместили), наборът се счита за правилно групиран и алгоритъмът спира.
Изчисляването на разстоянието между два обекта може да бъде трудно за визуализиране. Един от често срещаните методи за решаване на този проблем е всеки член на клъстера да се разглежда като многомерен вектор и да се изчисли за него т.нар. Евклидово разстояние.
Има много други видове групиране, включително теория на адаптивния резонанс, размито групиране на C-средства, очакване-максимизиране и др.
Други алгоритми
Машините за препоръчване могат да използват много алгоритми (и ако вземете предвид вариациите, има още повече). Ще изброя някои успешно приложени алгоритми.
- Байесови мрежи на вярванията - могат да бъдат визуално представени като насочена ациклична графика, чиито краища представляват свързаните вероятности на променливи.
- Веригите на Марков - Въз основа на същия подход като Bayesian Belief Networks, но разглежда проблема с препоръката като последователна оптимизация, а не просто прогнозиране.
- Класификация на Rocchio (базирана на векторен модел) - Използва обратна връзка за уместността на артикула, за да подобри точността на препоръките.
Проблеми на препоръчителните системи
Възможностите за събиране на данни, предоставени от Интернет, значително опростиха използването на „мъдростта на тълпата“ чрез съвместно филтриране. От друга страна, огромното количество налични данни го затруднявареализация на тази възможност. Например, поведението на някои потребители е доста податливо на моделиране, но други потребители не показват типично поведение. Наличието на такива потребители може да доведе до отклонение в резултатите на препоръчителната система и да намали нейната ефективност. В допълнение, потребителите могат да използват системата за препоръчване, за да увеличат предпочитанията на един продукт пред друг - например, като подадат положителни отзиви за един продукт и отрицателни отзиви за неговите конкуренти. Една добра препоръчителна система трябва да се справи с тези проблеми.
Друг проблем с големите препоръчителни системи е мащабируемостта. Традиционните алгоритми работят добре със сравнително малки количества данни, но тъй като тези набори от данни растат, получаването на резултати на същото ниво на качество с помощта на традиционните алгоритми може да стане проблематично. В случай на офлайн обработка това може да не е голям проблем, но за сценарии в реално време са необходими по-специализирани подходи.