Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hw12 #297

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open

Hw12 #297

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2,029 changes: 2,029 additions & 0 deletions 08. Feature Engineering/Hw8_best_home.ipynb

Large diffs are not rendered by default.

366 changes: 366 additions & 0 deletions 09. Unsupervised/.ipynb_checkpoints/unsup-checkpoint.ipynb

Large diffs are not rendered by default.

214 changes: 3 additions & 211 deletions 09. Unsupervised/README.md
Original file line number Diff line number Diff line change
@@ -1,213 +1,5 @@
Задачи машинного обучения
## Unsupervised Learning

Supervised и unsupervised. Регрессия, классификация, кластеризация. Метрики качества.
Домашка в папке



Типы задач

Рассмотрим типы задач, которые встречаются в машинном обучении.



Классификация.


Рассмотрим следующую задачу. Мы работаем в банке и нам необходимо, чтобы система определяла, сможет ли человек вовремя погасить кредит или нет. У нас есть различная информация о человеке, так называемые признаки (features). Они бывают различных типов:



Бинарные признаки: наличие телефона.
Номинальные признаки: профессия, адрес проживания.
Порядковые признаки: образование, занимаемая должность. По сути, они похожи на номинальные признаки, только тут у значений признака имеется порядок (высшее образование ценится выше среднего и т.д.).
Количественные признаки: зарплата, возраст, количество детей в семье и т.п.


Ответ же к данной задаче либо 0 (человек не выплатит кредит вовремя) и 1 (Человек выплатит кредит вовремя). Т.е. в задаче классификации значение, которое мы хотим предсказать (далее целевая переменная ), принадлежит конечному множеству. В нашей задаче, например, это {0;1}. Бывают множества не только из 2 классов. Например, задача диагностики болезни по симптомам. Тут классы — это список болезней.

Как решается данная задача? В таких задачах нам требуется обучающая выборка . Это история того, как в прошлом наши клиенты выплачивали кредиты. Мы знаем о них все: где они работают, сколько получают и т.п. А так же нам известно смогли они выплатить кредит или нет. Знание того, что мы предсказываем (целевой переменной) относит задачу к задачам обучение с учителем .

Далее модель машинного обучения находит закономерности в этой выборке. Например, если человек безработный, то скорее всего, он не выплатит кредит вовремя и т.д. Она запоминает эти закономерности, и когда приходит черёд узнать, а сможет ли новый клиент заплатить кредит вовремя, модель смотрит на эти зависимости и выдаёт ответ. Список новых клиентов называется тестовой выборкой . Главное её отличие от обучающей выборки заключается в том, что для элементов из тестовой выборки неизвестна целевая переменная (в нашем случае — это выплатит клиент кредит или нет).



Регрессия.


Еще одним типом является регрессия. Например, можно рассмотреть такую задачу: мы хотим по росту родителей определить насколько высоким может быть их ребёнок. Действительно, как правило, есть зависимость, что у высоких родителей дети тоже имеют высокий рост и наоборот. Т.е. от классификации задача регрессии отличается тем, что тут целевая переменная — вещественное число.

Обучающей выборкой в данной задаче будет набор троек: (рост родителя №1, рост родителя №2, рост ребёнка). Тестовой выборкой — набор двоек: рост родителя №1 и рост родителя №2.



Кластеризация.


В обучающих выборках, рассмотренных выше задач, нам было известна целевая переменная:

Выплатит ли человек кредит вовремя — в задаче классификации;
Рост ребенка — в задаче регрессии.
Однако, целевая переменная не всегда известна. Например, мы провели социологический опрос, у нас есть много ответов на вопросы и нам хотелось бы сгруппировать их по поведению. Мы заранее не знаем, сколько таких кластеров получится и что они из себя представляют. Это мы можем узнать только после того как появятся сами кластеры.

Еще простой и пробирочной задачей кластеризации является кластеризация точек на плоскости:



Алгоритм KNN для задачи классификации

Рассмотрим один из самых простых алгоритмов для задачи классификации KNN - k ближайших соседей. Пусть перед нами стоит задача бинарной классификации — 0 или 1. Рассмотрим ситуацию, когда все признаки — вещественные числа. В дальнейшем, при изучении курса вы сумеете переводить номинальные и порядковые признаки в числа. Пусть у нас имеется обучающая выборка X_{train} = \{,x_1, ..., x_N \}X
train
={,x
1
,...,x
N
} , где каждый x_1x
1
 — это вектор из mm признаков. Для каждого объекта из обучающей выборки известна целевая переменная y_i ∈ \{,0; 1\}y
i
∈{,0;1} . А так же пусть имеется тестовая выборка X_{test} =\{, x_{N+1}, ..., x_{N+M}\}.X
test
={,x
N+1
,...,x
N+M
}. Для них неизвестна целевая переменная, это мы должны выяснить сами.

Сам алгоритм:

Для каждого из объектов тестовой выборки x_{N+i}x
N+i

Находим k ближайших к нему соседей из обучающей выборки X_{train}X
train
 . Ближайших в смысле Евклидового расстояния:
p(x;y)=\sqrt{(x_1-y_1)^2+\dots+(x_m-y_m)^2}p(x;y)=
(x
1
−y
1
)
2
+⋯+(x
m
−y
m
)
2


Если среди этих ближайших соседей больше нулей, то для объекта x_{N+i}x
N+i
 выдаем ответ — 0, иначе — 1


Вот и весь алгоритм. Его можно немного модифицировать — использовать вместо Евклидового расстояния другие метрики. К сожалению, алгоритм не часто используется на практике, но неплохо подходит для обучения.



Алгоритм k-means для задачи кластеризации



Рассмотрим теперь задачу кластеризации и алгоритм k-means для ее решения. Пусть в качестве объектов у нас NN точек на плоскости: \{(x_1, y_1), ...,(x_N , y_N )\}{(x
1
,y
1
),...,(x
N
,y
N
)} :



Мы хотим разбить эти точки на k=3k=3 кластера.

Выбираем k=3k=3 случайные точки из этого множества. Говорим, что они теперь являются центрами наших кластеров.
Для каждой из оставшихся точек смотрим, к какому из центров она ближе и определяем её в этот кластер.
У нас получилось разбить точки на 3 кластера. Естественно это не оптимальное решение. Найдем новые центры кластеров, а именно посчитаем центры масс каждого кластера. Например, если точки \{(x_{i_1}, y_{i_1}), ... , (x _{i_n}, y_{i_n})\}{(x
i
1

,y
i
1

),...,(x
i
n

,y
i
n

)} попали в один кластер, то его новый центр масс будет иметь координаты: x_M =\frac {x_{i_1} + ... + x_{i_n}}
nx
M
=
n
x
i
1

+...+x
i
n


 ; y_M =\frac {y_{i_1} + ... + y_{i_n}}
ny
M
=
n
y
i
1

+...+y
i
n



Далее с этими новыми центрами масс переходим к шагу 2. Продолжаем до тех пор пока кластеры перестанут меняться.
**Дедлайн: 30 мая😎**
Binary file added 09. Unsupervised/birds.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions 09. Unsupervised/unsup.ipynb

Large diffs are not rendered by default.

Loading