No video
#42. Введение в бустинг (boosting). Алгоритм AdaBoost при классификации | Машинное обучение
Принципы построения композиции при бустинге (boosting). Алгоритм AdaBoost в задаче бинарной классификации. Реализация алгоритма AdaBoost на Python.
Инфо-сайт: proproprogs.ru/ml
Телеграм-канал: t.me/machine_l...
machine_learning_42_adaboost_classification.py: github.com/sel...
Пікірлер: 23
Ай да автор красавчик ☺Много чего пересмотрел, но тут всё схлопнулось👏 Здоровья тебе добрый человек🙏
как раз закончил писать главу в дипломе по adaboost, а тут и ролик вышел)
Бедный Айверсон! Этот выскочка Айзерсон присвоил себе все его заслуги!
@selfedu Вопросы по видео: 0:22 - Как понять запись E{ai*aj}=0 для признака независимости? Матожидание чего, произведения классификаций? Как там может получиться 0, если классификации хорошие? Что вообще означает зависимость классификаторов в таком контексте - что их обучающие выборки пересекаются? 7:00 - Это для шага t=T, а что суммировать в показателе wi на предыдущих шагах? Может, имеется в виду сумма всех кроме t: sum(k=1...T, k!=t), а еще не рассчитанные инициализируются wk=1/l? 8:53 - Здесь же b(x) это отступ, как он сравнивается с классом? Может, надо сравнивать по знаку отступа: sum( wi * [b(xi)*yi < 0] ) ?
очень помогает математическая формулировка задач! возможно уточнить источник?
Знаю немного не по теме , но еслиб выпустили видел про Airflow былоб супер, в частности оч мало материала по грамотной установке через убунти и докер …
Здравствуйте. Возможно, Вы уже отвечали на следующий вопрос. Много ли еще видео планируется в этом плейлисте про машинное обучение?
@selfedu_rus
2 жыл бұрын
нет, завершаю
@konstantinlisitsa8443
2 жыл бұрын
@@selfedu_rus не наадо завершать! Так хорошо идет же! )
Извините за глупый вопрос, пытаюсь найти информацию какой именно раздел математики надо выучить, чтобы понимать именно синтаксис всех этих формул? В первых уроках вы называли разделы, но в них про синтаксис сам не говорится, что каждый этот символ означает.
@legiontime9897
2 жыл бұрын
В матанализе много подобных шушиков. Перевёрнутая А означает каждый, для каждого. Например, перевёрнутая Аi,j: ... означает : для каждого i и j таких, что ... после двоеточия поясняется каких.
Но Адабуст строится на деревьях глубиной 1, тка называемых "пнях", а в программе у вас глубина 2. разве так правильно? и в целом, это больше похоже на градиентный бустинг, а не не на адабуст.
@selfedu_rus
Жыл бұрын
формально можно любую глубину брать и разные модели (алгоритмы) включать в адабуст, на практике да, лучше ограничиваться пнями, согласен, так часто делают.
@selfedu Еще вопрос по программе с adaboost-алгоритмом: На 8:53 формула для N (доли неверных классификаций) - это взвешенная по w сумма. Но в программе, хоть алгоритмы обучаются с учетом весов w, но доля N на 14:42 считается как простое среднее. Получается, что далее в расчете веса алгоритма берется неправильная N, не учитывающая значимость неверных образов...
@selfedu_rus
Жыл бұрын
В 39-й строчке вычисляется N как доля неверных классификаций. Не вижу ошибки.
@YbisZX
Жыл бұрын
@@selfedu_rus На 8:53 вы даете формулу для N как *взвешенную* по wi сумму неверных классификаций. А программе как простую долю: отношение количества неверных к общему.
@selfedu_rus
Жыл бұрын
@@YbisZX Это одно и то же. Вспомните, как можно определять математическое ожидание, например. Есть формула sum(p_i * x_i), а можно найти просто как среднее арифметическое.
@YbisZX
Жыл бұрын
@@selfedu_rus Среднее по выборке считается только для выборки с равнозначными объектами, тогда все вероятности pi равны и выносятся из суммы как коэффициент 1/L. Но вы привели формулу 8:53, где _каждый_ классифицируемый объект из i=1...L имеет свой _индивидуальный_ вес wi, который пересчитывается на каждом шаге. В этом же суть метода AdaBoost - плохо классифицированные объекты имеют большую значимость.
@selfedu_rus
Жыл бұрын
@@YbisZX Да, соглашусь, там следует прописать: N = np.sum(np.abs(train_labels - predicted) / 2 * w) Спасибо!
Вопрос немного не по теме. Кто-нибудь знает есть ли в библиотеке Numpy функция которая выполняет: Вычитает первую строку(Массива А) из первого столбца(Массива B) по модулю. Суммирует полученные значения и записывает в массив С в положение 00 и так с каждой строчкой и столбцом(01, 02....). Похоже на умножение, но вместо функции умножения разность по модулю.
@selfedu_rus
2 жыл бұрын
c = np.sum(np.abs(x[:,1]-y[:,1]))
@user-jq1tb2wq5v
2 жыл бұрын
@@selfedu_rus нет, нет. Вы ищете разницу между двумя столбцами, причем первыми. А нужно найти разницу между элементами 1 строки и элементами 1 столбца, записать ее сумму в ячейку (00). потом разницу между элементами 1 строки и элементами 2 столбца и записать сумму в ячейку 01 и тд. У меня стоит задача реализовать алгоритм KNN. даны 2 массива(тренировочный, он размечанный и тестовый). Мне нужно найти расстояние по L1 норме. Как я предполагаю. Мне нужнем массив растояний между 1 размеченной точкой(из трэина) и всеми неразмеченными точками из тестового, 2 размеченной и всеми неразмеченными и тд... Нужно это сделать в одно действие, то есть без цикла. Благодарю за ответ
первый