Что делаем
Сейчас, используя простую нейронную сеть (нынче модно), мы создадим сервис, который будет предполагать, произведет ли посетитель сайта покупку. Представьте что у вас есть 100 товаров, и у каждого есть 10 характеристик (которые принимают значения да/нет/неизвестно - это может быть что угодно, например "дорого", "гарантия 2 года", или какое-то свойство товара).Теперь, допустим, на сайте (интернет-магазине) уже скопилась некоторая статистика: посетитель зашел на некоторые страницы с товарами и затем либо сделал покупку товара с определенными характеристиками, либо нет.
Сконструируем простую нейросеть, которая, будучи обученной на уже известных данных, начнет предсказывать купит ли посетитель что-либо или нет (для любых данных). Смысл использования нейросетей в том и заключается, что она может действовать "по аналогии" в случае неизвестных ситуаций, при этом эти аналогии далеко не поверхностны.
Как делаем
У нейросетей работают "слои", в нашем случае слоя будет три - входной, промежуточный, и выходной. Каждый элемент слоя - вход, который принимает значения от 0 до 1 (у нас будут только 0 и 1, да или нет), а затем распространяет сигнал дальше. Промежуточный слой называют скрытым (и чем таких слоев больше, тем "умнее" сеть, но тем сложнее её обучать).В нашем случае входом будет массив из 0 и 1 длиной 100 + 10 * 3 = 130. В первой сотне будут стоять единички на тех местах, номера товаров которые посетитель сайта просматривал, а 10 * 3 - это значения характеристик товаров, которые присутствовали в просмотренных.
Таким образом [1, 1, 0, ..... (97 нулей), 1, 1, 0, ... (27 нулей)] будет означать что посетитель просмотрел первый и второй товары, у которых первая характеристика была как в наличии, так и не в наличии (последний указанный ноль означает, что "неизвестно" для характеристики не встречалось в первом и втором товарах).
Количество "нейронов" в промежуточном слое не особо вдаваясь в заумности выберем как половину от 130: 65. Выходной слой будет иметь 2 элемента: 1 выход для "купит" или "не купит" (максимальное будет решением - принцип "победитель получает всё").
Код
Посмотрите по ссылке код. Он использует библиотеку synaptic.js, которая умеет составлять сети и тренировать их. В примере кода, поскольку никаких исходных чьих-то данных я не использую, я их генерирую случайным образом. При этом нейросеть на работоспособность все равно можно - просто потом сравнить данные для обучения с вычисляемым выходом.
В данном примере значения не 100 и 10 (для товаров и характеристик) - обучение достаточно затратная операция по памяти, поэтому числа уменьшены.
Заключение
Выглядит это как-то так (вводятся номера посещенных страниц).Естественно, мозг покупателя устроен куда как сложнее, но... на ecommerce-сайтах часто нет столько данных, чтобы человеческий мозг отрабатывал их во всем возможном многообразии. Простые данные - простые решения... это не модель мозга, но модель принятия решений. Конечно простая, но для целей иллюстрирования - вполне годная. И "знал бы прикуп - жил бы в Сочи" - нет таких моделей, которые бы стопроцентно угадывали, но исходя из предположений (например, о том, что уже купит), вы можете изменять дизайн или контент на сайте.