Просто не вижу смысла в реалтизации алгоритмов с сложностью O(n^2) и выше. Чисто для интереса не более. Приболее менее приемлемом числе n — это займет часы.
Пруфкод алгоритмы линейной сложности в студию, это неочевидно. Крупный проект ваш алгоритм уже не потянет.
И да, засуньте вы содержимое этих циклов в один/два (с препроцессингом), у них же пределы одни и те же. Понять ваши намерения в момент, когда вы создали массивы со степенями и произведениями, я вообще не понял.
Хабраюзерам, которые сейчас радостно минуснут, напомню одну истину. Если бы ученым приходилось доказывать неверность каждой неверной идеи, мы бы дальше паровых машин не ушли бы никогда. До тех пор, пока критикующие не заходят за рамки здоровой критики, автор должен отстаивать точку зрения.
Забавно, нам в любом случае надо считать для всех N пользователей «похожих» на них. Видимо есть какие-то методы, позволяющие не перебирать всех остальных N для каждого, было бы интересно узнать.
1. не все будут ей пользоваться, кто не хочет их и не используем
2. пусть пользователь сам настраивает кто ему надо и с какими интересами
3. если думать, можно много придумать :)
Думаю, что эти методы заключаются в какой-то кластеризации, то есть, разделении пользователей сперва на группы по интересам (это также задача статистики).
Затем к пользователям из одного кластера уже можно применять более сложные и вычислительно затратные методы, чтобы получить более точные рекомендации.
тут выбор невелик: Энтропия регрессии:
либо сложность алгоритма, либо малоэффективный обсчет.
вообще-то все численные алгоритмы можно преспокойно обсчитать в бэдграундовом процессе, даже на отдельном сервере используя С++ и пара миллионов пользователей не будет пределом
а РНР использовать фронтэндом, для чего он впрочем и предназначен.
Замечательная статья, но «тем более вероятнее» — так не говорят, либо более вероятно, либо просто вероятнее, если не изменяет память. Да здравствует русский язык!
а, вообще метод расчета очень похож на формирование матрицы расстояний в многомерном пространстве.
расчитываем расстояния меджу точками (критерии предпочтений).
Какие точки ближе всего, те — наши Друзья :)
Рекомендации друзей для социальных сетей