Изменения

Перейти к: навигация, поиск

Известные наборы данных

9441 байт добавлено, 12:43, 9 апреля 2019
м
Нет описания правки
Известные наборы данных==Обзор==
==MNIST=====Описание===Для многих алгоритмов машинного обучения требуется большое количество данных. Кроме того, что моделям нужны данные для обучения, нужно сравнивать эффективность разных моделей. Поскольку поиск хороших наборов данных и их разметка {{---}} трудная задача, на помощь приходят уже собранные и размеченные наборы данных, для которых зачастую уже опубликованы результаты каких-то алгоритмов, и можно оценить, насколько хорошо работает исследуемая модель.
В этой статье рассмотрены с примерами несколько популярных наборов данных. Другие классические наборы можно посмотреть, например, на википедии<ref>https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research[[Файлhttps:MnistExamples//en.wikipedia.png|мини]org/wiki/List_of_datasets_for_machine-learning_research]</ref>.
Датасет MNIST {{---}} большой (порядка 60 000 тренировочных и 10 000 проверочных объектов) набор картинок с рукописными цифрами, часто используемый для тестирования различных алгоритмов распознавания образов. Он содержит черно-белые картинки размера 28x28 пикселей, исходно взятые из набора образков из бюро переписи населения США, к которым были добавлены тестовые образцы, написанные студентами американских университетов.
{| class===Результаты==="wikitable"|-! Набор данных! Какие объекты! Число объектов! Число классов! Доля ошибок лучшего публикованного алгоритма|-| Iris| Данные измерений четырех параметров цветков ириса| 150| 3| N/A, малый размер датасета|-| MNIST| Рукописные цифры, черно-белые изображения 32х32 пикселя| 70 000| 10На сайте| 0.18% <ref>[httphttps://yannarxiv.lecunorg/pdf/1805.com01890.pdf[https:/exdb/mnistarxiv.org/pdf/1805.01890.pdf]</ref> датасета можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасете, что является очень хорошим результатом, вполне сравнимым с человеком.|-===Код===| CIFAR-10 from sklearn.datasets import fetch_mldata| Фотографии объектов разных классов, цветные изображения 32х32 пикселя import random| 60 000 from sklearn.utils import shuffle from numpy import arange mnist = fetch_mldata('MNIST original')| 10 indices = arange(len(mnist| 1.data)) randidx = random23% <ref>https://arxiv.sample(list(indices), 500) mnistorg/pdf/1805.data = mnist09501.datapdf[randidx] mnisthttps://arxiv.org/pdf/1805.target = mnist09501.target[randidxpdf] X = mnist.data Y = mnist.target train = len(X)<//2ref> clf = DecisionTreeClassifier(criterion="entropy", max_depth=5)|- clf.fit(X[:train], Y[:train])| ImageNet expected = Y[train:]| Фотографии с указанием классов объектов на изображении и их позиций predicted = clf.predict(X[train:])| Больше 14 миллионов print("Classification report for classifier %s:\n%s\n"| Больше 21 тысячи % (clf| Большое количество различных метрик, metricsсм.classification_report(expected, predicted)))ImageNet Competition. 1-5% на классификацию|- ==CIFAR-10==|}
==Iris==
===Код===
 
from sklearn.datasets import load_iris
from sklearn import svm, metrics
from sklearn.utils import shuffle
from sklearn.ensemble import RandomForestClassifier
import numpy
iris=load_iris()
X = iris.data
predicted = clf.predict(X[train:])
print("Classification report for classifier %s:\n%s\n"
% (clf, metrics.classification_report(expected, predicted)))
type precision recall f1-score support
2 0.88 0.96 0.92 23
avg / total 0.95 0.95 0.95 75
 
 
==MNIST==
===Описание===
 
[[Файл:MnistExamples.png|мини|[https://en.wikipedia.org/wiki/MNIST_database#/media/File:MnistExamples.png Оригинал]]]
 
Датасет MNIST {{---}} большой (порядка 60 000 тренировочных и 10 000 проверочных объектов помеченных на принадлежность одному из десяти классов {{---}} какая цифра изображена на картинке) набор картинок с рукописными цифрами, часто используемый для тестирования различных алгоритмов распознавания образов. Он содержит черно-белые картинки размера 28x28 пикселей, исходно взятые из набора образцов из бюро переписи населения США, к которым были добавлены тестовые образцы, написанные студентами американских университетов.
 
===Результаты===
 
На сайте<ref>http://yann.lecun.com/exdb/mnist/[http://yann.lecun.com/exdb/mnist/]</ref> датасета можно найти список лучших результатов, достигнутых алгоритмами на это наборе данных. Так, худший из записанных результатов достигнут простым линейным классификатором (12% ошибок), а подавляющее большинство лучших результатов получены алгоритмами на основе нейронных сетей. Так, ансамбль из 35 сверточных нейронных сетей в 2012 году сумел получить всего 0.23% ошибок на датасете, что является очень хорошим результатом, вполне сравнимым с человеком.
 
===Код===
Простой пример, скачивающий набор данных и запускающий на нем один из классификаторов. Даже с уменьшением датасета в сто раз и не самым подходящим классификатором точность выше половины угаданных цифр {{---}} заметно лучше, чем случайная разметка.
 
 
from sklearn.datasets import fetch_mldata
from numpy import arange
import random
from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets, svm, metrics
 
[[Файл:Mnist-predict.png|мини]]
 
mnist = fetch_mldata('MNIST original')
indices = arange(len(mnist.data))
randidx = random.sample(list(indices), 500)
mnist.data = mnist.data[randidx]
mnist.target = mnist.target[randidx]
X = mnist.data
Y = mnist.target
train = len(X)//2
clf = DecisionTreeClassifier(criterion="entropy", max_depth=5)
clf.fit(X[:train], Y[:train])
expected = Y[train:]
predicted = clf.predict(X[train:])
print("Classification report for classifier %s:\n%s\n"
% (clf, metrics.classification_report(expected, predicted)))
 
digit precision recall f1-score support
0 0.68 0.58 0.62 26
1 0.71 0.87 0.78 23
2 0.29 0.24 0.26 25
3 0.64 0.28 0.39 25
4 0.50 0.54 0.52 28
5 0.46 0.46 0.46 24
6 0.47 0.62 0.54 24
7 0.66 0.78 0.71 27
8 0.32 0.60 0.42 15
9 0.59 0.39 0.47 33
avg/total 0.54 0.53 0.52 250
 
==CIFAR-10==
 
===Описание===
[[Файл:Cifar-10.png|мини|[https://medium.com/@jannik.zuern/training-a-cifar-10-classifier-in-the-cloud-using-tensorflow-and-google-colab-f3a5fbdfe24d Источник]]]
CIFAR-10 (Canadian Institute For Advanced Research) {{---}} еще один большой набор изображений, который обычно используется для тестирования алгоритмов машинного обучения. Он содержит 60 000 цветных картинок размером 32х32 пикселя, размеченных в один из десяти классов: самолеты, автомобили, коты, олени, собаки, лягушки, лошади, корабли и грузовики. В датасете по 6000 картинок каждого класса. CIFAR-10 является размеченным подмножеством заметно большего набора данных, состоящего примерно из восьмидесяти миллионов изображений.
 
===Результаты===
 
С момента публикации CIFAR-10 вышло много статей, авторы которых пытаются добиться максимальной точности на этом датасете. В среднем более хорошии результаты показывают различные сверточные нейронные сети с различными вариантами настройки и дополнительной предобработки данных.
 
На википедии<ref>https://en.wikipedia.org/wiki/CIFAR-10#Research_Papers_Claiming_State-of-the-Art_Results_on_CIFAR-10[https://en.wikipedia.org/wiki/CIFAR-10#Research_Papers_Claiming_State-of-the-Art_Results_on_CIFAR-10]</ref> можно найти таблицу лучших публикаций с процентами ошибки на этом датасете. Так, лучший на сегодняшний момент алгоритм, опубликованный в мае 2018 года, допускает ошибку всего порядка 1.48%.
 
 
===Код===
Простой код, скачивающий CIFAR-10 из интернета и запускающий на нем стандартный классификатор.
 
from keras.datasets import cifar10
from sklearn.utils import shuffle
 
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
X, Y = shuffle(x_train, y_train)
n = 1000
X, Y = X[:n], Y[:n]
X, Y = X.reshape((n, -1)), Y.reshape((n,))
train = n // 2
clf = DecisionTreeClassifier(criterion="entropy", max_depth=5)
clf.fit(X[:train], Y[:train])
expected = Y[train:]
predicted = clf.predict(X[train:])
print("Classification report for classifier %s:\n%s\n"
% (clf, metrics.classification_report(expected, predicted)))
==ImageNet==
 
===Описание===
[[Файл:Imagenet.png|мини|[http://www.image-net.org/challenges/LSVRC/2014/ Источник]]]
 
База данных Imagenet {{---}} проект по созданию и сопровождению массивной базы данных аннотированных изображений. Аннотация изображений происходит путем краудсорсинга сообществом. Из-за этого достигается большое количество размеченных данных.
 
Особенность датасета {{---}} про каждую картинку известно несколько фактов вида "в этом прямоугольнике есть автомобиль", что в совокупности с индексом по типам объектов, которые есть на изображениях, позволяет обучить алгоритм для распознавания объектов какой-то конкретной категории. На август 2017 года в ImageNet 14 197 122 изображения, разбитых на 21 841 категорию.
 
===Imagenet Challenge===
 
[[Файл:Imagenet-contest.png|мини|[https://en.wikipedia.org/wiki/File:ImageNet_error_rate_history_(just_systems).svg Оригинал]]]
 
Вместе с публикацией набора данных стартовал конкурс ImageNet Large Scale Visual Recognition Challenge (ILSVRC<ref>http://www.image-net.org/challenges/LSVRC/[http://www.image-net.org/challenges/LSVRC/]</ref>). В его рамках участникам предлагается достигнуть наибольшей точности при классификации набора изображений. Организаторы использовали около тысячи различных категорий объектов, которые нужно классифицировать. На примере этого конкурса хорошо видно, как в 2010-е годы люди научились заметно лучше распознавать образы на изображениях, уже в 2017 году большинство участвующих команд преодолели порог в 95% правильных ответов. Эта задача, проблема компьютерного зрения, имеет огромное практическое значение во многих прикладных областях.
 
==Примечания==
47
правок

Навигация