98

Линейная регрессия на службе программиста - просто и доступно

Embed Size (px)

Citation preview

Page 1: Линейная регрессия на службе программиста  - просто и доступно
Page 2: Линейная регрессия на службе программиста  - просто и доступно

Добро пожаловать

http://geekbrains.ru/events/142

Page 3: Линейная регрессия на службе программиста  - просто и доступно

Будем знакомы

Page 4: Линейная регрессия на службе программиста  - просто и доступно

Цель нашей встречи

Page 5: Линейная регрессия на службе программиста  - просто и доступно

Цель нашей встречи 0 Линейная регрессия

0 Что за зверь?

Page 6: Линейная регрессия на службе программиста  - просто и доступно

Цель нашей встречи 0 Линейная регрессия

0 Что за зверь?

0 Зачем нужна человеку?

Page 7: Линейная регрессия на службе программиста  - просто и доступно

Цель нашей встречи 0 Линейная регрессия

0 Что за зверь?

0 Зачем нужна человеку?

0 Зачем нужна программисту?

Page 8: Линейная регрессия на службе программиста  - просто и доступно

Цель нашей встречи 0 Линейная регрессия

0 Что за зверь?

0 Зачем нужна человеку?

0 Зачем нужна программисту?

0 Как ей пользоваться?

Page 9: Линейная регрессия на службе программиста  - просто и доступно

Цель нашей встречи 0 Линейная регрессия

0 Что за зверь?

0 Зачем нужна человеку?

0 Зачем нужна программисту?

0 Как ей пользоваться?

0 Бесплатные онлайн курсы

0 Литература

Page 10: Линейная регрессия на службе программиста  - просто и доступно

ГОТОВЫ?

Page 11: Линейная регрессия на службе программиста  - просто и доступно

Мотивация

0 Определение сложности работы алгоритма

0 Определение уровня зарплаты

Page 12: Линейная регрессия на службе программиста  - просто и доступно

Мотивация 0 Определение сложности работы алгоритма

0 Определение уровня зарплаты

0 Как поливать цветок?

0 предсказание качества роста растения как функция полива

0 Как лучше печь пирог?

0 предсказание вкуса пирога, как функция времени и температуры выпекания

Page 13: Линейная регрессия на службе программиста  - просто и доступно

Пример 1

0 Сложность работы сортировки?

0 Как посчитать\оценить?

Page 14: Линейная регрессия на службе программиста  - просто и доступно

Пример 1

0 Сложность работы сортировки?

0 Как посчитать\оценить?

0 Способ А: математический (теоретический)

Page 15: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ А

Page 16: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ А

Page 17: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ А

Page 18: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ А

Page 19: Линейная регрессия на службе программиста  - просто и доступно

Пример 1

0 Сложность работы сортировки?

0 Как посчитать\оценить?

0 Способ А: математический (теоретический)

0 Способ Б: симуляция + регрессия

Page 20: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ Б 0 Запустим алгоритм сортировки на данный разной

0 длины и определим время работы:

t=(runif(10,0,1000)*1000)

a=Sys.time();rez=sort(t);Sys.time()-a

Page 21: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ Б 0 Запустим алгоритм сортировки на данный разной

0 длины и определим время работы:

С помощью регрессии найдем прямую линию лучше всего приближающую данные

Page 22: Линейная регрессия на службе программиста  - просто и доступно

0 Поиск прямой линии лучше всего описывающий время работы алгоритма: model=lm(time ~size)

Page 23: Линейная регрессия на службе программиста  - просто и доступно

Пример 1 – способ Б 0 Запустим алгоритм сортировки на данный разной

0 длины и определим время работы:

С помощью регрессии найдем n*log n функцию лучше всего приближающую данные

Page 24: Линейная регрессия на службе программиста  - просто и доступно

0 Улучшенная модель: k*n* log(n) + c*n

0 2.9*n*log(n) – 30*n – чем больше точек возьмем, тем точнее будет оценка

Page 25: Линейная регрессия на службе программиста  - просто и доступно

Вывод 0 Применение регрессии может помочь, для проверки

верности оценки сложности работы алгоритма

0 Применение регрессии может помочь, для первичной оценки сложности оценки алгоритма

0 Можно пользоваться регрессией как черным ящиком, не вникая в детали (но это не наш путь)

Page 26: Линейная регрессия на службе программиста  - просто и доступно

Пример 2

0 Вася программист

Page 27: Линейная регрессия на службе программиста  - просто и доступно

Пример 2

0 Вася программист

0 Вася приступает к поиску работы

Page 28: Линейная регрессия на службе программиста  - просто и доступно

Пример 2

0 Вася программист

0 Вася приступает к поиску работы

0 Вася не знает какую зарплату ему запросить?

Page 29: Линейная регрессия на службе программиста  - просто и доступно

Пример

0 Вася программист

0 Вася приступает к поиску работы

0 Вася не знает какую зарплату ему запросить?

0 Как быть Васе?

Page 30: Линейная регрессия на службе программиста  - просто и доступно

Как быть Васе?

0 Что вы думаете?

Page 31: Линейная регрессия на службе программиста  - просто и доступно

Как быть Васе?

0 Что вы думаете?

0 Соглашайся на первое предложение?

0 Ищи максимальную зарплату?

0 Ищи работу для души. Деньги – не главное!

0 …

0 …

Page 32: Линейная регрессия на службе программиста  - просто и доступно

Вася и регрессия Вася опросил знакомых программистов об их образовании, опыте работы, а также о зарплате

Page 33: Линейная регрессия на службе программиста  - просто и доступно

Вася и регрессия

Page 34: Линейная регрессия на службе программиста  - просто и доступно

Вася и регрессия Вася опросил знакомых программистов об их образовании, опыте работы, а также о зарплате

Васе пришла в голову идея - ….

Page 35: Линейная регрессия на службе программиста  - просто и доступно

Вася и регрессия Вася опросил знакомых программистов об их образовании, опыте работы, а также о зарплате

Васе пришла в голову идея - возможно стоит оценить зарплату, основываясь на стаже?

Page 36: Линейная регрессия на службе программиста  - просто и доступно
Page 37: Линейная регрессия на службе программиста  - просто и доступно
Page 38: Линейная регрессия на службе программиста  - просто и доступно

Вася и регрессия Нет ни одного знакомого программиста с таким же стажем, как и у Васи (печаль)

Page 39: Линейная регрессия на службе программиста  - просто и доступно

Как быть? Нет ни одного знакомого программиста с таким же стажем, как и у Васи (печаль)

Page 40: Линейная регрессия на службе программиста  - просто и доступно

Помощь зала

Page 41: Линейная регрессия на службе программиста  - просто и доступно

Как быть? Нет ни одного знакомого программиста с таким же стажем, как и у Васи (печаль)

Можно взять программистов с похожим стажем и вычислить их среднюю зарплату

Page 42: Линейная регрессия на службе программиста  - просто и доступно
Page 43: Линейная регрессия на службе программиста  - просто и доступно
Page 44: Линейная регрессия на службе программиста  - просто и доступно

Метод ближайших соседей Неплохая стратегия – при определённых условиях

Page 45: Линейная регрессия на службе программиста  - просто и доступно

Метод ближайших соседей Неплохая стратегия – при определённых условиях

Жертва – проклятья размерности (чем больше размерность тем хуже работает)

Page 46: Линейная регрессия на службе программиста  - просто и доступно

Метод ближайших соседей Неплохая стратегия – при определённых условиях

Жертва – проклятья размерности (чем больше размерность тем хуже работает)

Модус операнди – «скажи мне кто твой друг, а я скажу кто ты»

Page 47: Линейная регрессия на службе программиста  - просто и доступно

Метод ближайших соседей Неплохая стратегия – при определённых условиях

Жертва – проклятья размерности (чем больше размерность тем хуже работает)

Модус операнди – «скажи мне кто твой друг, а я скажу кто ты»

Детали на вебинаре «Биг дата» https://goo.gl/J7F1dn

Page 48: Линейная регрессия на службе программиста  - просто и доступно
Page 49: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Возможно можно построить линию которая более-менее точно опишет зависимость зарплаты от образования?

Почему линию?

Page 50: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Возможно можно построить линию которая более-менее точно опишет зависимость зарплаты от образования?

Почему линию?

Линия относительно проста – требует всего два параметра

Page 51: Линейная регрессия на службе программиста  - просто и доступно
Page 52: Линейная регрессия на службе программиста  - просто и доступно
Page 53: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Зная параметры линии предсказать зарплату Васи несложно

Page 54: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Зная параметры линии предсказать зарплату Васи несложно

y=53+12.16*x

Васин стаж 2.3 года

Y=53+12.16*2.3= 81 т.р.

Page 55: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Зная параметры линии предсказать зарплату Васи несложно

y=53+12.16*x

Васин стаж 2.3 года

Y=53+12.16*2.3= 81 т.р.

Page 56: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

Как лучше всего построить линию?

Можно ли доверять линии на сто процентов?

Всегда ли предсказание имеет смысл?

Как оценить качество линии?

Page 57: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

Как лучше всего построить линию?

Ответ для пользователя: black box - есть функция которая строит лучшую линию:

Page 58: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

Как лучше всего построить линию?

Ответ для продвинутого пользователя: построим линию которая минимизирует сумму квадратов ошибок

Page 59: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

Как лучше всего построить линию?

Ответ для продвинутого пользователя: построим линию которая минимизирует квадрат ошибок

Page 60: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

0 Как лучше всего построить линию?

0 Как компьютер находит лучшую линию?

Page 61: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

0 Как лучше всего построить линию?

0 Как компьютер находит лучшую линию? 0 Есть специальная формула

Page 62: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Вопросы:

0 Как лучше всего построить линию?

0 Как компьютер находит лучшую линию?

0 Можно ли доверять линии на сто процентов? 0 Нет

0 Почти всегда есть разброс

0 Но иногда можно оценить степень уверенности в модели

Page 63: Линейная регрессия на службе программиста  - просто и доступно

Линейная регрессия Что мы видели:

Использование линейной регрессии в случае с зарплатой Васи, позволило нам, более менее точно, предсказывать зарплату Васи, а также оценить влияние стажа на з.п.

y=53+12.16*x - в соответствии с полученной моделью, каждый год стажа добавляет в среднем к з.п. 12.16 т.р.

Page 64: Линейная регрессия на службе программиста  - просто и доступно

Будьте осторожны

Page 65: Линейная регрессия на службе программиста  - просто и доступно

Будьте осторожны

0 Друг Васи, решил оценить свою зарплату основываясь на второй цифре в номере паспорта

0 Как вы думаете, что получиться у друга Васи?

Page 66: Линейная регрессия на службе программиста  - просто и доступно

run = floor(runif(300,0,10)) zp = floor(rnorm(300,90,20)) plot(run,zp)

Page 67: Линейная регрессия на службе программиста  - просто и доступно

Попробуем предсказать зарплату?

Page 68: Линейная регрессия на службе программиста  - просто и доступно

Попробуем предсказать зарплату?

Page 69: Линейная регрессия на службе программиста  - просто и доступно

Кто Вася?

Page 70: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель

Page 71: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель (квадратичную функцию)

Page 72: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель

Page 73: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель

0 Интересные и важные вопросы:

0 «Как выбрать подходящую модель?»

0 «Что такое подходящая модель?»

0 Полином, тригонометрические функции, сплайны,….

Page 74: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Васин друг предложил еще больше улучшить качество предсказания и взять полином 10 степени

Page 75: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Васин друг предложил еще больше улучшить качество предсказания и взять полином 10 степени

Page 76: Линейная регрессия на службе программиста  - просто и доступно
Page 77: Линейная регрессия на службе программиста  - просто и доступно
Page 78: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Васин друг предложил еще больше улучшить качество предсказания и взять полином 10 степени

0 Overfitting – недостаточно данных, чтобы настроить такую сложную модель

Page 79: Линейная регрессия на службе программиста  - просто и доступно

Бритва Оккама

Page 80: Линейная регрессия на службе программиста  - просто и доступно

Бритва Оккама

• Принцип Бритва Оккама не является теоремой.

• Kolmogorov complexity - en.wikipedia.org/wiki/Kolmogorov_complexity

Page 81: Линейная регрессия на службе программиста  - просто и доступно

2D – 3D

• Как еще можно улучшить предсказание зарплаты?

Page 82: Линейная регрессия на службе программиста  - просто и доступно

2D – 3D • Как еще можно улучшить предсказание

зарплаты?

• Почему бы не определять зарплату с помощью двух параметров: • стаж • количество лет образования

Page 83: Линейная регрессия на службе программиста  - просто и доступно

ъ

model = lm(Salary ~ Education + WorkExp)

Page 84: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Чем больше релевантных параметров будет, тем лучше может получиться модель

0 Но как выбрать важные и релевантные параметры?

0 Что делать если параметры коррелированы между собой?

0 Как оценить важность параметров?

Page 85: Линейная регрессия на службе программиста  - просто и доступно

Более сложная модель

0 Но как выбрать важные и релевантные параметры?

0 Что делать если параметры коррелированы между собой?

0 Как оценить важность параметров?

0 Ответы на курсах по машинному обучению или статистическому обучению

Page 86: Линейная регрессия на службе программиста  - просто и доступно

Резюме

0 Линейная регрессия – одна из самых простых модель описания и предсказания зависимостей

Page 87: Линейная регрессия на службе программиста  - просто и доступно

Резюме

0 Линейная регрессия – одна из самых простых модель описания и предсказания зависимостей

0 Модель возможно и не самая точная, но интуитивно понятная и может служить начальным приближением для оценок

Page 88: Линейная регрессия на службе программиста  - просто и доступно

Резюме

"All models are wrong but some are useful".

Page 89: Линейная регрессия на службе программиста  - просто и доступно

Онлайн курсы 0 EDX – MIT – «Меч Аналитики»

0 edx.org/course/analytics-edge-mitx-15-071x-0

0 Достоинства курса: 0 множество интересных примеров

0 минимум теории,

0 максимум практики

0 Язык программирования R

Page 90: Линейная регрессия на службе программиста  - просто и доступно

Онлайн курсы 0 Stanford – Statistical Learning 0 lagunita.stanford.edu/courses/HumanitiesandScience/StatLearning/Winter2015

/about

0 Достоинства курса: 0 немного теории

0 много практики

0 хороший учебник по курсу

0 Язык программирования: R

Page 91: Линейная регрессия на службе программиста  - просто и доступно

Онлайн курсы 0 Coursera, Stanford – Machine Learning

0 coursera.org/learn/machine-learning

0 Достоинства курса:

0 удачное сочетание практики и теории

0 Язык программирования: Matlab, Octave

Page 92: Линейная регрессия на службе программиста  - просто и доступно

Онлайн курсы 0 Edx, Caltech, Learning from data

0 https://work.caltech.edu/telecourse.html

0 Достоинства курса:

0 твердый теоретический фундамент

0 основные теоретические моменты объяснены в интересной и доступной форме

0 хороший учебник сопровождающий курс

Page 93: Линейная регрессия на службе программиста  - просто и доступно

Уголок Библиофила

Page 94: Линейная регрессия на службе программиста  - просто и доступно

ОБРАТНАЯ СВЯЗЬ 0 [email protected]

0в контакте: vk.com/agile_psy

0youtube: youtube.com/user/igorkle1

Ваши вопросы и обратная связь суть лучший источник мотивации

Page 95: Линейная регрессия на службе программиста  - просто и доступно

Благодарности

Page 96: Линейная регрессия на службе программиста  - просто и доступно

Благодарности

Образовательный IT-портал GeekBrains

Page 97: Линейная регрессия на службе программиста  - просто и доступно

Благодарности

0Клейнер Надежда

0Бородин Захар

0Гольцман Александр

0Дубинский Игаль

0Гликин Григорий

Page 98: Линейная регрессия на службе программиста  - просто и доступно

Ответы на вопросы участников