хотелось бы сказать, что код написан не совсем корректно, так как в строке 54 вот она N = np.sum(np.abs(train_labels - np.sign(predicted)) / 2) в месте np.sign(predicted) , в некоторых элементах может получится значение 0. Соответственно, в данном случае это приведет к небольшой ошибке или неточности при вычислении колличества ошибок алгоритмом. данная ошибка может возникнуть если у нас будет четное число алгоритмов Т.
@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] ) ?
Извините за глупый вопрос, пытаюсь найти информацию какой именно раздел математики надо выучить, чтобы понимать именно синтаксис всех этих формул? В первых уроках вы называли разделы, но в них про синтаксис сам не говорится, что каждый этот символ означает.
В матанализе много подобных шушиков. Перевёрнутая А означает каждый, для каждого. Например, перевёрнутая Аi,j: ... означает : для каждого i и j таких, что ... после двоеточия поясняется каких.
@selfedu Еще вопрос по программе с adaboost-алгоритмом: На 8:53 формула для N (доли неверных классификаций) - это взвешенная по w сумма. Но в программе, хоть алгоритмы обучаются с учетом весов w, но доля N на 14:42 считается как простое среднее. Получается, что далее в расчете веса алгоритма берется неправильная N, не учитывающая значимость неверных образов...
@@selfedu_rus На 8:53 вы даете формулу для N как *взвешенную* по wi сумму неверных классификаций. А программе как простую долю: отношение количества неверных к общему.
@@YbisZX Это одно и то же. Вспомните, как можно определять математическое ожидание, например. Есть формула sum(p_i * x_i), а можно найти просто как среднее арифметическое.
@@selfedu_rus Среднее по выборке считается только для выборки с равнозначными объектами, тогда все вероятности pi равны и выносятся из суммы как коэффициент 1/L. Но вы привели формулу 8:53, где _каждый_ классифицируемый объект из i=1...L имеет свой _индивидуальный_ вес wi, который пересчитывается на каждом шаге. В этом же суть метода AdaBoost - плохо классифицированные объекты имеют большую значимость.
Знаю немного не по теме , но еслиб выпустили видел про Airflow былоб супер, в частности оч мало материала по грамотной установке через убунти и докер …
Но Адабуст строится на деревьях глубиной 1, тка называемых "пнях", а в программе у вас глубина 2. разве так правильно? и в целом, это больше похоже на градиентный бустинг, а не не на адабуст.
формально можно любую глубину брать и разные модели (алгоритмы) включать в адабуст, на практике да, лучше ограничиваться пнями, согласен, так часто делают.
Вопрос немного не по теме. Кто-нибудь знает есть ли в библиотеке Numpy функция которая выполняет: Вычитает первую строку(Массива А) из первого столбца(Массива B) по модулю. Суммирует полученные значения и записывает в массив С в положение 00 и так с каждой строчкой и столбцом(01, 02....). Похоже на умножение, но вместо функции умножения разность по модулю.
@@selfedu_rus нет, нет. Вы ищете разницу между двумя столбцами, причем первыми. А нужно найти разницу между элементами 1 строки и элементами 1 столбца, записать ее сумму в ячейку (00). потом разницу между элементами 1 строки и элементами 2 столбца и записать сумму в ячейку 01 и тд. У меня стоит задача реализовать алгоритм KNN. даны 2 массива(тренировочный, он размечанный и тестовый). Мне нужно найти расстояние по L1 норме. Как я предполагаю. Мне нужнем массив растояний между 1 размеченной точкой(из трэина) и всеми неразмеченными точками из тестового, 2 размеченной и всеми неразмеченными и тд... Нужно это сделать в одно действие, то есть без цикла. Благодарю за ответ
Ай да автор красавчик ☺Много чего пересмотрел, но тут всё схлопнулось👏
Здоровья тебе добрый человек🙏
А так видио очень интересное и полезное, спасибо!
как раз закончил писать главу в дипломе по adaboost, а тут и ролик вышел)
хотелось бы сказать, что код написан не совсем корректно, так как в строке 54 вот она
N = np.sum(np.abs(train_labels - np.sign(predicted)) / 2)
в месте
np.sign(predicted) , в некоторых элементах может получится значение 0. Соответственно, в данном случае это приведет к небольшой ошибке или неточности при вычислении колличества ошибок алгоритмом.
данная ошибка может возникнуть если у нас будет четное число алгоритмов Т.
Бедный Айверсон! Этот выскочка Айзерсон присвоил себе все его заслуги!
@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] ) ?
Я так понимаю оно само фичи выбирает и потом можно посмотреть какие больше влияют?
очень помогает математическая формулировка задач! возможно уточнить источник?
Здравствуйте. Возможно, Вы уже отвечали на следующий вопрос. Много ли еще видео планируется в этом плейлисте про машинное обучение?
нет, завершаю
@@selfedu_rus не наадо завершать! Так хорошо идет же! )
Извините за глупый вопрос, пытаюсь найти информацию какой именно раздел математики надо выучить, чтобы понимать именно синтаксис всех этих формул? В первых уроках вы называли разделы, но в них про синтаксис сам не говорится, что каждый этот символ означает.
В матанализе много подобных шушиков. Перевёрнутая А означает каждый, для каждого. Например, перевёрнутая Аi,j: ... означает : для каждого i и j таких, что ... после двоеточия поясняется каких.
@selfedu Еще вопрос по программе с adaboost-алгоритмом:
На 8:53 формула для N (доли неверных классификаций) - это взвешенная по w сумма. Но в программе, хоть алгоритмы обучаются с учетом весов w, но доля N на 14:42 считается как простое среднее. Получается, что далее в расчете веса алгоритма берется неправильная N, не учитывающая значимость неверных образов...
В 39-й строчке вычисляется N как доля неверных классификаций. Не вижу ошибки.
@@selfedu_rus На 8:53 вы даете формулу для N как *взвешенную* по wi сумму неверных классификаций. А программе как простую долю: отношение количества неверных к общему.
@@YbisZX Это одно и то же. Вспомните, как можно определять математическое ожидание, например. Есть формула sum(p_i * x_i), а можно найти просто как среднее арифметическое.
@@selfedu_rus Среднее по выборке считается только для выборки с равнозначными объектами, тогда все вероятности pi равны и выносятся из суммы как коэффициент 1/L. Но вы привели формулу 8:53, где _каждый_ классифицируемый объект из i=1...L имеет свой _индивидуальный_ вес wi, который пересчитывается на каждом шаге. В этом же суть метода AdaBoost - плохо классифицированные объекты имеют большую значимость.
@@YbisZX Да, соглашусь, там следует прописать:
N = np.sum(np.abs(train_labels - predicted) / 2 * w)
Спасибо!
Знаю немного не по теме , но еслиб выпустили видел про Airflow былоб супер, в частности оч мало материала по грамотной установке через убунти и докер …
Но Адабуст строится на деревьях глубиной 1, тка называемых "пнях", а в программе у вас глубина 2. разве так правильно?
и в целом, это больше похоже на градиентный бустинг, а не не на адабуст.
формально можно любую глубину брать и разные модели (алгоритмы) включать в адабуст, на практике да, лучше ограничиваться пнями, согласен, так часто делают.
Вопрос немного не по теме. Кто-нибудь знает есть ли в библиотеке Numpy функция которая выполняет: Вычитает первую строку(Массива А) из первого столбца(Массива B) по модулю. Суммирует полученные значения и записывает в массив С в положение 00 и так с каждой строчкой и столбцом(01, 02....). Похоже на умножение, но вместо функции умножения разность по модулю.
c = np.sum(np.abs(x[:,1]-y[:,1]))
@@selfedu_rus нет, нет. Вы ищете разницу между двумя столбцами, причем первыми. А нужно найти разницу между элементами 1 строки и элементами 1 столбца, записать ее сумму в ячейку (00). потом разницу между элементами 1 строки и элементами 2 столбца и записать сумму в ячейку 01 и тд. У меня стоит задача реализовать алгоритм KNN. даны 2 массива(тренировочный, он размечанный и тестовый). Мне нужно найти расстояние по L1 норме. Как я предполагаю. Мне нужнем массив растояний между 1 размеченной точкой(из трэина) и всеми неразмеченными точками из тестового, 2 размеченной и всеми неразмеченными и тд... Нужно это сделать в одно действие, то есть без цикла. Благодарю за ответ
первый