После слишком долгого заигрывания с идеей заняться машинным обучением я, наконец, сделал свой первый успешный шаг в этой области. Прочитав отрывки из Курса Эндрю Нг и много статей, я понял, что для изучения машинного обучения мне нужно сосредоточиться на одной вещи, а именно на ПРАКТИКЕ.

Я уже знал, что Kaggle для машинного обучения - это то же самое, что TopCoder, Codeforces, SPOJ, CodeChef для соревновательного программирования, поэтому это должна была быть платформа, на которой я должен был практиковаться, а scikit-learn был библиотекой машинного обучения, использование Python было несложным делом. Итак, я начал с Титанической задачи на Kaggle, которая считается первой проблемой, которую запускают при изучении ML.

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

Основываясь на моем понимании после чтения некоторых блогов (особенно Machine Learning Mastery и Analytics Vidhya), я разделил свой подход на следующие этапы:

  • Понимание проблемы (доступные данные довольно ясны, поэтому решить эту проблему было несложно)
  • Извлечение функций (Это была, на удивление, самая важная и самая интересная часть. Чтение ядер других людей мне очень помогло. Построение графика и проверка важности каждой функции с последующим извлечением нескольких функций из отдельных функций или их комбинации, преобразование категориальных от функций к фиктивным функциям »и т. д.)
  • Попробуйте разные алгоритмы (я пробовал Логистическая регрессия, Случайный лес, SVM, k-ближайший сосед, а затем попробовал объединить прогнозы для большей точности)
  • Оцените каждый алгоритм и выберите тот, который дает наилучшие результаты.

Наконец, опробовав разные алгоритмы и разные их комбинации, я получил точность 0,79904 на тестовом наборе (лучшие 21%).

Я начал эту проблему с очень простой идеи о двоичной классификации, но, решая проблему, я консультировался с Google по поводу различных алгоритмов классификации и затронул довольно много, а затем реализовал их с помощью потрясающей библиотеки scikit. Сейчас я нахожусь на стадии, когда эти алгоритмы для меня больше не греческие, и я уверен в своем будущем пути.

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