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

แชร์
ฝัง
  • เผยแพร่เมื่อ 15 ส.ค. 2018
  • compscicenter.ru/
    Линейный регрессионный анализ. Модель, интерпретация оценок коэффициентов, множественный коэффициент детерминации. Интерпретация множественного коэффициента детерминации, ограничения на область его применения. Выявление наиболее значимых предикторов и оценка вклада каждого предиктора. Алгоритмы корректировки построенных моделей. Коллинеарность.
    Лекция №8 в курсе "Анализ данных на Python в примерах и задачах. Часть 1" (весна 2018).
    Преподаватель курса: Вадим Леонардович Аббакумов

ความคิดเห็น • 67

  • @romansh7954
    @romansh7954 3 ปีที่แล้ว +21

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

  • @user-dm9uz6xc8r
    @user-dm9uz6xc8r ปีที่แล้ว +2

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

  • @user-pb7pz7nv3m
    @user-pb7pz7nv3m 5 ปีที่แล้ว +39

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

    • @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

  • @v6am32
    @v6am32 ปีที่แล้ว

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

  • @user-kv2fh3lg6m
    @user-kv2fh3lg6m 2 ปีที่แล้ว

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

  • @agile_knaz
    @agile_knaz 3 ปีที่แล้ว +4

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

  • @user-nq2qg1qv8v
    @user-nq2qg1qv8v 2 ปีที่แล้ว

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

  • @srosy.
    @srosy. 3 ปีที่แล้ว

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

  • @gsm7490
    @gsm7490 ปีที่แล้ว

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

  • @user-pb7pz7nv3m
    @user-pb7pz7nv3m 5 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 ปีที่แล้ว +2

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

    • @urbanbionics
      @urbanbionics 2 ปีที่แล้ว

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

  • @user-nw9dx4fj9s
    @user-nw9dx4fj9s 3 ปีที่แล้ว +1

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

  • @Supreme_Mind
    @Supreme_Mind 3 ปีที่แล้ว +1

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 3 ปีที่แล้ว +2

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

  • @yoyomaster2011
    @yoyomaster2011 4 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 4 ปีที่แล้ว

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

  • @user-kb1ls9nb1i
    @user-kb1ls9nb1i ปีที่แล้ว

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

  • @Dmitrykholodov
    @Dmitrykholodov 2 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 2 ปีที่แล้ว +1

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

    • @Dmitrykholodov
      @Dmitrykholodov 2 ปีที่แล้ว

      @@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.

  • @pavelbrudanov6701
    @pavelbrudanov6701 4 ปีที่แล้ว

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

    • @Cyrill_Murashev
      @Cyrill_Murashev ปีที่แล้ว

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

  • @Alex-hh5oe
    @Alex-hh5oe 3 ปีที่แล้ว

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

    • @user-mp1dt1dp6g
      @user-mp1dt1dp6g 3 ปีที่แล้ว

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

  • @AlisaMusicFM
    @AlisaMusicFM 3 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 3 ปีที่แล้ว

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

  • @VistaSV304SFE
    @VistaSV304SFE ปีที่แล้ว

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

  • @coolbrain
    @coolbrain 2 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 2 ปีที่แล้ว

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

  • @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 может быть отрицательным на тестовом множестве, на обучающем не может.

  • @user-pb7pz7nv3m
    @user-pb7pz7nv3m 5 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 ปีที่แล้ว +1

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

    • @user-pb7pz7nv3m
      @user-pb7pz7nv3m 5 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 ปีที่แล้ว

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

    • @user-pb7pz7nv3m
      @user-pb7pz7nv3m 5 ปีที่แล้ว +1

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 5 ปีที่แล้ว +1

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

  • @Alex-hh5oe
    @Alex-hh5oe 3 ปีที่แล้ว

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

    • @PomogB
      @PomogB 10 หลายเดือนก่อน

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

  • @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 минуты
      th-cam.com/video/8mwJ3mEjdIg/w-d-xo.html

  • @WannaEsse
    @WannaEsse 4 ปีที่แล้ว

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

    • @Vadim_Abbakumov
      @Vadim_Abbakumov 4 ปีที่แล้ว

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

  • @_AbUser
    @_AbUser 2 ปีที่แล้ว

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

    • @elenagavrilova3109
      @elenagavrilova3109 3 หลายเดือนก่อน

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