Вам шашечки или ехать? Если это для диплома, то одно. А если для решения конкретной задачи, то другое.
Допустим, у вас интернет-магазин одежды и нужно показать "похожие товары". В этом случае проще хранить связи не между сотнями тысяч товаров, а между десятком категорий. Например, при покупке любой куртки предложить шапку, шарф и перчатки.
Для десятка связей обучение произойдет достаточно быстро. Пока оно происходит - используйте обычный rand() для выбора сопутствующей категории и выбирайте самый продаваемый товар в этой категории.
Для ускорения используйте "обучение с учителем", то есть сами (или наймите фрилансера) подберите связанные категории.
Потом можно будет улучшать дальше. Например, если куртка из среднего ценового диапазона (среди курток), то и шапку предлагать тоже из среднего ценового диапазона (среди шапок).