Линейная регрессия на службе программиста - просто и...
Post on 22-Mar-2017
1.561 Views
Preview:
TRANSCRIPT
Добро пожаловать
http://geekbrains.ru/events/142
Будем знакомы
Цель нашей встречи
Цель нашей встречи 0 Линейная регрессия
0 Что за зверь?
Цель нашей встречи 0 Линейная регрессия
0 Что за зверь?
0 Зачем нужна человеку?
Цель нашей встречи 0 Линейная регрессия
0 Что за зверь?
0 Зачем нужна человеку?
0 Зачем нужна программисту?
Цель нашей встречи 0 Линейная регрессия
0 Что за зверь?
0 Зачем нужна человеку?
0 Зачем нужна программисту?
0 Как ей пользоваться?
Цель нашей встречи 0 Линейная регрессия
0 Что за зверь?
0 Зачем нужна человеку?
0 Зачем нужна программисту?
0 Как ей пользоваться?
0 Бесплатные онлайн курсы
0 Литература
ГОТОВЫ?
Мотивация
0 Определение сложности работы алгоритма
0 Определение уровня зарплаты
Мотивация 0 Определение сложности работы алгоритма
0 Определение уровня зарплаты
0 Как поливать цветок?
0 предсказание качества роста растения как функция полива
0 Как лучше печь пирог?
0 предсказание вкуса пирога, как функция времени и температуры выпекания
Пример 1
0 Сложность работы сортировки?
0 Как посчитать\оценить?
Пример 1
0 Сложность работы сортировки?
0 Как посчитать\оценить?
0 Способ А: математический (теоретический)
Пример 1 – способ А
Пример 1 – способ А
Пример 1 – способ А
Пример 1 – способ А
Пример 1
0 Сложность работы сортировки?
0 Как посчитать\оценить?
0 Способ А: математический (теоретический)
0 Способ Б: симуляция + регрессия
Пример 1 – способ Б 0 Запустим алгоритм сортировки на данный разной
0 длины и определим время работы:
t=(runif(10,0,1000)*1000)
a=Sys.time();rez=sort(t);Sys.time()-a
Пример 1 – способ Б 0 Запустим алгоритм сортировки на данный разной
0 длины и определим время работы:
С помощью регрессии найдем прямую линию лучше всего приближающую данные
0 Поиск прямой линии лучше всего описывающий время работы алгоритма: model=lm(time ~size)
Пример 1 – способ Б 0 Запустим алгоритм сортировки на данный разной
0 длины и определим время работы:
С помощью регрессии найдем n*log n функцию лучше всего приближающую данные
0 Улучшенная модель: k*n* log(n) + c*n
0 2.9*n*log(n) – 30*n – чем больше точек возьмем, тем точнее будет оценка
Вывод 0 Применение регрессии может помочь, для проверки
верности оценки сложности работы алгоритма
0 Применение регрессии может помочь, для первичной оценки сложности оценки алгоритма
0 Можно пользоваться регрессией как черным ящиком, не вникая в детали (но это не наш путь)
Пример 2
0 Вася программист
Пример 2
0 Вася программист
0 Вася приступает к поиску работы
Пример 2
0 Вася программист
0 Вася приступает к поиску работы
0 Вася не знает какую зарплату ему запросить?
Пример
0 Вася программист
0 Вася приступает к поиску работы
0 Вася не знает какую зарплату ему запросить?
0 Как быть Васе?
Как быть Васе?
0 Что вы думаете?
Как быть Васе?
0 Что вы думаете?
0 Соглашайся на первое предложение?
0 Ищи максимальную зарплату?
0 Ищи работу для души. Деньги – не главное!
0 …
0 …
Вася и регрессия Вася опросил знакомых программистов об их образовании, опыте работы, а также о зарплате
Вася и регрессия
Вася и регрессия Вася опросил знакомых программистов об их образовании, опыте работы, а также о зарплате
Васе пришла в голову идея - ….
Вася и регрессия Вася опросил знакомых программистов об их образовании, опыте работы, а также о зарплате
Васе пришла в голову идея - возможно стоит оценить зарплату, основываясь на стаже?
Вася и регрессия Нет ни одного знакомого программиста с таким же стажем, как и у Васи (печаль)
Как быть? Нет ни одного знакомого программиста с таким же стажем, как и у Васи (печаль)
Помощь зала
Как быть? Нет ни одного знакомого программиста с таким же стажем, как и у Васи (печаль)
Можно взять программистов с похожим стажем и вычислить их среднюю зарплату
Метод ближайших соседей Неплохая стратегия – при определённых условиях
Метод ближайших соседей Неплохая стратегия – при определённых условиях
Жертва – проклятья размерности (чем больше размерность тем хуже работает)
Метод ближайших соседей Неплохая стратегия – при определённых условиях
Жертва – проклятья размерности (чем больше размерность тем хуже работает)
Модус операнди – «скажи мне кто твой друг, а я скажу кто ты»
Метод ближайших соседей Неплохая стратегия – при определённых условиях
Жертва – проклятья размерности (чем больше размерность тем хуже работает)
Модус операнди – «скажи мне кто твой друг, а я скажу кто ты»
Детали на вебинаре «Биг дата» https://goo.gl/J7F1dn
Линейная регрессия Возможно можно построить линию которая более-менее точно опишет зависимость зарплаты от образования?
Почему линию?
Линейная регрессия Возможно можно построить линию которая более-менее точно опишет зависимость зарплаты от образования?
Почему линию?
Линия относительно проста – требует всего два параметра
Линейная регрессия Зная параметры линии предсказать зарплату Васи несложно
Линейная регрессия Зная параметры линии предсказать зарплату Васи несложно
y=53+12.16*x
Васин стаж 2.3 года
Y=53+12.16*2.3= 81 т.р.
Линейная регрессия Зная параметры линии предсказать зарплату Васи несложно
y=53+12.16*x
Васин стаж 2.3 года
Y=53+12.16*2.3= 81 т.р.
Линейная регрессия Вопросы:
Как лучше всего построить линию?
Можно ли доверять линии на сто процентов?
Всегда ли предсказание имеет смысл?
Как оценить качество линии?
Линейная регрессия Вопросы:
Как лучше всего построить линию?
Ответ для пользователя: black box - есть функция которая строит лучшую линию:
Линейная регрессия Вопросы:
Как лучше всего построить линию?
Ответ для продвинутого пользователя: построим линию которая минимизирует сумму квадратов ошибок
Линейная регрессия Вопросы:
Как лучше всего построить линию?
Ответ для продвинутого пользователя: построим линию которая минимизирует квадрат ошибок
Линейная регрессия Вопросы:
0 Как лучше всего построить линию?
0 Как компьютер находит лучшую линию?
Линейная регрессия Вопросы:
0 Как лучше всего построить линию?
0 Как компьютер находит лучшую линию? 0 Есть специальная формула
Линейная регрессия Вопросы:
0 Как лучше всего построить линию?
0 Как компьютер находит лучшую линию?
0 Можно ли доверять линии на сто процентов? 0 Нет
0 Почти всегда есть разброс
0 Но иногда можно оценить степень уверенности в модели
Линейная регрессия Что мы видели:
Использование линейной регрессии в случае с зарплатой Васи, позволило нам, более менее точно, предсказывать зарплату Васи, а также оценить влияние стажа на з.п.
y=53+12.16*x - в соответствии с полученной моделью, каждый год стажа добавляет в среднем к з.п. 12.16 т.р.
Будьте осторожны
Будьте осторожны
0 Друг Васи, решил оценить свою зарплату основываясь на второй цифре в номере паспорта
0 Как вы думаете, что получиться у друга Васи?
run = floor(runif(300,0,10)) zp = floor(rnorm(300,90,20)) plot(run,zp)
Попробуем предсказать зарплату?
Попробуем предсказать зарплату?
Кто Вася?
Более сложная модель
0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель
Более сложная модель
0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель (квадратичную функцию)
Более сложная модель
0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель
Более сложная модель
0 Оля - знакомая Васи предложила использовать для предсказания более сложную модель
0 Интересные и важные вопросы:
0 «Как выбрать подходящую модель?»
0 «Что такое подходящая модель?»
0 Полином, тригонометрические функции, сплайны,….
Более сложная модель
0 Васин друг предложил еще больше улучшить качество предсказания и взять полином 10 степени
Более сложная модель
0 Васин друг предложил еще больше улучшить качество предсказания и взять полином 10 степени
Более сложная модель
0 Васин друг предложил еще больше улучшить качество предсказания и взять полином 10 степени
0 Overfitting – недостаточно данных, чтобы настроить такую сложную модель
Бритва Оккама
Бритва Оккама
• Принцип Бритва Оккама не является теоремой.
• Kolmogorov complexity - en.wikipedia.org/wiki/Kolmogorov_complexity
2D – 3D
• Как еще можно улучшить предсказание зарплаты?
2D – 3D • Как еще можно улучшить предсказание
зарплаты?
• Почему бы не определять зарплату с помощью двух параметров: • стаж • количество лет образования
ъ
model = lm(Salary ~ Education + WorkExp)
Более сложная модель
0 Чем больше релевантных параметров будет, тем лучше может получиться модель
0 Но как выбрать важные и релевантные параметры?
0 Что делать если параметры коррелированы между собой?
0 Как оценить важность параметров?
Более сложная модель
0 Но как выбрать важные и релевантные параметры?
0 Что делать если параметры коррелированы между собой?
0 Как оценить важность параметров?
0 Ответы на курсах по машинному обучению или статистическому обучению
Резюме
0 Линейная регрессия – одна из самых простых модель описания и предсказания зависимостей
Резюме
0 Линейная регрессия – одна из самых простых модель описания и предсказания зависимостей
0 Модель возможно и не самая точная, но интуитивно понятная и может служить начальным приближением для оценок
Резюме
"All models are wrong but some are useful".
Онлайн курсы 0 EDX – MIT – «Меч Аналитики»
0 edx.org/course/analytics-edge-mitx-15-071x-0
0 Достоинства курса: 0 множество интересных примеров
0 минимум теории,
0 максимум практики
0 Язык программирования R
Онлайн курсы 0 Stanford – Statistical Learning 0 lagunita.stanford.edu/courses/HumanitiesandScience/StatLearning/Winter2015
/about
0 Достоинства курса: 0 немного теории
0 много практики
0 хороший учебник по курсу
0 Язык программирования: R
Онлайн курсы 0 Coursera, Stanford – Machine Learning
0 coursera.org/learn/machine-learning
0 Достоинства курса:
0 удачное сочетание практики и теории
0 Язык программирования: Matlab, Octave
Онлайн курсы 0 Edx, Caltech, Learning from data
0 https://work.caltech.edu/telecourse.html
0 Достоинства курса:
0 твердый теоретический фундамент
0 основные теоретические моменты объяснены в интересной и доступной форме
0 хороший учебник сопровождающий курс
Уголок Библиофила
ОБРАТНАЯ СВЯЗЬ 0 igkleiner@gmail.com
0в контакте: vk.com/agile_psy
0youtube: youtube.com/user/igorkle1
Ваши вопросы и обратная связь суть лучший источник мотивации
Благодарности
Благодарности
Образовательный IT-портал GeekBrains
Благодарности
0Клейнер Надежда
0Бородин Захар
0Гольцман Александр
0Дубинский Игаль
0Гликин Григорий
Ответы на вопросы участников
top related