Мог ли ИИ помочь Титанику? | Навстречу AI

Выжить в катастрофе Титаника с помощью ИИ

Мне всегда нравились песни Франческо Де Грегори, одного из самых известных итальянских авторов песен, которого можно считать эпигоном местного Боба Дилана. В июне 1982 года, когда мне было около года, он выпустил концептуальный альбом под названием Титаник, в котором катастрофа 1912 года использовалась как метафора для положения общества и его страны в то время - меня соблазняет сказать, ни то, ни другое с тех пор сильно не изменилось. В частности, заглавная песня, обманчиво симпатичная своим латиноамериканским ритмом, дает некоторое представление о последних моментах людей, отправившихся в судьбоносное путешествие, которое изменило их жизнь к лучшему или худшему.

La prima classe costa mille lire / La seconda cento / La terza dolore e spavento

Первое занятие стоит 1000 фунтов стерлингов / второе занятие стоит 100 фунтов стерлингов / третье занятие будет стоить вам боли и страха

Ma chi l’ha detto che in terza classe / Che in terza classe si viaggia male? / Questa cuccetta sembra un letto a due piazze / Ci si sta meglio che in ospedale

Кто сказал, что путешествие третьим классом / что путешествие третьим классом - это так плохо? / Эта койка выглядит как большая двуспальная кровать / это лучше, чем в больнице

[Фактические цены составляли 150, 60 и 30 долларов соответственно, что соответствует 3000, 1200 и 600 долларов в наши дни. Интересно, что диапазон цен не слишком отличается от того, что вы заплатили бы, чтобы лететь из Великобритании в США сегодня]

Капитан Э. Дж. Смит был оптимистом. В его руках была лучшая технология того времени. Франческо де Грегори напоминает нам в песне I Muscoli del Capitano (Капитанские мышцы), что на рубеже 20-го века все были увлечены модернизмом и слишком сильно верили в непотопляемый прогресс. Музыкант представил себе разговор капитана с неопытным юнцом, которого беспокоит то, что, по его мнению, он увидел в воде.

Ma capitano non te lo volevo dire / ma c’è in mezzo al mare una donna bianca, / così enorme, alla luce delle stelle, / che di guardarla uno non si stanca.

Капитан, я не хотел тебе говорить / но в море есть белая женщина / такая огромная при свете звезд / что никогда не устанешь наблюдать за ней

Ил капитано дисс аль моццо ди бордо / «Джованотто, io non vedo niente. / C’è solo un po ’di nebbia / che annuncia il sole. / Andiamo avanti tranquillamente ».

И капитан сказал юниту: «Молодой человек, здесь не на что смотреть. / Туман / но скоро взойдет солнце. / Пойдем мирно ".

На борту такого корабля, как «Титаник», были как более богатые, так и более бедные пассажиры, некоторое количество офицеров, а также много людей из рабочего класса, которые также пересекали Атлантический океан в качестве членов экипажа в поисках лучшей жизни.

Ma mamma a me mi rubano la vita quando mi mettono a faticare, / per pochi dollari nelle caldaie, sotto al livello del mare. / In questa nera nera nave che mi dicono che non può affondare

Мать, они крадут мою жизнь, когда позволяют мне работать / всего за несколько долларов в котельной, под уровнем моря / На этом черном как смоль корабле, который они говорят, непотопляемый

Фактически, корабль затонул посреди Атлантики и все еще находится там (41,7325 ° с.ш., 49,9469 ° з.д.) спустя более века. Из 2200 пассажиров и 989 членов экипажа всего 706 человек выжили благодаря помощи корабля RMS Carpathia, прибывшего на место происшествия спустя четыре часа.

Как вы думаете, вы были бы одним из выживших? Была ли стратегия остаться в живых? Хотя мы никогда не узнаем наверняка, сразу после этого события стало ясно несколько деталей. Женщины и дети имели преимущество перед высадкой на несколько спасательных шлюпок. Можно легко предположить, что у более молодых и богатых людей больше шансов на спасение, но можно ли это оценить на статистической основе? Фактически, мы знаем достаточно подробностей о пассажирах, чтобы информация, если она правильно хранится в базе данных, могла быть обработана алгоритмом.

Оказывается, на сайте Kaggle это можно сделать!

В этом задании мы просим вас завершить анализ того, какие люди могут выжить. В частности, мы просим вас применить инструменты машинного обучения, чтобы предсказать, какие пассажиры выжили в трагедии. Ваша задача - предсказать, выжил ли пассажир во время гибели Титаника или нет. Для каждого в тестовом наборе вы должны предсказать значение 0 или 1 для переменной.

Доступная информация кодируется в двух файлах, разделенных запятыми, которые содержат следующие поля:

  • Pclass Класс билета (: 1 = верхний, 2 = средний, 3 = нижний)
  • Пол: Пол
  • Возраст: Возраст в годах (дробное для младенцев).
  • Sibsp: количество братьев, сестер и супруга. Брат = брат, сестра, сводный брат, сводная сестра. Супруг = муж, жена (любовницы и женихи игнорировались)
  • Перч: количество родителей или детей на борту корабля. Родитель = мать, отец. Ребенок = дочь, сын, падчерица, пасынок. Некоторые дети путешествовали только с няней, поэтому для них parch = 0.
  • Билет: номер билета (строка символов).
  • Тариф: пассажирский тариф (в долларах).
  • Каюта: номер каюты (строка символов).
  • Посадка: порт посадки (S = Саутгемптон, Q = Квинстаун (ныне Коб), C = Шербур).

В обучающем наборе, состоящем из 891 записи, дополнительное поле под названием Survived указывает, был ли пассажир среди счастливчиков или нет. Название игры - обучить классификатор на этом ансамбле, а затем запустить его на тестовой выборке (состоящей из 418 записей), чтобы предсказать их судьбу. Флаг «Выживший» отсутствует во втором файле и известен только организаторам испытания - хотя их имена включены, но какой смысл использовать Google для решения задачи?

Кстати, на борту было несколько итальянцев. Среди них Луиджи Финоли (запись №1103) - единственный пассажир из Абруцци, региона Италии, откуда я родом. Как и многие эмигранты, он покинул свой родной город Атесса, чтобы сесть на Титаник с билетом третьего класса. Ранее он эмигрировал в США в 1905 году и женился на другой молодой итальянке, Розе Чикконе. Мы не знаем, что привело его в Италию, вероятно, потеря семьи. Дело в том, что Луиджи был в Саутгемптоне в 1912 году, чтобы воссоединиться со своей женой в Америке. Что на самом деле он в конечном итоге и сделал, так как он был среди выживших, спасенных со спасательной шлюпки №2. 15. Другие итальянцы жили достаточно долго, чтобы рассказывать свои истории. Среди них Антонио Мартинелли скончался в 2001 году в возрасте 89 лет. Ему не было и года, когда он впервые пересек Атлантический океан на коленях своей матери. Вместо этого 24-летняя Аргене Дженовези (запись № 907 из набора) ехала вторым классом со своим мужем Себастьяно Дель Карло (№ 362 из набора). Ее спасли из спасательной шлюпки нет. 11 и благополучно добрался до Нью-Йорка, но Себастьяно не так повезло. Однако она родила Марию Сальвату (Спасенную Марию), которая в конце концов умерла в 2008 году в возрасте 96 лет.

Первое, что мы хотим сделать, это взглянуть на необработанные данные. В Интернете есть множество руководств, например это и это. Я опишу, что я сделал, как описано в моем коде на GitHub.

Прежде чем мы фактически посмотрим на данные, позвольте мне кратко обсудить некоторые манипуляции, которые окажутся полезными. По количеству братьев, сестер и родителей можно сделать вывод о размере семьи. В свою очередь, это распределение может быть «объединено» или «объединено» в категории: одиночные, малые (2 ‹4) и большие (› 4) семейства. Также по названию билета можно узнать, на какой палубе располагалась каюта. Точно так же из поля Имя извлекается название пассажира и повторно группируется по значимым категориям, в моем примере Офицер, Роялти, Мистер, Госпожа, Мисс, Мастер.

Итак, у кого больше шансов выжить? Как неоднократно сообщалось в газете, у пассажиров-женщин было больше шансов выжить. Это ясно из имеющихся у нас данных:

Данные, представленные таким образом, могут скрыть тот факт, что возраст также сыграл некоторую роль в выживании. Например, молодые мужчины (

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

Возможно, наличие билета третьего класса вам не поможет. Фактически, подавляющее большинство погибших спали на нижних палубах.

Наконец, я считаю, что есть последний график, рассказывающий истории. Если вы путешествуете один, вы, скорее всего, столкнетесь с проблемой (действует и сегодня с избыточным бронированием). Больше всего меня беспокоит мусорное ведро для большой семьи. Эти люди вряд ли оставят своих детей на борту тонущего корабля и, вероятно, предпочли бы попытаться спасти их или умереть вместе. Мы никогда не узнаем наверняка.

Время делать прогнозы. Этот вид задачи машинного обучения называется классификацией, что означает, что цель состоит в том, чтобы отнести запись к данному уникальному классу (также известному как категория). В данном случае это проблема бинарной классификации, так как один может быть живым или мертвым, но не обоими одновременно, если только вы не кот австрийского физика-теоретика. Чтобы достичь поставленной цели, необязательно заново реализовывать алгоритмы классификации, но вместо этого можно использовать программные библиотеки. В моем случае я выбрал scikit-learn и xgboost, которые являются де-факто стандартами в данной области из-за их полноты и простоты использования. Эти библиотеки на основе Python предоставляют ряд очень распространенных классификаторов, с которыми должен быть хотя бы знаком каждый специалист по данным:

Например, чтобы настроить базовый классификатор случайного леса, все, что вам нужно сделать, это:

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=100)
rf.fit(X_train, Y_train)

После обучения мы хотим оценить точность и спрогнозировать флаги выживших на тестовой выборке:

acc_rf = round(rf.score(X_train, Y_train) * 100, 2)
cv_rf = cross_val_score(rf, X_train, Y_train, cv=20, scoring="accuracy")
mean_rf = round(cv_rf.mean(), 2)
std_rf = round(cv_rf.std(), 2)

Функция cross_val_score () выполняет процедуру, называемую k-кратная перекрестная проверка, которая, по сути, является методом проверки способности модели предсказывать новые данные, которые не использовались при ее оценке.

Если мы повторим ту же процедуру для всех классификаторов, мы сможем ранжировать их в соответствии с их точностью. В этом упражнении он обычно составляет порядка 85%. Возможны более высокие значения, но следует иметь в виду, что с небольшими наборами данных вероятность перетренированности (т.е. запоминания, а не обучения) высока.

Оказывается, классификаторы Random Forest и Decision Trees имеют наивысшие оценки. Хотя в целом это не всегда верно, следует помнить, что в случае небольших обучающих наборов данных рекомендуется начинать с RF, DT (и, возможно, SVM), в то время как нейронные сети более подходят для выявления закономерностей в очень большие образцы.

При этом нельзя быть уверенным с помощью только одного метода. Если возможно, лучше усреднить по нескольким различным классификаторам. Для этого используются два простых метода: ансамблевое жесткое голосование и мягкий подсчет голосов. Жесткое голосование - это просто: класс определяется большинством голосов, как на демократических выборах. Мягкое голосование немного более продвинуто: результат определяется средневзвешенным значением, где веса - это вероятности, связанные с выходными данными каждого отдельного классификатора. В некоторых случаях этих простых методов недостаточно, и вместо них используются нейронные сети (с дополнительными входами).

Между прочим: судя по лучшему классификатору, который я нашел, я бы не пережил катастрофу «Титаника». Это входные данные, которые я добавил в тестовый образец. Я предполагаю, что буду путешествовать третьим классом со своей семьей (жена, двое детей, мои родители).

10000,3,"Di Sipio, Mr. Riccardo",male,37,1,4,0000000,10.0,C000,S

В заключение, гибель RMS Titanic была монументальной катастрофой, которая все еще ощущается спустя более века. В некотором смысле истории людей на борту все еще могут научить нас чему-то об изменениях в нашем обществе и о том, как изучение несправедливости прошлого может помочь нам создать лучшее место. Даже с помощью искусственного интеллекта.