Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2019, 19:40   #1
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию найти сильно отличающееся значение

Здравствуйте, чтото не могу найти подходящего эффективного алгоритма. Понимаю что решение должно быть простым но ...

В общем суть задачи:
Есть некоторые объекты которые надо отслеживать на каждой итерации алгоритма.
Есть метрика сравнения объектов. Результатом является число double.
вот примеры результатов сравнения.

Код:
[0.12]	   <- это нужный объект
[82.958]
[84.683]
[81.869]
Код:
[67,6048953225847]
[5,12]          <- это нужный объект
[68,1565898666424]
[67,6048953225847]
То есть когда объект найден в имеющимся списке то он радикально ниже по значению метрики чем окружающие.
НО .. это не минимальное значение поскольку когда массив изначально пуст и происходит первичное наполнение минимальное значение вернет неправильный результат

Код:
[67,6048953225847]   - это другой объект, на этой итерации новый объект надо добавить
Код:
[67,6048953225847]   - это другой объект, на этой итерации новый объект надо добавить
[84.683] - это другой объект, на этой итерации новый объект надо добавить

Вот вариант когда данные искажены сильно и метрика дает также расплывчатый результат:
Код:
[125.618]
[114.199]
[147.152]
[85.6786]  -  вот нужный объект

Пробовал смотреть по порогам но это тухлое дело поскольку пороги плавают в зависимости от изменения состояния объектов. где то 40 нормально но потом это может плавать в огромных диапазонах.
Также пытался максимум среднеквадратичного отклонения .. но то же самое что и с порогами.

В общем если у кого какие идеи есть подкиньте пожалуйста.

Спасибо.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 07.08.2019 в 19:49.
WorldMaster вне форума Ответить с цитированием
Старый 08.08.2019, 09:30   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

А как вы понимаете, что это не тот объект, когда в списке мало объектов? Может быть и отталкиваться от количества? Если мало объектов, то не искать вообще, а если достаточно, то минимум по метрике?
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.08.2019, 10:31   #3
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
А как вы понимаете, что это не тот объект, когда в списке мало объектов? Может быть и отталкиваться от количества? Если мало объектов, то не искать вообще, а если достаточно, то минимум по метрике?
А нету границ. Может и один быть а может и 50. Надо соответствие найти. По идее у одинакового объекта метрика будет давать меньшее значение.
Может быть один объект какое то время, а затем бац и появился новый. и надо проверить есть ли новый уже в базе и провести сопоставление.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 08.08.2019, 14:15   #4
Dekay
Пользователь
 
Регистрация: 21.06.2016
Сообщений: 65
По умолчанию

Эм..
Код:
sum = a[0] + a[1] + .. + a[n-1];
for i in 0..n-1
  tmp_val = (sum-a[i])/(n-1);
  dev = abs(a[i] - tmp_val);
После этого ищется индекс, где dev максимальное. Конец. Ну или неправильно прочитал-понял задачу
Dekay вне форума Ответить с цитированием
Старый 08.08.2019, 15:14   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Dekay Посмотреть сообщение
Эм..
Код:
sum = a[0] + a[1] + .. + a[n-1];
for i in 0..n-1
  tmp_val = (sum-a[i])/(n-1);
  dev = abs(a[i] - tmp_val);
После этого ищется индекс, где dev максимальное. Конец. Ну или неправильно прочитал-понял задачу
Это среднеквадратичное отклонение.
Что оно вам выдаст в случае:

Код:
[82.958]
[84.683]
[81.869]
Оно найдет конечно максимальное но это не будет правильным. Потому что сейчас в базе нету объекта похожего.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 08.08.2019, 15:23   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Оно найдет конечно максимальное но это не будет правильным
В том примере отклонение от среднего не более двух процентов. Считать нормой, например, если отклонение процентов 30 и больше.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 08.08.2019, 22:06   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В том примере отклонение от среднего не более двух процентов. Считать нормой, например, если отклонение процентов 30 и больше.
А какой нибудь безпороговой меры не существует??
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.08.2019, 01:09   #8
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
А какой нибудь безпороговой меры не существует??
1)СКО - средне квадратичное отклонение.
2)
Берёшь среднее потом минимизируешь что меньше максимизируешь, что выше.
Считаешь количество максимумов и минимов. И выбираешь тех кого меньше это и будет искомое.
3) Bilateral Filtering бывает 2-х разновидностей смотрите ту что на основе order statisic
4) Мередиана.


А вообще вы бы описали зачем вам нужна метрика. А то так ничего не понятно. Лучше более предметно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 09.08.2019, 01:34   #9
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

https://www.tensorflow.org/api_docs/...as/activations
Посмотрите relu и softmax.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 09.08.2019, 10:00   #10
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

Pavia
Цитата:
4) Мередиана.
Эту оценку называют медианной (она совпадает со средним при симметричном распределении).
Если есть поток, то возможно, что существует некоторое предположение о его статистике или можно построить модель, которая позволит получить закон распределения вероятности.
В этом случае отбор можно будет сделать более обоснованно. В дополнение в модели можно установить размер окна, в котором работает статистика. В этом случае оценка события будет плавающей и зависящей либо только от событий текущего окна, либо ...
Ведь каким то образом получен признак
Цитата:
[0.12] <- это нужный объект
Но это общие фразы ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение на другом листе и подставить значение следующей ячейки ElenaNTro Microsoft Office Excel 12 11.02.2019 12:44
Найти значение выражения Lolopop12 Общие вопросы C/C++ 3 08.02.2016 19:58
Найти наименьшее значение Dima-War Общие вопросы C/C++ 3 24.03.2012 10:26
найти наибольшее значение laychan Помощь студентам 1 23.03.2012 12:48
Найти значение функции Y ahtung Microsoft Office Excel 6 24.12.2008 15:59