Лекция 8. Линейная регрессия

Поделиться
HTML-код
  • Опубликовано: 27 сен 2024
  • compscicenter.ru/
    Линейный регрессионный анализ. Модель, интерпретация оценок коэффициентов, множественный коэффициент детерминации. Интерпретация множественного коэффициента детерминации, ограничения на область его применения. Выявление наиболее значимых предикторов и оценка вклада каждого предиктора. Алгоритмы корректировки построенных моделей. Коллинеарность.
    Лекция №8 в курсе "Анализ данных на Python в примерах и задачах. Часть 1" (весна 2018).
    Преподаватель курса: Вадим Леонардович Аббакумов

Комментарии • 68

  • @romansh7954
    @romansh7954 3 года назад +21

    Хочется поблагодарить лектора за баланс между "научностью" и простотой объяснения. Я до этого видео пробовал читать что такое регрессия на википедии, но у меня закипели мозги ещё на первом абзаце где определение даётся через кучу неизвестных мне терминов.
    Здесь же я за 10 минут понял что регрессия это метод когда мы берём исторические данные, находим функцию которая наилучшим образом в них "попадает" и при необходимости спрогнозировать значение для новых исходных данных (аргументов/предикторов) мы просто подставляем их в нашу функцию, а полученное значение и будет прогнозом.

  • @v6am32
    @v6am32 Год назад

    Очень не хватало такого канала, посмотреть лекцию иногда в тысячу раз удобнее, чем допытываться до истины самому. Отличный лектор! Особенно при просмотре на скорости 2х

  • @agile_knaz
    @agile_knaz 4 года назад +4

    Спасибо, очень информативно

  • @ОлегДоходицифровыефинансы

    КРутой лектор! Спасибо за лекции и звук отличный.

    • @johnmartin9294
      @johnmartin9294 3 года назад

      i realize Im kinda off topic but does anyone know of a good website to stream newly released movies online?

    • @curtisrodney4362
      @curtisrodney4362 3 года назад

      @John Martin I use FlixZone. You can find it by googling =)

    • @aaronrogelio8206
      @aaronrogelio8206 3 года назад

      @Curtis Rodney Definitely, been using Flixzone for years myself :D

    • @johnmartin9294
      @johnmartin9294 3 года назад

      @Curtis Rodney thanks, I went there and it seems like a nice service :) Appreciate it !

    • @curtisrodney4362
      @curtisrodney4362 3 года назад

      @John Martin happy to help xD

  • @ИринаРадкевич-с5з
    @ИринаРадкевич-с5з 2 года назад

    Спасибо большое!

  • @СергейКрюков-с2к
    @СергейКрюков-с2к 2 года назад

    Добрый день, а не подскажите где можно найти тот самый архив с ноутбуками?) Спасибо Вам, за труд

  • @Supreme_Mind
    @Supreme_Mind 4 года назад +1

    А как правильно интерпретировать тот факт, что в линейной регрессии мы после отброса "лишних" предикторов получили коэф-т детерминации хуже первоначального (стало 0.73 - 0.8 было)? Выходит, что наша модель стала предсказывать хуже?

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 4 года назад +3

      Заполните столбец случайными числами. Добавьте его к предикторам. Коэффициент увеличится. Это математический факт. Отбрасывание увеличивает коэффициент на тестовом множестве, а это важнее. О тестовом множестве см далее в курсе. Кроме того, работает принцип KISS.

  • @coolbrain
    @coolbrain 2 года назад

    Логарифм AGE типа нормальный даже. Почему мы его удалили? Могли же деревом восстановить из остальных значений и использовать в регрессии

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 2 года назад

      Половина наблюдений пропуски. Деформации слишком велики. Проще удалить.

  • @VistaSV304SFE
    @VistaSV304SFE Год назад

    Коллеги подскажите, пожалуйста! В 14 ячейке выражение:
    # Вычисляем регрессионные коэффициенты
    coef = pd.DataFrame(zip(['intercept'] + X.columns.tolist(), [model.intercept_] +
    columns=['predictor','coef'])
    Что написано после второго знака +

  • @pavelbrudanov6701
    @pavelbrudanov6701 4 года назад

    У меня тут задачу поставили.
    Понятно объяснить результаты регрессии.
    Я посчитал коэффициент В, а вот значимость не совсем понимаю как правильно:
    У меня набор независимых переменных принимающих значения 1/0 но модель такая, что значение равное 1 принимает только 1 переменная одновременно.
    Как я понял, значимость считается согласно критерию t-Стьюдента, либо с помощью критерия Фишера?
    То есть мне надо распределение по каждой из переменных прогнать через t критерий где х1 - те значения зависимой переменной, в которых независимая переменная принимает значение равное 1, а х2 - все остальные.
    Или можно разделить на две группы - мои предикторы которые я учитываю в анализе и говорю, что они значимо предсказывают значение зависимой переменной и все остальные, у которых как мне кажется слишком большой разброс коэффициентов В? При этом те, что я выделил предсказывают по разному :)
    Одна из переменных даёт -1, другая -25.

    • @Cyrill_Murashev
      @Cyrill_Murashev Год назад

      Сумма значений всех переменных = 1? У вас индикаторные переменные. Одну можно вообще убрать, приняв её единицу за базовый уровень.

  • @Dmitrykholodov
    @Dmitrykholodov 3 года назад

    Добрый день! Подскажите пожалуйста, ВАдим Леонидович в прогнозировании временных рядов есть такая запись for x in xrange(1, 13):
    df['season_' + str(x)] = df['date'].dt.month == x. В phyton 3 она не работает, если менять xrange на range тоже не выходит.

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 3 года назад +1

      В блокноте 06_linear_regression-forecast_ver3.ipynb не нашел...
      Возможно давно переделано.
      Укажите скрипт и все содержимое ячейки,
      сейчас не могу ответить, но помню что и как там было.

    • @Dmitrykholodov
      @Dmitrykholodov 3 года назад

      @@Vadim_Abbakumov for x in xrange(1, 13):
      df['season_' + str(x)] = df['date'].dt.month == x
      # xrange(2, 13) соответствует всем месяцам с февраля по декабрь
      season_columns = ['season_' + str(x) for x in xrange(2, 13)]

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 2 года назад +2

      @@Dmitrykholodov
      df_2["m01"] = [1,0,0,0,0,0,0,0,0,0,0,0]*12
      df_2["m02"] = [0,1,0,0,0,0,0,0,0,0,0,0]*12
      df_2["m03"] = [0,0,1,0,0,0,0,0,0,0,0,0]*12
      df_2["m04"] = [0,0,0,1,0,0,0,0,0,0,0,0]*12
      df_2["m05"] = [0,0,0,0,1,0,0,0,0,0,0,0]*12
      df_2["m06"] = [0,0,0,0,0,1,0,0,0,0,0,0]*12
      df_2["m07"] = [0,0,0,0,0,0,1,0,0,0,0,0]*12
      df_2["m08"] = [0,0,0,0,0,0,0,1,0,0,0,0]*12
      df_2["m09"] = [0,0,0,0,0,0,0,0,1,0,0,0]*12
      df_2["m10"] = [0,0,0,0,0,0,0,0,0,1,0,0]*12
      df_2["m11"] = [0,0,0,0,0,0,0,0,0,0,1,0]*12
      df_2["m12"] = [0,0,0,0,0,0,0,0,0,0,0,1]*12

    • @Dmitrykholodov
      @Dmitrykholodov 2 года назад

      @@Vadim_Abbakumov Вадим Леонидович, получилось с помощью загрузки библиотеки Series из pandas и замены xrange на range.

  • @ОлегДоходицифровыефинансы

    Неужели p-значения до сих пор не появились в scipy? 51:27:00

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 6 лет назад +1

      В scipy есть, в sclearn нет.
      Накладка. Сначал был scipy, потом я решил не использовать
      его в курсе, обойтись только sclearn, но невнимательно чистил
      код.

    • @ОлегДоходицифровыефинансы
      @ОлегДоходицифровыефинансы 6 лет назад

      Вадим Аббакумов понял , значит можно подгрузить Scipy и использовать стандартные библиотеки ? А у вас нет видео по методу опорных векторов ?

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 6 лет назад

      Видео нет. Я SVM не люблю и не рассказываю.

    • @ОлегДоходицифровыефинансы
      @ОлегДоходицифровыефинансы 6 лет назад +1

      Понял, просто у Воронцова все довольно математично, а у Вас доступно и с примерами из жизни. А что SVM уже неэффективен? у Microsoft в пакете аж 2 метрики SVM есть: support SVM и locally deep SVM.

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 6 лет назад +1

      1. IMHO XGBoost лучше
      2. IMHO он очень склонен к переобучению.

  • @Alex-hh5oe
    @Alex-hh5oe 4 года назад

    Зная американские расценки 1 фут не может стоить 29 долл, это минимум 290, а то и 2900 долл.

    • @PomogB
      @PomogB Год назад

      Откуда ты знаеш расценки в америке не смеши.

    • @azimknbv8342
      @azimknbv8342 2 дня назад

      здесь приведены данные 30 летней давности

  • @WannaEsse
    @WannaEsse 4 года назад

    Свободный член это стоимость для среднего дома, разве не так? 46:30

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 4 года назад

      Нет. Это стоимость дома нулевой площади и тд

  • @pavelbrudanov6701
    @pavelbrudanov6701 5 лет назад

    а как коллениарность то проверить?

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 лет назад +1

      vif или tolerance считать. Например процедура variance_inflation_factor в statsmodels.stats.outliers_influence

    • @pavelbrudanov6701
      @pavelbrudanov6701 5 лет назад

      @@Vadim_Abbakumov чет эта функция ужасно реализованна в библиотеке... :)
      Я даже не смог разобраться как сделать, то бы она корректно считала, сделал как предлагабт умельцы со стаковерфлоу. Спасибо им и вам :)

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 лет назад +3

      @@pavelbrudanov6701 Обычное дело. Тогда Вам легче написать процедуру самому.
      Там несложно. Я это обсуждал в версии курса на R.
      После 14 минуты
      ruclips.net/video/8mwJ3mEjdIg/видео.html

  • @_AbUser
    @_AbUser 2 года назад

    Сношать мозг полтора часа, чтобы запутаться самому, запутать других в вопросе, которые можно разжевать пятикласснику за 15 минут.... Надо бы пересмотреть подход к обучению...

    • @elenagavrilova3109
      @elenagavrilova3109 5 месяцев назад

      Объясните... дайте ссылку на ваш канал, мы посмотрим.

  • @noname-d6u8w
    @noname-d6u8w Год назад +2

    Огромное спасибо лектору! Особенно за то, что смещает фокус с математических нюансов на аналитические тонкости.

  • @ДмитрийЖ-п8ж
    @ДмитрийЖ-п8ж 3 года назад +1

    в полиноминальную регрессию бы графиков добавить для наглядности

  • @gsm7490
    @gsm7490 Год назад

    -Не люблю линейную регрессию. -Ты просто не умеешь ее готовить.)

  • @srosy.
    @srosy. 3 года назад

    Если говорят, что плохо знаете математику и экономику, то просто идите в стендап, вам там этого точно не скажут и даже без знаний этих областей очень интересно слушать

  • @AlisaMusicFM
    @AlisaMusicFM 3 года назад

    Максимальное значение R² равно 1, но минимальное может быть минус бесконечность.

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 3 года назад

      На обучающей выборке минимальное значение равно 0

  • @АнастасияНикифорова-л6щ

    Спасибо огромное! Замечательный лектор!

  • @yoyomaster2011
    @yoyomaster2011 4 года назад

    Доброго времени суток, нельзя ли метрики для кластерного анализа отбирать представленным в лекции способом? 1. Проверка на коллинеарность; 2 Регрессия; 3 Отбор через проверку гипотезы о равенстве 0 коэффициента. Спасибо!

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 4 года назад

      Расстояние отражает наше представление о том, какие объекты схожи. Что касается использования регрессии, для нее нужна зависимая переменная, отклик. В кластерном анализе чаще всего все переменные равноправны.

  • @Alex-hh5oe
    @Alex-hh5oe 4 года назад

    А где можно взять dataset для этого урока?
    Заранее спасибо.

    • @АнжелаПетрова-щ4л
      @АнжелаПетрова-щ4л 4 года назад

      Смотрите подпись и ищите на сайте. Это предпоследние прочтение этого курса.

  • @ОлегДоходицифровыефинансы

    А что можете посоветовать для feature selection with categorical variables?

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 лет назад +2

      1. Классический подход - Correspondence Analysis.
      Это распространение факторного анализа на случай
      переменных в номинальной шкале.
      2. Самые модный подход - использовать autoencoder.
      3. Самый "крутой" подход - обучить нейронную сеть,
      выходы нейронов внутренних слоев - features.

    • @urbanbionics
      @urbanbionics 3 года назад

      @@Vadim_Abbakumov а в чем разница между 2 и 3 пунктом?

  • @leshamokhov
    @leshamokhov 6 лет назад +5

    R^2 может быть отрицательным, если модель описывает набор точек "хуже", чем функция y = y.mean()

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 6 лет назад +3

      "Лучшая" модель не может быть "хуже"

    • @ivanaaa6049
      @ivanaaa6049 6 лет назад

      Прежде чем найти лучшую модель, надо перелопатить те, которые могут быть еще хуже, чем среднее арифметическое.

    • @pavelbrudanov6701
      @pavelbrudanov6701 4 года назад +2

      мне не совсем понятно как может быть R2 меньше 0 т.к. это все таки невозможно.
      Там два квадрата чисел делятся друг на друга по формуле.
      Отрицательный R2 это что то из области фантастики т.к. квадрат любого числа больше 0.

    • @pavelbrudanov6701
      @pavelbrudanov6701 4 года назад

      а ваще библиотека может центрировать нулевую модель как начало координат и тогда R2 все таки может быть отрийательным.

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 4 года назад +2

      @@pavelbrudanov6701 Тоже так когда-то думал. Тут надо следить за руками :} R2 может быть отрицательным на тестовом множестве, на обучающем не может.