Обзор практического машинного обучения с помощью Scikit-Learn, Keras и Tensorflow Орельена Жерона

Резюме

В этой главе основное внимание уделяется работе над полным проектом машинного обучения. В частности, автор предлагает вымышленную ситуацию, в которой вы поручили проекту предсказать стоимость домов в Калифорнии, чтобы ваша компания могла улучшить свою текущую инвестиционную стратегию.

Получение и оценка ваших данных

Итак, для этого вы начинаете настраивать конвейер, чтобы вы могли воспроизводимо собирать данные, с которыми вы будете работать, из переписи населения США и импортировать их в Pandas Dataframe (для тех, кто не знаком, автор также предоставляет введение в блокноты Jupyter и виртуальные среды).

Затем предпринимается чрезвычайно важный шаг — разделение данных на обучающий и тестовый наборы, которые будут использоваться позже для оценки (sklearn.model_selection.train_test_split()). Отсюда мы знакомимся с различными статистическими и визуальными методами, которые мы можем использовать для оценки наших данных на этапе предварительной обработки. Некоторыми из наиболее важных являются гистограммы Matplotlib (plt.hist()), стандартный коэффициент корреляции (pd.DataFrame.corr()) и матрицы рассеяния панд (pandas.plotting.scatter_matrix()).

Очистка данных и предварительная обработка

Наиболее распространенными методами являются обработка нулей, кодирование текстовых/категориальных данных и масштабирование функций.

  • Здесь мы знакомимся с методами DataFrame.dropna(), DataFrame.drop() и DataFrame.fillna(), которые делают именно то, на что они похожи, они либо удаляют, либо заполняют нуль, или, в случае numpy Nan (не число), значения.
  • А вот с кодировкой немного интереснее. Алгоритмы машинного обучения могут интерпретировать только количественные данные, поэтому мы должны преобразовывать текстовые или категориальные значения, такие как «Лос-Анджелес» и другие города, в количественные значения. Мы делаем это с помощью кодирования, и в этом случае наш автор использовал sklearn.preprocessing.OrdinalEncoder() для преобразования значений в числа. Например, если бы у нас были «Лос-Анджелес», «Бербанк» и «Пало-Альто», они могли бы быть закодированы как 1, 2 и 3, чтобы наш алгоритм мог их интерпретировать. После этого наш автор вводит понятие One-Hot Encoding. Это форма двоичного кодирования, которая хорошо работает для небольших объемов категориальных данных. Например, если бы у нас был столбец заднего двора с возможными значениями «без заднего двора», «трава» и «бассейн», мы превратили бы его в три столбца «истина/ложь». Таким образом, каждый дом будет иметь столбец «Нет заднего двора» со значением 0 или 1, «Трава» со значением 0 или 1 и столбец «Бассейн» со значением 0 или 1, создавая три двоичных столбца, а не 1 категориальный. столбец.
  • Масштабирование функций — это когда вы пытаетесь стандартизировать значения в вашей модели до аналогичного масштаба. Это может сделать модели машинного обучения более точными из-за того, как базовые модели взаимодействуют с данными. Здесь Жерон представляет нам два типа масштабирования функций. Во-первых, масштабирование минимум-максимум (он же нормализация), которое звучит точно так же, как и масштабирование возможных значений на основе минимума и максимума данных (в данном случае столбца). Таким образом, вы берете значение, которое вы масштабируете, вычитаете из него минимальное значение, а затем делите это значение на максимальное минус минимальное (используйте MinMaxScaler в sklearn). Другой тип — стандартизация (используйте StandardScaler в sklearn). Чтобы использовать стандартизацию, вы должны вычесть среднее значение из вашего текущего значения, а затем разделить новое значение на стандартное отклонение. Преимущество этого подхода заключается в том, что выбросы меньше влияют на значения, но могут вызвать проблемы в алгоритмах, таких как некоторые нейронные сети, которые ожидают значений от 0 до 1.

Выберите, обучите и настройте модель

В последнем разделе второй главы мы подходим к сути машинного обучения, собственно обучению. Потратив так много времени на оценку и визуализацию наших данных, мы должны иметь довольно хорошее представление о том, какой тип алгоритма мы должны использовать, что-то, о чем мы узнаем больше в следующих главах, и можем его применить. Sklearn делает этот процесс чрезвычайно простым в реализации и обычно просто включает в себя объявление, какую модель мы собираемся использовать, а затем подгонку и прогнозирование на наших обучающих данных.

Теперь начинается самое интересное. Здесь мы будем использовать некоторые методы оценки, изученные в предыдущей главе, такие как перекрестная проверка (мы потратим на это много времени в следующих главах). И затем, как только мы оценили нашу модель, мы можем решить, нужно ли нам использовать другую, потому что она недостаточно подходит или слишком подходит, и точно настроить модель с помощью таких методов, как сетка или рандомизированный поиск.

Основные выводы

Фокус на данных

Это одна из самых длинных глав в Hands on Machine Learning, состоящая из 49 страниц, но только 3 страницы посвящены выбору и обучению вашей модели, а 4 — точной настройке модели. Таким образом, в главе, посвященной полному процессу машинного обучения, только 1/9 посвящена моделям и обучению.

Воспроизводимость

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

Ваши результаты не всегда изменят вашу жизнь

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

Мои мысли

Фокус на данных (мои мысли)

Я думаю, что Géron делает это в центре внимания первых двух глав, чтобы донести до читателей, которые, как я полагаю, как и я, только начинают свою карьеру в машинном обучении, что данные так же важны, как и алгоритмы. Много времени тратится на сбор данных, которые могут быть сложными и/или дорогостоящими, а также на оценку и подготовку этих данных для машинного обучения.

Весь процесс

Существует много статистических данных, связанных с тем, что мы узнали в этих двух последних главах, и, честно говоря, многое из того, что я видел до сих пор, связано с тем, что я узнал на уроках эконометрики в колледже. Методологии на этом этапе кажутся очень похожими на то, как экономисты используют данные в своем анализе (возможно, поэтому так много докторов экономических наук продолжают работать в науке о данных).

Спасибо за чтение!

Если у вас есть какие-либо вопросы или отзывы, пожалуйста, свяжитесь со мной в твиттере @wtothdev или оставьте комментарий!

Кроме того, я хотел бы выразить огромную благодарность Орельен Жерон за написание такой прекрасной книги. Вы можете приобрести указанную книгу здесь (не партнерская).

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