#database #algorithm #sorting
Вопрос:
Я столкнулся с проблемой. Я не прошу помощи в том, как построить то, что я ищу, но только для того, чтобы направить меня к тому, что я ищу! 😊 То, что я хочу создать, — это своего рода «Алгоритм/механизм сортировки».
Пример: Представьте, что у меня есть база данных с более чем 1000 фотографиями различных транспортных средств. Человек видит транспортное средство, теперь он пытается получить как можно больше информации и подробностей об этом транспортном средстве, таких как:
- Форма
- количество колес
- количество и форма окон
- количество и форма света(ов)
- количество и форма выхлопа(ов)
И т.д.…
Затем он дает мне всю информацию о том транспортном средстве, которое он видел. НО! Ничего не сказав мне о: Марке и модели. … Теперь я возьму эту информацию и скажу своей базе данных отсортировать каждое транспортное средство, чтобы оно распределило все 1000 транспортных средств по наилучшему соответствию, основываясь на описании, которое ему было дано. Но это не должно исключать ни одного транспортного средства!
Так…
Если человек говорит мне, что у транспортного средства только 4 колеса, но на самом деле у него 5 (он, возможно, не видел пятое колесо), он должен просто получить плохую оценку в # колес. Но если все остальные аспекты будут идеально соответствовать этому автомобилю, он все равно получит высокий балл.
Таким образом, мы не исключаем автомобиль, который он видел, и у нас все еще есть изменения, чтобы найти правильный автомобиль.
Весь аспект этого механизма заключается в том, чтобы, как уже было сказано, рассортировать больше всего, поэтому вместо того, чтобы просматривать 1000 автомобилей, нам нужно только отсортировать лучшие совпадения, которые составляют от 10 до, возможно, 50 автомобилей из 1000 (надеюсь).
Я попытался описать это как можно лучше на языке, который не является «языком моего отца». Так что потерпи меня.
Опять же, я не ищу никого, кто бы говорил мне, как создать этот алгоритм, я почти уверен, что никто даже не хочет тратить время на то, чтобы сделать это за меня, не получая при этом какой-либо платы… Но мне просто нужно знать, где искать информацию об обучении и понимании того, как создать этот беспорядочный механизм.
С уважением, Джентльмен!
Ответ №1:
Предполагая, что все ваши фотографии были проиндексированы с соответствующими полями (количество колес, формы окон…), и учитывая, что их не слишком много (тысяча-мелочь для компьютера), вы можете поступить следующим образом:
- для каждого критерия взвесьте возможные расхождения (например, одно колесо слишком дорого стоит 5, одно колесо слишком мало стоит 10, неправильная форма окна стоит 8…). Сделайте это согласованным образом, чтобы затраты на критерии были хорошо сбалансированы.
- чтобы выполнить поиск, оцените общую стоимость несоответствия каждого автомобиля и все чаще сортируйте значения. Доложите о первых десяти.
Технически то, что вам нужно, называется «поиском ближайшего соседа» в многомерном пространстве. Эта проблема хорошо изучена. Существуют быстрые решения, но они чрезвычайно сложны, и в вашем случае их абсолютно не стоит использовать.
Комментарии:
1. Спасибо вам за четкий ответ! Да, фотографии должны быть предварительно проиндексированы в разных значениях до мельчайших деталей. Просто посмотрел его, и алгоритм ближайшего соседа, похоже, то, что мне придется искать! 🙂 Это кажется слишком сложным для того, что я описал, но то, что я описал, не совсем то, что я делаю сейчас. Но что-то в этом роде. Еще раз большое спасибо за хороший ответ! 🙂
Ответ №2:
Способ выполнения этого по умолчанию, например, в искусственном интеллекте, заключается в кодировании всех свойств в виде вектора и применении определенных весов к каждому свойству. Затем расстояние можно рассчитать, используя любую понравившуюся вам метрику. В вашем случае расстояние Манхэттена должно быть в порядке. Итак, в псевдокоде:
distance(first_car, second_car):
return abs(first_car.n_wheels - second_car.n_wheels) * wheels_weight ...
abs(first_car.n_windows - second_car.n_windows) * windows_weight
Это прекрасно работает для простых свойств, таких как количество колес. Для более сложных свойств, таких как форма окна, вам, вероятно, потребуется разделить его на несколько атрибутов в зависимости от ваших требований к сходству.
Веса обычно подбираются таким образом, чтобы нормализовать все значения, если известен их диапазон. При необходимости можно умножить дополнительный коэффициент, чтобы увеличить влияние определенного атрибута на общее расстояние.
Комментарии:
1. Спасибо вам за ответ. Это очень ценно! 🙂