ПРИМЕР: скажем, есть три сайта, и мы хотим сравнить универсальность пользователей A, B, C. Мы записываем репутацию пользователей на трех сайтах в векторной форме:
Пользователь A: [23, 23, 0]
Пользователь Б: [15, 15, 0]
Пользователь C: [10, 10, 10]
Мы бы посчитали A более округлым, чем B (их репутация распределена равномерно по двум сайтам, но у A более высокая репутация). Кроме того, мы считаем, что C более округлый, чем B (у них одинаковая общая репутация, но C имеет равномерный разброс по большому количеству сайтов). Неясно, следует ли считать A более округленным, чем C, или наоборот. ,
Пусть , , будут вышеупомянутыми векторами репутации соответственно.xAxBxC
Мы хотим измерить «округлость» пользователя функцией вектора его репутации . Согласно вышесказанному, мы бы хотели, чтобы наша функция удовлетворяла и .f(x)ff(xA)>f(xB)f(xC)>f(xB)
Любая которая вогнута и увеличивается , сделает свое дело.f(x)
Два общих примера выпуклых функций - это «дробная норма»
f([x1,...,xm])=∑ixpi
для .0<p<1
Взяв , рассчитаемp=1/2
f(xA)=223−−√≈9.6
f(xB)=215−−√≈7.7
f(xC)=310−−√≈9.5
Согласно норме, пользователь А будет считаться наиболее округлым из трех с небольшим запасом по сравнению с пользователем С.1/2
Другой выбор для - это (масштабированная) энтропия Шеннонаf
f([x1,...,xm])=−∑ixilog(xi/c).
где .c=∑ixi
Если взять за масштабированную энтропию Шеннона, то мы вычислимf
f ( x B ) = 30 log ( 2 ) ≈ 20,8 f ( x C ) = 30 log ( 3 ) ≈ 33,0
f(xA)=46log(2)≈31.9
f(xB)=30log(2)≈20.8
f(xC)=30log(3)≈33.0
Измеряемая по масштабированной энтропии Шеннона, мы бы сказали, что C - самая округлая из трех, а A - вторая по округленности.
РЕДАКТИРОВАТЬ: я первоначально сказал, что функция должна быть выпуклой; обратное верно.f(x)
EDIT2: добавлен пример в свете комментария whuber.