В первой части статьи я остановился на проблемах дата-сайентистов и на моделях, а в конце показал пары картинок, где нужно было отличить кошку от собаки. В этой части я приведу ответы и расскажу, что и в какой степени влияет на качество моделей. А также для дата-сайентистов приведу код Python, который был использован для получения картинок в задании. Все исходные изображения, использованные в статье, взяты из бесплатных фотостоков.  Ответ к рисунку 1: слева собака, справа кошка.  Ответ к рисунку 2: слева кошка, справа собака.   Ответ к рисунку 3: слева кошка, справа собака.  Ответ к рисунку 4: слева собака, справа кошка.  Ответ к рисунку 5: слева собака, справа кошка. А теперь хотите узнать ответ на самый важный вопрос предыдущей части статьи: от чего зависит качество моделей, которые делают для вас дата-сайентисты? Прежде чем дать ответ, сделаю одну оговорку. Всё сказанное ниже относится только к релевантной информации — то есть к информации, действительно влияющей на результат, что мы хотим предсказать. Например, если мы хотим понять, что изображено на картинке, для нас важно качество изображения. Увеличивая детализацию изображения, можно лучше распознать предмет на нем.  Но если картинка окружена рамкой, то изображение рамки никак не влияет на картинку. Увеличивая детализацию изображения рамки, нельзя улучшить качество распознавания картинки. Так же и с моделью: дополнительная информация о ценах на недвижимость, например, в Калифорнии не поможет нам при уточнении цены квартиры в Москве. И вот ответ. На качество модели влияют следующие параметры: Количество переменных, доступных аналитику (чем больше, тем лучше). Количество возможных значений каждой из переменных (чем больше, тем лучше). Распределение частот значений переменных (если каждое из значений переменной примерно равновероятно, это значительно лучше, чем если есть одно доминирующее значение). Доля пропусков в значениях переменных (чем больше, тем хуже). Корреляция (наличие связи) пропусков между различными переменными (чем сильнее корреляция, тем хуже). Что требуется предсказать: уже состоявшееся событие или событие в будущем (уже произошедшее событие гораздо легче предсказать). Наконец, последнее, что влияет на качество модели — это использованный аналитиком метод моделирования. Чтобы наглядно увидеть, как описанные выше факторы влияют на качество модели, предлагаю вам применить чрезвычайно сложный и качественный инструмент распознавания — вашу зрительную систему — для различных наборов данных.  На этой картинке (в исходном качестве) 900 000 переменных. Каждая из них принимает одно из 256 значений. И мы легко можем понять, что на картинке изображено. Чтобы упростить, давайте перейдем к черно-белым изображениям. Тогда доступный нам набор переменных сократится в три раза, но мы по-прежнему легко распознаем изображение.  Вот результат обработки: Справа от рисунка приведена гистограмма. По оси х отложены варианты значений переменных (от 0 до 255). Высота столбика показывает, какое количество переменных (точек изображения) имеет значение 0, какое 1, какое 2 и так далее до 255. Мы видим, что бо́льшая часть значений сосредоточена в диапазоне от 25 до 100, что соответствует различным оттенкам серого цвета. Когда мы имеем дело с реальными бизнес-кейсами, то сталкиваемся с противоположной ситуацией. Часто нам доступно небольшое количество переменных, то есть оцениваемый объект имеет всего несколько характеристик. Например, квартира в базе данных московской недвижимости может иметь следующие 19 параметров: количество комнат (от 1 до 5); метро (более 300 станций); район (12 округов, около 150 районов); тип квартиры (2 градации – новостройка или вторичка); общая площадь (непрерывная переменная); жилая площадь (непрерывная переменная); площадь кухни (непрерывная переменная); этаж (приблизительно 25 градаций); количество этажей в доме (приблизительно 25 градаций); наличие парковки (да/нет); квартира в собственности у нынешнего владельца более 3 лет (да/нет); есть фото (да/нет); квартира свободна (да/нет); возможна ипотека (да/нет); материал дома (10 градаций); балкон (5 градаций); ремонт (5 градаций); вид из окна (3 градации); санузел (3 градации). Мы видим, что некоторые параметры (метро, район) имеют много градаций, в то время как другие — всего две (тип квартиры, наличие парковки, квартира в собственности более 3 лет, фото, квартира свободна, ипотека).  Специфика бизнес-кейсов состоит в том, что там очень часто встречаются переменные всего с двумя либо с небольшим набором возможных значений. Переменные с двумя значениями называются бинарными. Наличие таких переменных очень влияет на разрешающую способность моделей. Давайте проверим это. Пусть все переменные будут иметь только два возможных значения – 0 или 1. При этом одно значение переменной (например, 0) будет встречаться гораздо чаще: 0 в 95% случаев, а 1 в 5% случаев. Давайте посмотрим, сколько вам потребуется таких переменных, чтобы определить, что изображено на картинке. На каждой из представленных в этом разделе картинок изображен предмет, отличный от тех, что изображены на других картинках. Теперь пойдем другим путем. Зафиксируем количество переменных — 10 000 — но будем изменять частоту, с которой встречается наиболее частое (так называемое модальное) значение переменной. Если мы увеличим долю значения 1, то теперь оно станет модальным значением, и по мере дальнейшего роста его доли частота модального значения опять будет возрастать, а качество распознавания – снижаться. А что произойдет, если вместо двух градаций мы введем три? И каждое значение будет встречаться с одинаковой частотой? Чем больше градаций переменной и более равномерно между градациями распределены значения этой переменной, тем выше распознающая способность модели. Часто переменные имеют пропуски (отсутствие данных). Посмотрим, как это мешает распознаванию изображения.  Предположим сначала, что пропуски переменных никак не связаны между собой. Зафиксируем 10 000 переменных. Пусть количество градаций одной переменной – 256. Пропуски мы будем заполнять цветом фона. Мы видим, что если пропуски не скоррелированы между собой, то значительная доля пропусков слабо сокращает распознающую способность модели. Но чаще в жизни встречается другая ситуация: пропуски хотя бы частично скоррелированы (связаны) между собой. Например, мы опрашиваем людей по телефону. Анкета длинная, состоит из 40 вопросов. Со временем человеку надоедает, и он прекращает отвечать на вопросы. Это означает, что если респондент ответил только на 15 вопросов, то для него значения всех оставшихся 25 переменных будут пропусками. У другого, допустим, терпения хватило на 30 ответов — значения 10 последних переменных пропущены и так далее. Мы видим, что вероятность пропуска значения переменной зависит от номера вопроса (то есть от номера этой переменной). Чем номер больше, тем чаще возникают пропуски в переменной. Это напоминает ситуацию, когда фотографию, например, делают против солнца. Та часть фотографии, на которой окажется солнечный диск, будет полностью засвечена. Ее окрестности – частично. Там, где до солнечного диска будет далеко, картинка полностью сохранится.  А раньше, когда фотографии делались на целлулоидную пленку, которую потом проявляли в темноте в фотолаборатории (а некоторые любители даже на дому), участок фотографии мог засветиться случайно пробившимся в лабораторию лучом света. Также один из краев отпечатанной фотографии мог быть оборван. Вернемся к игре. Мы по-прежнему имеем 10 000 переменных, из которых 50% — шум. Когда пропуски в переменных не были скоррелированы, мы легко могли разобрать изображение при таком уровне шума. А сейчас вы можете сказать, что/кто изображен(о) в левой части рисунка? Возможно, вам не хватает деталей? Давайте вместо 10 000 переменных возьмем 1 000 000 переменных. Изображение в правой части рисунка стало гораздо лучше. А в левой? Как видим, при скоррелированных пропусках картинку гораздо сложнее распознать. Если событие уже произошло в прошлом, то иногда мы можем определить его с точностью, близкой к 100%. Если же событие произойдет в будущем, мы не можем быть настолько уверены. Вот два примера. Мы можем относительно точно определить, что ребенок уже нарисовал. Но что он собирается нарисовать, мы можем только угадать с определенной степенью вероятности. Чем лучше мы знаем самого́ ребенка, его интересы и вкусы, окружающую его обстановку, тем точнее можем угадать, что он собирается нарисовать. Но мы никогда не сможем предсказать сюжет будущей картинки с точностью 100%. Мы имеем дело с фундаментальной неопределенностью будущего. Последнее относится и к той ситуации, когда ребенок уже нарисовал рисунок, но мы не можем взглянуть на этот рисунок. Нам доступна только информация о том, что происходило до момента начала рисования.  Аналогична ситуация и в бизнесе. Мы никогда не сможем точно сказать, отдаст клиент кредит или не отдаст. Наша оценка может иметь только вероятностный характер. Даже сам клиент не знает, вернет ли он кредит. Если он мошенник, то точно знает, что не намерен возвращать деньги. Но честный клиент тоже может не вернуть кредит по не зависящим от него обстоятельствам. И пока эти обстоятельства не наступили, мы можем только оценить их вероятность, но не предсказать наверняка. Даже если срок возврата кредита уже прошел и мы знаем точный ответ, при построении модели возврата кредита мы можем пользоваться только теми данными, которыми располагали на момент выдачи кредита. Поэтому наша модель априори не может иметь 100% точность. А существуют ли модели со 100% точностью? Да, такие модели существуют — например, наборы картинок для распознавания, такие как Mnist, Cifar-10, ImageNet. Для всех этих наборов построены модели, которые распознают их с точностью, близкой к 100%. При этом все наборы обладают следующими характеристиками: Большое количество переменных (Mnist – 784, Cifar – 3072, ImageNet – порядка 750 000). Большое количество возможных значений каждой из переменных (256). Близкое к равномерному распределение частот значений переменных. Отсутствие пропусков в переменных (нулевой уровень шума). Отсутствие корреляции пропусков между различными переменными. На картинках запечатлены уже состоявшиеся события. Чем ближе ваша задача к указанным параметрам, тем больше вероятность построить модель с точностью 100%. И наоборот, если указанные условия не выполняются, то и достижение точности 100% представляется мало достижимым. В этой статье наглядно показано: чтобы ваши дата-сайентисты радовали вас высоким качеством своих моделей, необходимо обеспечить их данными, максимально отвечающими следующим критериям: Переменных много. Каждая из переменных имеет много градаций.  Значения каждой из переменных распределены между градациями примерно равномерно. Пропусков в переменных мало. Пропуски в различных переменных не скоррелированы между собой. О том, что важно моделировать уже произошедшие события, я упоминать не буду. Предсказание будущего — зачастую именно то, что вам нужно от дата-сайентиста. Но не стоит удивляться, если такая модель не будет иметь 100% точности. Если вам интересно, что было изображено на картинках, ответы будут приведены в третьей части статьи.