91
Распознавание образов Константин Третьяков http://kt.era.ee DevClub 27.04.2011

Константин Третьяков. Machine Learning

Embed Size (px)

DESCRIPTION

Слайды Кости с девклаба.

Citation preview

Page 1: Константин Третьяков. Machine Learning

Распознавание образов

Константин Третьяков http://kt.era.ee

DevClub

27.04.2011

Page 2: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Data mining,

Data analysis, Statistical analysis,

Pattern discovery, Statistical learning,

Machine learning, Predictive analytics,

Business intelligence, Data-driven statistics,

Inductive reasoning, Pattern analysis,

Knowledge discovery from databases,

Neural networks,

Page 3: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 4: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 5: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 6: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

A

Page 7: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 8: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Плохо формализуемые задачи

Page 9: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Плохо формализуемые задачи

Page 10: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Плохо формализуемые задачи

А

A

A

B

B

B

B

Page 11: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 12: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 13: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Общее правило:

ЕСЛИ (Х сделан из пластмассы), ТО (Х несъедобен)

Применение в частном случае: Х = Кубик Рубика ⇒ Кубик Рубика несъедобен

Page 14: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Общее правило:

add(x, y) = function { … }

Применение в частном случае: add(2,4)

Page 15: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Общее правило:

bool has_access(x) {

return x.authenticated(); }

Применение в частном случае: if (has_access(John)) {

}

Page 16: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Общее правило:

bool has_access(x) {

? }

Частные случаи: has_access(John) = True

has_access(Jane) = True

has_access(Mike) = False

Page 17: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Общее правило:

bool has_access(x) {

? }

Частные случаи: has_access(John) = True

has_access(Jane) = True

has_access(Mike) = False

Ин

дукц

ия

Page 18: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Дедукция

Известно общее правило, нужно принять решение в частном случае

Page 19: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Индукция

Известны частные случаи, нужно найти общее правило

Page 20: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Дедукция и индукция

Page 21: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Классификация по аналогии

Page 22: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

MNIST dataset

http://yann.lecun.com/exdb/mnist/

Картинки рукописных цифр, 28 х 28

Page 23: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

MNIST dataset

from PIL import Image

from glob import glob

from numpy import array

def load_image(filename):

img = Image.open(filename)

return array(

[ord(char) for char in img.tostring()]

)

Page 24: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

MNIST dataset

# 10 000 файлов *.png

files = glob("*.png")

# Загружаем данные

images = [load_image(file) for file in files]

# 102.1.png -> “1” (класс)

labels = [file.split(".")[1] for file in files]

# Возьмем 1000 картинок

training_set = images[0:1000]

training_labels = labels[0:1000]

Page 25: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

MNIST dataset

> training_set[0]

array([ 0, 0, 0, ...,

254, 241, 198, ...])

> training_labels[0]

‘7’

Page 26: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Метод ближайшего соседа

Training set

4

4

7

9

7

4

Page 27: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Метод ближайшего соседа

def classify(img):

similarities =

[similarity(img, p) for p in training_set]

i = similarities.index(max(similarities))

return training_labels[i]

Page 28: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Метод ближайшего соседа

def classify(img):

similarities =

[similarity(img, p) for p in training_set]

i = similarities.index(max(similarities))

return training_labels[i]

def similarity(img1, img2):

return -sum(abs(img1 - img2))

Page 29: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Проверим

test_set = images[1000:2000]

test_labels = labels[1000:2000]

predicted_class = map(classify, test_set)

n_successes =

sum(array(predicted_class) ==

array(test_labels))

=> 860/1000

Page 30: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

9 или 4?

Page 31: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

from scikits.learn.neighbors import

NeighborsClassifier

clf = NeighborsClassifier(n_neighbors=1)

clf.fit(training_set, training_labels)

predicted_class = clf.predict(test_set)

=> 869/1000

Scikit-learn http://scikit-learn.sourceforge.net/

Page 32: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 33: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Метод ближайшего соседа

Training set

4

4

7

9

7

4

Page 34: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Некоторые примеры можно выкинуть

Training set

4

4

7

9

7

4

Page 35: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Еще хитрее – добавить «веса»

Training set

4

4

7

9

7

4

0.0

1.0

1.0

1.0

0.0

Page 36: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Еще хитрее – добавить «веса»

Training set

4

4

7

9

7

4

0.0

0.9

1.1

2.0

0.0

Page 37: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Вместо максимума, можно суммировать

Training set

4

4

7

9

7

4

0.0

0.9

1.1

2.0

0.0

Page 38: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Вместо максимума, можно суммировать

Training set

4

7

9

7

4

0.0

0.9

1.1

2.0

0.0

evidence(img, 4) =

0.9 * similarity(img, tr[1])

+

0.0 * similarity(img, tr[4])

= 34.0

Page 39: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Вместо максимума, можно суммировать

Training set

4

7

9

7

4

0.0

0.9

1.1

2.0

0.0

evidence(img, 7) =

0.0 * similarity(img, tr[0])

+

2.0 * similarity(img, tr[3])

= 20.0

Page 40: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 41: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 42: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 43: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 44: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 45: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 46: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 47: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 48: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Page 49: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Loading Math Mode…

Done!

Page 50: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Общий вид

Page 51: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Но как найти веса?

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

w = argminw Error (f, w, Data)

Page 52: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Но как найти веса?

Найдем те, при которых мера ошибки предсказания на независимом множестве минимальна.

w = argminw Error*(f, w, Data)

Page 53: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Но как найти веса?

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

w = argminw Error*(f, w, Data) + Complexity (w)

Page 54: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Support Vector Machine

from scikits.learn.svm import SVC

clf = SVC(kernel=‘linear’)

clf.fit(training_set, training_labels)

predicted_class = clf.predict(test_set)

=> 877/1000

Page 55: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 56: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Классификация по аналогии:

k-NN

SVM

RBF

Page 57: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Поиск ближайшего соседа

def classify(img):

distances =

[distance(img, p) for p in training_set]

i = distances.index(min(distances))

return training_labels[i]

Неэффективно

Page 58: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Поиск ближайшего соседа

def classify(img):

nearest_neighbour =

training_set.find_nearest_neighbour(img)

return nearest_neighbour.label

Индексирование!

Page 59: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 60: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 61: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 62: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 63: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 64: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

find_nearest_neighbour

if pixel[10,13] > 4:

if pixel[3,24] < 0:

nearest_neighbour = A

else:

nearest_neighbour = B

else:

nearest_neighbour = C

Page 65: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Classification Tree

if pixel[10,13] > 4:

if pixel[3,24] < 0:

class = „1‟

else:

class = „2‟

else:

class = „3‟

Page 66: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Classification Tree

Page 67: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Classification Tree

Page 68: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Classification Tree

Orange http://orange.biolab.si/

Page 69: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 70: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Деревья ID3

C4.5

RegTree

Page 71: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Подбор оптимальных параметров модели

Общий вид модели

Page 72: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Подбор оптимального дерева

Общий вид модели

Page 73: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Оптимизация

Моделирование

Page 74: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Линейная модель

f(image) = pixel1*w1 + pixel2*w2 + … + pixel784*w784

Page 75: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Linear Classification

from scikits.learn.linear_model import

LinearRegression,

LogisticRegression,

RidgeClassifier,

LARS,

ElasticNet,

SGDClassifier,

...

=> 809/1000

Page 76: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 77: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Моделирование

Page 78: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Линейная модель

f(image) = pixel1*w1 + pixel2*w2 + … + pixel784*w784

Page 79: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

f(image) = pixel1*w1 + pixel2*w2 + … + pixel784*w784

pixel1

pixel2

pixel3

pixel4

pixel784

w1 w2

w3

w4

w784

f(image)

Page 80: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Нейронная сеть

Page 81: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Моделирование

Page 82: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Почему тренированная на одном наборе данных модель

должна работать на будущих данных?

В каком случае это не так?

Page 83: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Как формализовать новую модель? Как находить параметры модели?

Page 84: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Как создавать эффективные алгоритмы оптимизации?

Page 85: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Что делать со структурированными данными?

Page 86: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Unsupervised learning

Semi-supervised learning

On-line learning

Active learning

Multi-instance learning

Reinforcement learning

Page 87: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Probabilistic models

Graphical models

Ensemble learners

Data fusion

HPC

Page 88: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Инструменты: R, Weka, RapidMiner,

Orange, scikits-learn,

MLPy, MDP, PyBrain, …

Page 89: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 90: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Page 91: Константин Третьяков. Machine Learning

27.04.2011 Распознавание образов

Вопросы?