Начну с того, что всю профессиональную жизнь (с 19 до 36) занимался продажами. Я отлично знаю, что такое маркетинг, операционная эффективность точки продаж, бесконечные встречи с клиентами, управление персоналом, и т.д.
Но суть не в этом.
Суть в том, что в 2022 году я очень заинтересовался программированием.
Скажу честно, что бесконечная реклама школ имела влияние на мою заинтересованность. Но дело не только в этом. Дело в том, что будучи выпускником небольшой сельской школы, я мечтал стать программистом. У меня было представление, что все эти игры, которые захватывали дух школьника начала 2000х, создавали определенные люди. Но, в моей сельской школе маленького поселка на севере Камчатки, даже информатика состояла из того, что мы просто рубились в КС 1.6 или типо того.
Далее, я поступил таки на программиста, даже проучился около года, но в итоге стал юристом)
На данный момент:
- Я живу в Москве;
- Мне 36 лет;
- Мне очень нравится идея автоматизации работы отделов продаж и прочего (опыт бэкграунда);
- Мне очень хочется стать профессионалом в этой сфере;
Я знаю:
- Сам python 3 (+/-);
- Как развернуть сайт на Django, взаимодействие через ssh;
Привет, Пикабу! Меня зовут Александр Троицкий, я автор канала AI для чайников, и я продолжаю серию коротких статей по метрикам качества моделей для машинного обучения!
Что такое регрессия?
Задача регрессии в машинном обучении — это тип обучения в ИИ, когда модель обучается на данных с непрерывным значением, чтобы предсказывать его на основе одного или нескольких входных параметров. Отличие регрессии от задач классификации заключается в том, что регрессия предсказывает непрерывные значения (например, цену на дом, температуру, количество продаж), в то время как классификация предсказывает категориальные метки (например, да/нет, красный/синий/зеленый).
То есть задача регрессии предсказывает какую-то цифру, а задача классификации - это как выбор в тесте из нескольких вариантов ответа.
Пример
Давайте представим, что мы - доска объявлений типа Авито или Циана. Мы хотим подсказывать пользователю в интерфейсе по какой цене ему лучше разместить свою квартиру на основании множества факторов, например:
Местоположение квартиры
Площадь
Этаж
Ремонт
Год постройки здания
В итоге мы выводим пользователю рекомендуемую цифру в евро.Мы предсказали стоимость 10 квартир, а через месяц узнали за сколько их на самом деле продали.
Далее мы проведем с этими результатами нехитрые вычисления:
Вычтем из предсказанной цены реальную цену (первый столбик)
Возведем эту разницу в квадрат (второй столбик)
Возьмем корень из этого квадрата (третий столбик)
Получим следующие результаты на нашем примере:
P.S. да, можно просто взять разницу по модулю, но более умные математики говорят, что это все-таки не одно и то же - можете почитать об этом отдельно
MSE
Если мы возьмем второй столбик из зеленой таблицы выше, сложим все числа в нем, а потом поделим на количество этих чисел (возьмем среднюю), то получим MSE или среднюю квадратическую ошибку. В нашем случае:
MSE = 3353809295
Большое число! Из-за его величины оно сложно интерпретируется с точки зрения бизнеса. Чаще эту метрику используют при разработке моделей, когда важно наказывать большие ошибки сильнее, чем маленькие, так как ошибка возрастает квадратично. Это делает MSE чувствительной к выбросам. MSE используют, если большие ошибки недопустимы и должны сильно влиять на модель.
RMSE
RMSE или среднеквадратическая ошибка - это младший брат MSE. Чтобы ее посчитать нужно просто взять квадрат из MSE!
В нашем случае получится 57912.
RMSE также штрафует за большие ошибки, но в отличие от MSE, масштаб ошибки аналогичен исходным данным, что облегчает интерпретацию. Это делает RMSE хорошим выбором для многих практических задач, где важна интерпретируемость результата.
MAE
MAE или средняя абсолютная ошибка считается по третьем столбику из зеленой таблички выше. Нужно взять сумму корней из квадрата разницы между предсказанной ценой и реальной ценой и поделить ее на количество наблюдений. Проще говоря, берем среднее из третьего столбика.
В нашем примере MAE = 49243
MAE менее чувствительна к выбросам по сравнению с MSE и RMSE. Это делает её предпочтительным вариантом, когда выбросы присутствуют в данных, но не должны сильно влиять на общую производительность модели.
Немного усложним нашу зеленую табличку
Чтобы разобраться с тем как считается R-квадрат и MAPE нужно дополнить нашу зеленую табличку еще двумя стобиками:
Вычтем из предсказанной цены среднюю предсказанную цену и возведем это в квадрат (четвертый зеленый столбик 4). P.S. Не спрашивайте зачем это нужно и какой в этом практический смысл - просто сделайте :)
Поделим третий зеленый столбик на предсказанную цену квартиру из желтой таблички. То есть поделим разницу между предсказанной и реальной ценой квартиры по модулю на предсказанную стоимость квартиры. (пятый зеленый столбик)
Коэффициент детерминации (R квадрат)
Чтобы его получить надо из единицы вычесть разницу суммы второго и четвертого зеленых столбцов.
R-квадрат измеряет, какая доля вариативности зависимой переменной объясняется независимыми переменными в модели. Это хороший способ оценить адекватность модели: близость к 1 говорит о хорошем объяснении данных моделью. R-квадрат лучше всего подходит для сравнения моделей с одинаковыми данными.
MAPE
Средняя абсолютная процентная ошибка или MAPE - это среднее пятого зеленого столбца.
В нашем случае = 14,2%
MAPE измеряет отклонение прогнозов от фактических значений в процентах и является хорошим выбором, когда нужно легко интерпретируемое показание ошибки в процентном отношении. Однако MAPE может быть неэффективной, когда в данных присутствуют нулевые или очень маленькие значения.
Excel файл с примерами
Вы можете найти эксель файл с этими цифрами, бесплатно его скачать и собственноручно поиграться со значениями в нем вот в этом посте в моем телеграмм канале
Заключение
Поздравляю! Вы узнали про основные метрики в задачах регрессии!
Если вам интересно знать про ИИ и машинное обучение больше, чем рядовой человек, но меньше, чем data scientist, то подписывайтесь на мой канал в Телеграм. Я пишу редко, но по делу: AI для чайников. Подписывайтесь!
Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.
Всем привет! Есть небольшая идея на проект для новичков в питоне, как и я. Кому будет интересна небольшая совместная деятельность, отпишитесь. Более подробно смогу рассказать в личных сообщениях, заинтересует ли вас это.
Прочитал опять ной о нехватке программистов в частности и айтишников вообще в нашей стране. Тут моё мнение, которое может не совпадать с вашим.
Чтобы стать нормальным айтишником нужно учится этому с детства. Так устроен человеческий мозг, ну знаете, нейробиология и всё такое, короче, начинать надо до пубертата. Алгоритмика, логика, математика и вот это всё успешно развивается в 9-10 лет и с большим трудом в 25. Первое подобие компа у меня появилось в 9 лет. Зато сразу много. Свой спектрум и доступ к ДВК и БК0010. Да, это был 1985 год. к 11 я полностью освоил спектрумовский бэйсик (ну и игрушки конечно) и начал потихоньку ковырять asm для Z80. Примерно так и появляются айтишники... Ну я это я, это у меня мама закончила "экономическую кибернетику" в своё время и отсюда дитё начало получать соответствующее образование.
Посмотрим что даёт нынешнее образование. У меня сейчас как раз сын 9 лет, только что закончил третий класс. Когда начинали учебный год увидел в расписании на 3й класс информатику, обрадовался. Выдали учебные материалы, по этой самой информатике... листаю значится.... главы: "органы зрения", "органы слуха", "как отличать цвета", "как понять что числа равны"... и прочая дичь которую нам давали ещё в ДС, не говоря уже о прошлогоднем окружающем мире. Кто это составлял и какое отношение имеет к информатике для меня загадка. Ладно, фуй с ним, школа есть школа, там всегда маразма хватало.
Дополнительное образование. Купил расширенный курс на учиру ребёнку. Программирование в него входит. Смотрю первые задание - прям классно. Что то похожее на питон, с машинками, тракторами и велосипедами. Самое то для детей. Главное сыну понравилось. Приходит со школы и делает 5-7 заданий слёту. Круто. Через 3 недели задания заканчиваются. Их там всего 150, треть без кода, тупо игра типа сокобана. Прошел на второй круг, все задачи добил до 3х звездочек. А дальше что? На этом программирование закончилось.
Учи.ру
Ладно, думаю. Инет же большой, наверняка есть куча бесплатных отличных курсов, чтобы не отдавать опять денег за непонятно что... Ага, щас. Перелопатив тысячи предложений от инфоцыган, нашел несколько более - менее приемлемых, но не для детей. Для детей нет вообще ничего. Не, некоторые позиционируют себя как детские. Тот же МИТовский скратч. Вот тебе среда разработки, оно же редактор, да ещё и с ООП. Всё цветное и красивое. Мечта же? Фиг то там. В педагогике это не работает. Это взрослый может придумать чем ему заняться. А ребёнку нужны задачи. Желательно цепочки задач с увеличением сложности. Скратч предлагает только "напиши сам что хочешь" и "разгреби чужой код". Алёу? Ребёнок не знает что он хочет. Не, знает конечно, он хочет саблю, фломастеры и поиграть в фаллаут. С удовольствием выполнит поставленную задачу, но сам себе поставить задачу он ещё не может, потому что ребёнок.
Или другая крайность. Сидит какое то тело, на ютубе, и скучным голосом вещает - "Напишите в редакторе "print Hello World", запустите компилятор и посмотрите результат"... эээ... лолшто? Это первый урок для детей, да? Он ещё и слов то таких не знает. Начинать нужно с чего то типа "Мы будем писать код в редакторе. Их много. Есть вот такой - он код раскрашивает. Есть вот такой, он некоторые слова сам дописывает. Ссылка под видео. Или можно прям в браузере(ссылка) Ещё нам понадобится компилятор. Можно поставить его себе (ссылка под видео) или пользоваться сайтом (ссылка на сайт)"... И вот только потом уже "print Hello World". Дальше, после 5-6 уроков, тот же скучающий тип с ютуба заявляет, что то типа "ну вот мы рассмотрели 4 базовых математических функции, а теперь рассчитайте асимптоту к графику функции f(x)=lim.... " и желание что то запрограммировать у ребёнка пропадает напрочь и навсегда. Фантазия и понимание основ педагогики отсутствует напрочь. А какую задачу можно было бы дать, например? Нарисовать, а точнее сгенерировать, галактику. С рукавами, скоплениями и черными дырами. Вот дети оператор который ставит точку на экране, вот формула, в код встраивается вот так. Вот тут в формуле переменные. Которые можно менять, от них зависит расположение рукавов, количество звёзд и т.п. - то есть сразу практический результат который видно и красиво. И пофигу что они не понимают формулу, они понимают что так можно, а формулу поймут потом. И это одно из заданий, а их надо много, реально много. Не 150 за деньги как в учиру, а тысячи и желательно за счет государства. Ну если конечно государству нужны айтишники через 10 лет.
Привет, новая часть моего курса по Python уже на канале!
На прошлой неделе на меня подписалось уже аж 4000 человек, в честь этого события у себя в телеге разыграю 4 книги "Чистый Python", если интересно следить за моими новостями и участвовать в розыгрыше то добро пожаловать!
Пройдя этот тест, вы узнаете, сколько нужно сосисок, чтобы спуститься по ним на дно Марианской впадины. А еще сколько их можно съесть, пока длится самый долгий в мире поцелуй. Не пропустите!