Pull to refresh

Comments 9

Про сигмоиду в разделе 'близко-далеко' не согласен.
Возьмём нашу регрессию, возьмём обучающую и тестовую выборки. Найдём максимальное значение ложнопозитивного срабатывания и минимальное значение ложнонегативного. Те точки, которые лежат выше и ниже этих границ — можно считать точками высокой уверенности результатов. Те точки, что располагаются между этими двумя границами — это и есть рабочая область классификатора. Если построить графики полноты-точности для этой области, то мы увидим классический крест. Место пересечения графиков точности и полноты можно принять за 50%, нижнюю границу за 0%, верхнюю за 100% (да, обычно получается несимметрично). Тогда ответом классификатора будет человеко-интуитивно понимаемая оценка в виде процентов.
Если хотите использовать сигмод — тоже можно, но границы срабатывания («уверенности») определять тогда по количеству сигм. 2 сигмы для бизнес задач — уже выше крыши.
Согласен. Правда вы говорите про трактовку результатов работы классификатора, а пример демонстрировал как расстояния из R нелинейно ужимаются (squashing) в интервал вероятностей (0, 1).

Границы уверенности в данном случае фиксированы и выбраны просто для целей иллюстрации.
Вероятно самое иллюстрированное объяснение линейной комбинации что я видел в своей жизни

А цель статьи была пояснить только смысл линейной комбинации?


А то столько слов про логистическую регрессию, SVM, нейронные сети, простигосподи. И так быстро все кончилось.


Пс. Можно уточнить, что последнее, к чему пришли — это простой перцептрон, кирпичик, заложенный в фундамент нейросетей.

Спасибо за комментарий. Добавил пример обучения персептрона для полноты изложения.

P.S. Да, в общем и целом статья про линейную комбинацию и гиперплоскости. Мне кажется это достаточно важная тема, чтобы уделить ей отдельное внимание.
Щас будет глупый вопрос, но почему мы забили на знаки в функциях linei_w1(w1), когда делили?
Давайте смотреть.

# образец 1
def line1(w1, w2):
return -3 * w1 - 5 * w2 - 8


Линия задаётся уравнением: line(w1, w2) = 0

  • line(w1, w2) > 0 выполнено для точек по одну сторону линии
  • line(w1, w2) < 0 — по другую


# служебная функция в форме w2 = f1(w1) (для наглядности)
def line1_w1(w1):
return (-3 * w1 - 8) / 5


Служебная функция для отрисовки. Получается переносом w2 в правую часть уравнения -3 * w1 - 5 * w2 - 8 = 0 и приведением коэффициента к единице.

Удалось мне ответить на ваш вопрос?

Да вполне, спасибо большое.
Еще не понятен один момент. При определении расстояния от точки до плоскости dist(x) в знаменателе норма вектора w. А зачем она там? модуль скалярного произведения |wTx+b| разве не дает нам расстояние? В коде например так и сделано.

Если взять уравнение линии на плоскости:

w_1 * x_1 + w_2 * x_2 + b = 0

То очевидно, что можно левую часть умножить на любое число, отличное от нуля, и уравнение при этом будет задавать ту же линию. Поэтому и требуется нормировка. С геометрической точки зрения это приведение нормали линии (w_1, w_2) к единичной длине, после чего модуль скалярного произведения даёт расстояние.

В коде нормировка намеренно опускается. Достаточно подобрать такой коэффициент при расчёте насыщенности цвета:

np.abs(value) / 30

чтобы продемонстрировать факт роста уверенности классификации при удалении от границы решений. Иначе говоря сделать картинку.

При этом в следующем параграфе даётся комментарий по поводу того, как рассчитывается корреляция расстояния и уверенности уже в задаче классификации.
Sign up to leave a comment.

Articles