кривая подгонки: какая модель описывает распределение во взвешенных графах знаний

В качестве простой модели для представления сети знаний и изучения свойств взвешенных графов я вычислил косинусное сходство между статьями в Википедии.

Сейчас я смотрю на распределение весов сходства для каждой статьи (см. картинки).

На рисунках вы видите, что кривая изменяет производную вокруг определенного значения (возможно, с экспоненциальной на линейную): я хотел бы подогнать кривую и извлечь это значение, где производная явно (или ожидаемо) изменяется, так что я можно разделить похожие статьи на два набора: «наиболее похожие» (слева от порога) и «другие» (справа от порога).

Я хочу подогнать кривую для каждого распределения статей; сравнить распределение по отношению к среднему распределению всех статей; сравнить распределение относительно распределения случайной взвешенной сети. (Ваши предложения очень приветствуются при определении рабочей процедуры: вы знаете, что я хотел бы использовать эту модель в качестве игрушечной модели, чтобы затем обучить, как сеть или статья могут развиваться во времени).

Мой опыт работы с пользователем с уклоном в науку о данных, я хочу лучше понять, какая модель может описать распределение значений, которые я наблюдал, правильный способ сравнения распределений и инструменты Python (или Mathematica 11), чтобы подогнать кривую и получить производная для каждой точки.

  • какую модель вы предлагаете для описания распределения наблюдаемых значений сходства между объектами во взвешенной сети (здесь совместная база знаний представлена ​​​​в виде взвешенной сети, где вес - это значение сходства двух заданных статей - следует ли ожидать экспоненты? пуассоновский? почему?)
  • как вычислить соответствие кривой и извлечь производную кривой в заданной точке (python или Mathematica 11)

введите здесь описание изображения введите здесь описание изображения

введите здесь описание изображения введите здесь описание изображения


введите здесь описание изображения


person user305883    schedule 18.08.2017    source источник


Ответы (1)


Работая с Mathematica, предположим, что ваши данные находятся в списке data. Затем, если вы хотите найти кубический многочлен, который лучше всего соответствует вашим данным, используйте Fit функция:

Fit[data, {1, x, x^2, x^3}, x]

В целом использование команды Fit выглядит так:

Fit["data set", "list of functions", "independent variable"] 

где Mathematica пытается подогнать линейную комбинацию функций из этого списка к вашему набору данных. Я не уверен, что сказать о том, какую кривую мы ожидаем лучше всего смоделировать для этих данных, но просто помните, что любая гладкая функция может быть аппроксимирована с произвольной точностью полиномом с достаточным количеством условия. Поэтому, если у вас есть лишняя вычислительная мощность, пусть ваш список функций будет длинным списком степеней x. Хотя похоже, что у вас есть асимптота в x=0, так что, возможно, допустите, что там будет член 1/x, чтобы зафиксировать это. И затем, конечно, вы можете использовать Plot для построения кривой. поверх ваших данных, чтобы сравнить их визуально.

Теперь, чтобы получить эту наилучшую кривую как функцию в Mathematica, от которой вы можете взять производную:

f[x_] := Fit[data, {1, x, x^2, x^3}, x]

И тогда очевидное изменение, о котором вы говорите, происходит, когда вторая производная равна нулю, поэтому, чтобы получить это значение x:

NSolve[f''[x] == 0, x]
person Mike Pierce    schedule 18.08.2017
comment
спасибо @Майк Пирс! У меня есть асимптота при x = 0 по построению: точки на оси X представляют не значения, а отсортированное _i-_ положение соседа по отношению к родительскому узлу (который имеет позицию 0). Теперь я попытался Plot[ Fit[data, {1, x, x^2, x^3}, x], {x, xmin, xmax}], но ничего не появляется .. Не могли бы объяснить (или указать теорему - кто был, Коши? Я ржавый в исчислении! :) ), почему очевидное изменение происходит, когда f'(x)=0? Глядя на первый график, видно, что изменение происходит в первых 50 значениях, полином от x^3, кажется, не описывает его... Вы доступны в чате для помощи в моделировании? - person user305883; 18.08.2017
comment
Точка, которую вы описываете, называется точкой перегиба, и она возникает, когда вторая производная f''(x) равна нулю. Об этом можно прочитать в любом учебнике по математическому анализу. В одном кратком предложении точки перегиба возникают, когда скорость, с которой скорость изменения вашей функции переключается между положительной и отрицательной (ваша скорость изменения переключается между увеличением и уменьшением). - person Mike Pierce; 19.08.2017
comment
Я смотрю на точку, где скорость кривизны «значительно» уменьшается до почти линейной формы, не говоря уже о том, что она изменит знак кривизны. Идея состоит в том, что, с одной стороны, я хотел бы сгруппировать тип статей с похожим распределением похожих статей (модель кривой), а с другой стороны, выбрать наиболее похожие статьи на родителя, посмотрев, насколько они достаточно близки. они к этому относятся с уважением к раздаче. Я обновил новую картинку, чтобы показать, что я имею в виду: кривые — это распределение похожих статей по отношению к родительской статье: я хотел бы найти эту точку. - person user305883; 19.08.2017