Как стать автором
Обновить

Сможете ли вы отличить собаку от кошки, или Как объяснить проблемы дата-сайентиста коллегам. Часть 1

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров3.5K
Всего голосов 9: ↑7 и ↓2+8
Комментарии29

Комментарии 29

вопрос 1: <zanuda> почему не "дата-сайнтист"? ведь меняется только суффикс, слово "scientist" вроде бы читается как "сайнтист" </zanuda>

вопрос 2: был на нескольких семинарах по DS, но никто так и не смог объяснить в чем отличие DS от обычных разработчиков, аналитиков, ученых и т.д. Просто у меня есть знакомый, который ML занимается с начала 90-х и как специалист по DS он никогда не проходил.

вопрос 3:

но имеющие очень смутное представление о технологиях Data Science

Это вообще никак не связано с DS. Это касается вообще любых технологичных вещей совсем не обязательно связанных с ИТ. Например работая на заводе я был втянут в разборки между директором и спецами работающими на СО2 резчике. Директор думал что раз увидел логотип загрузки Windows XP, то и я чем-то помогу, а вопрос касался того - почему станок простаивает. С мужиками поболтали, а всё сводилось к тому, что директор не хотел покупать какие-то датчики давления на систему охлаждения из европы, а китайские не выживали при загрузке лазера 24/7.

вопрос 4:

Выстраивание правильной коммуникации с клиентом — задача продавца, то есть в данном случае самого́ дата-сайентиста

Вы работаете как самозанятый? Тогда возможно, но вам тогда и второе образование потребуется. Вот у меня их два с половиной и не помогает, приходится еще учиться на ходу постоянно. А если не самозанятый, то вы заказчика вообще видеть не должны, вы как специалист должны работать с данными, моделями, серверами, а заказчиками пусть занимаются другие специалисты.

вопрос 5:

Вот первый рисунок. Где тут кошка, а где собака?

Тут нет ни кошек ни собак, есть только набор квадратиков в оттенках серого и есть (у вас) модель, которая научена по совокупности точек делать предположения. Вы здесь лукавите, так как при совпадении точек например со слоном, модель у вас будет слона называть кошкой. Мне ваш тест напомнил сериал, который любит смотреть моя мама - "След", там тоже по трем точкам с камеры видеонаблюдения восстанавливают 836 страниц документов 8 кеглем написанных, которые лежали в чемодане в багажнике пока преступник проезжал по соседней улице где могла бы стоять камера.

Вопрос 1. "Сайентист" — это гораздо более распространенный вариант, чем "сайнтист", и он соответствует произношению, как в британском, так и в американском варианте: https://dictionary.cambridge.org/pronunciation/english/scientist

 "Сайентист" — это гораздо более распространенный вариант, чем "сайнтист"

ниже есть картинка по запросам яндекса, а вот с поиска из гугла по книгам:

Hidden text

Для меня очевидно, что когда издается книга, пытаются чтобы она была написана исходя из правил, то как это написано в словарях. А у Яндекса то, как пишут запросы люди.

и он соответствует произношению, как в британском, так и в американском варианте

в одном случае говорят "сайнтист", в другом "сайнтэст", абсолютно отсутствует произношение трёх слогов.

Не давало мне покоя это слово, что-то вспоминалось, и вспомнил - саентология. Что интересно я всегда это слово знал именно как "саен", полез в вики, там сама статья в варианте "саен", но так же указан вариант "сайентология". Полез на Грамота.ру, там написано что "сайентология, -и ", полез в яндекс:

Статистика по словам / Показов в месяц

саентология 22 858

Статистика по словам / Показов в месяц

сайентология 942

А вот по гуглу поиск слов по книгам:

Hidden text

Мне кажется нет единого и однозначного мнения как именно писать это заимствование.

Не стоит ориентироваться по слуху на правильное произношение, для этого придумана такая штука, как транскрипция — графически закрепленное верное произношение. Идем по ссылке на словарь из моего предыдущего сообщения и видим: /ˈsaɪən.tɪst/ — три слога.

ə — это гласный звук, стоящий в безударной позиции, посмотрите, как он произносится в разных словах: https://www.youtube.com/watch?v=RVvn6204I_Y.

Так что написание "сайнтист" не соответствует ни нормам транскрипции, ни нормам транслитерации.

|"вы здесь лукавите..."

Если модель спутает кошку и слона при анализе картинки, то автор добавит еще один признак, исключив ошибку в будущем. А может подключит и машинное обучение к уже проанализированным картинкам. Вы же не видели результата модели, а лишь матрицу с совокупностями точек. Выражаясь вашим языком и примерами, это словно в очень сильный микроскоп разглядывать 0,001 квадратный миллиметр ковра и понять, что же на нем нарисовано. Хотя владелец ковра уверяет вас, что на нем изображен всемирный потоп и ковчег. Тут либо верить автору и оторвать глаз от микроскопа, либо спорить до пены у рта. Я предпочту верить, а потом проанализирую (после третьей части).

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

почему не "дата-сайнтист"?

Потому что когда русский язык заимствует в себя иностранное слово, он приводит его к собственным лингвистическим нормам. Русскому языку не нравятся такие нагромождения согласных, он разбавляет их гласными.

Также, например, не совпадают с исходником футляр (Futteral) и верстак (Werkstatt).

Потому что когда русский язык заимствует в себя иностранное слово, он приводит его к собственным лингвистическим нормам

Слово "data science" я знаю еще с 90-х и в литературе и в интернете всегда пишется как дата-сайнс (если конечно кому-то в голову приходит писать его так). Тут ситуация такая же как с "андройд", ведь формально писать "андройд" это правильно, но слово "андроид" уже давно используется и пишется именно через "и".

Русскому языку не нравятся такие нагромождения согласных, он разбавляет их гласными.

Вы утрируете. По такой логике "андроид" предпочтительнее, но сегодня пишут примерно 50/50 и через "и" и через "й". Конструкция "айе" сложна по произношению, слов же с согласной после "й" предостаточно - дедлайн, сплайн, шайба, тайский, хайп, сойлент и т.д. Слова же вроде "район" в произношении всегда упрощаются - "раён", "андроид" - "андройд". Потому что так легче произносить.

Если зайти в переводчики и нажать кнопочку озвучки, то голосом вам никто не будет говорить - сай-ен-тист. Вам будут произносить - сайн-тист. Это же касается слова "сайнс".

Также, например, не совпадают с исходником футляр (Futteral) и верстак (Werkstatt).

Так обозначенное мной произношение как раз и соответствует этой тенденции. А вы вместо Мэтью Макконахи предлагаете произносить Мэтью Маканаги.

---

Ну и конечно как без фактов. По времени появления слов я анализировать не умею (видел на ютубе как товарищ и такое делает), но мы видим что если уж "сайнтист" не единственный вариант в сети, то точно используется не меньше чем "сайентист" (если просуммировать все запросы, то в 1.5 раза чаще).

Hidden text

Вот с андроидом - мимо, это из греческого, все -оиды в значении "подобный чему-то" через "и" пишутся (например, геоид, кубоид, параллелепипедоид).

А по теме - на википедии есть Англо-русская практическая транскрипция со ссылкой на Гиляревский, 1985, стр. 57—106; Ермолович, 2001, стр. 135—138; Рыбакин, 2000, стр. 13—20.

Там, в том числе, указано:

ie [aɪə] айе Society → Сосайети

Вопрос 1 - не является принципиальным.

Вопрос 2 - Data Science ближе всего к статистике. От статистики Data Science отличается методами. Статистики используют методы, которые, как правило, имеют априорные предположения о характере распределений. Метрики этих методов выводятся на основании аналитических формул. В DS используются метрики без априорных предположений о характере распределений. Метрики рассчитываются путем статистических экспериментов (бутстреп). Отличие DS от статистики обусловлено тем, что статистика создавалась, когда компьютеры были слабые и статистики не могли себе позволить большое количество расчетов. А в DS очень много статистических экспериментов в противовес аналитическим формулам.

Вопрос 3 - Эта проблема носит универсальный характер. Но предложенное мной решение применимо именно для DS. В других областях Вы можете придумать Ваши собственные методы визуализации сложных проблем.

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

Во-вторых, любой специалист - продавец самого себя. Сначала Вы продаете себя компании на собеседовании. И от того, как Вы себя успешно продали, зависит факт найма и размер зарплаты. Потом Вы продаете себя внутри компании. И от успешности Вашей продажи себя зависят Ваша карьера и повышение зарплаты. Я знаю многих блестящих специалистов, которые не умеют себя продавать, и много пустышек, отлично себя продающих. У вторых результаты (в карьере и в деньгах) часто бывают гораздо лучше.

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

Вопрос 5 - Тут изображены собаки и кошки. Завтра Вы увидите это наглядно. А некоторые (например, уважаемый Machirodont, поделившийся своим оригинальным методом в комментариях ниже, уже видят).

Вопрос 5 - Тут изображены собаки и кошки

в линуксе есть модуль для медиаплеера кажется aalib, где изображение формируется на основе плотности пикселей в знакоместах ASCII. Таким образом одновременно можно утверждать что там изображены символы и формируемое ими изображение.

я вам лишь показал, что ответ не имеет однозначности.

А некоторые (например, уважаемый Machirodont, поделившийся своим оригинальным методом в комментариях ниже, уже видят).

как человек постоянно работающий с графикой ATARI/C64 у меня глаз привычен к низкому разрешению и проблему "как в знакоместе 8х8 изобразить печальную девушку" я знаю не понаслышке. поэтому очевидное решение - уменьшить размеры пикселей:

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

В вашем примере давайте я напишу что вижу:

ничего / кот с белым низом и черным верхом

ничего / ничего

собака типа йорка / собака с висячими ушами, темной мордой и светлой грудкой

собака типа дога / кролик

ничего / ничего

И глаз человека не занимается попиксельным сравнением, поэтому признаки в виде квадратиков не подходят (например алгоритмы OCR тоже не занимаются пиксельным сравнением). Поэтому древние люди изображали объекты черточками, а не серыми квадратиками, ну и собственно смайлики как пример. :) ;) XD и т.д. и мы понимаем какая эмоция изображена.

Ну, для честности, я-бы все-же алгоритм потенциальных функции и карты Кохонена отнес именно к попиксельным.

Есть или правда или байка, что император китайский поручил составить перечень животных в империи, и там был такой - все объекты издали кажущиеся мухами.

В пиксельных моделях всегда будет стоять вопрос разрешения. Если вы будете привязываться к пикселям, то придется это учитывать. Например в статье показаны именно квадратики в оттенках серого, то что они в ряде случаев могут складываться так, что образуют что-то ИЗДАЛИ похожее на кошку - это просто вероятность. В начале 00-х пользовался программой ради баловства, которая при подсовывании картинки писала что там нарисовано, но писала в процентах, например - самолет 17%, жираф 32%, Эйфелева башня 34%. Человек тоже принимает решение не с булевой точностью, это всегда веса. Но человек реальную кошку от собаки НЕ отличает попиксельной моделью. Когда вы ему подсовываете пиксели, как в примере 12х12, то мозг уже работает с материалом иначе, это как оригами, лего или наскальные рисунки. То есть это не вопрос - нарисована ли тут кошка, это вопрос - эта мозаика из серых квадратов скорее кошка чем собака?

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

Это кошка или собака? А если кошка, то почему? Потому что пиксели черные? Или потому что расставленные в определенных местах черные пикселы сформировали признаки, которые мы можем сопоставить с образом кошки?

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

Наверное, мне нужно еще раз пояснить саму идею статьи.

Бизнес-заказчик мне говорит: Ваша модель может отличить плохого клиента от хорошего с точностью 60 Джини. Наверное качество модели такое низкое потому, что Вы используете простые методы (логрегрессия). Вот если бы Вы использовали нейросети, то качество модели было бы около 100 Джини.

Я отвечаю: качество модели в первую очередь зависит не от используемого метода, а от объема данных, которыми мы располагаем.

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

Не верите? Посмотрите сами - и дальше демонстрирую пикселизированные картинки. А потом исходники. То есть, я уменьшаю объем данных о реальном мире с того, который мы имеем благодаря нашему зрению, до того, который мы имеем в бизнес-модели о компаниях-клиентах. И показываю, как мы видели бы реальный мир, имей мы о нем также мало данных, как мы имеем сейчас о компаниях-клиентах.

Сегодня я размещу вторую часть и все станет очевидно.

Вот вам и нужно убрать полностью раздел "сыграем в простую игру" и вставить туда ваш ответ мне. Чтобы было понятно зачем вы все это делаете.

По мне, насчёт "144 переменных" – вы перегибаете палку. Обычно всё-таки, если делается классификатор на основе каких-то признаков – изначально отбирают достаточно осмысленные (иначе надо очень много признаков ==> нужна очень большая обучающая выборка). А то вы могли бы для своих 144 переменных вообще взять средние яркости не по 144 квадратам, а, допустим, по периметру изображения. Или 144 случайных числа.

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

Для отсеивания используются различные методы: Information Value, корреляция с таргетом, feature importance на простом дереве, feature importance на модели одномерного бустинга, критерий Колмогорова-Смирнова для двух выборок, где одна соответствует нулевым значениям таргета, а вторая - единичным, удаление коррелирующих признаков (для логистической регрессии) и т.п.

А в случае нейросетей (сейчас самый мощный метод) никто вообще не отсеивает сырые признаки. Их могут быть миллионы (отсеивание производится внутренней архитектурой нейросети).

Ok, но у вас изначально был, допустим, миллион признаков (картинка 1000*1000), вы его урезали до 144 каким-то образом (взяв среднее по квадратам 85*85). Т.е. вы сделали 144 признака из миллиона "от балды". Весьма вероятно, 10 признаков, выбранных с учётом задачи, дадут гораздо большую точность. Или уж заморачиваться со всем миллионом (и урезать либо устройством сети + обучением излишне универсальной сети по большему датасету).

Смотрите выше мой комментарий, который начинается фразой "Наверное, мне нужно еще раз пояснить саму идею статьи."

Забавно, я сталкивался с совершенно другой проблемой: данных для каждого из объектов достаточно (анализ изображений – человек видит и распознаёт нормально, в конце концов кто-то ведь отмаркировал датасет), обучаем классификатор... Ну да, обучающую выборку он чётко распознаёт, но на других объектах делает труднопредсказуемые ошибки. А если подкинуть вместо объекта мусор (артефакт сегментации) – уверенно его классифицирует, как мусор не распознаёт (потому как для мусора обучающую выборку не создать, уж очень он разнообразен).

Т.е. у вас проблема недостаточности признаков у объекта, а у меня – по сути недостаточной репрезентативности обучающей выборки... Пришлось решать обходными путями, меняя вид классификатора и добавляя некие априорные знания о том, что не должно влиять на классификацию (ну там, явно приводить изображения к единой цветовой палитре [это были клетки крови, там окраска может варьироваться] и т.п.)

А какой был классификатор?

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

Да, вращение/отражение не влияет, случайной обрезки быть не должно (окрашенные клетки крови на стекле – можно отбросить объекты, близкие к краям поля зрения микроскопа). Но были другие нюансы – степень прокраски (при подготовке препарата – на неё влияет время окраски и температура, и ещё почему-то может варьироваться по стеклу, если препарат готовился не в центрифуге, а "мазком"), уход в красные/синие цвета (это уже по разному в разных лабораториях – не уверен, что именно влияет).

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

Ну и deep learning мы в те годы тогда не могли себе позволить (не уверен даже, насколько оно было бы оправдано сейчас).

Первоначально был многослойный перцептрон по пачке признаков (для клеток вычислялись параметры типа площади и периметра клетки/ядра, составляющие цвета цитоплазмы/ядра, сегментировано ядро или нет и т.п. – короче, примерно то, по чему врачи определяют), но в силу ряда причин я его заменил на довольно забавное решение – при обучении из обучающей выборки выделяем набор "эталонных клеток" и далее при распознавании просто сравниваем с этими эталонами, считая расстояние в пространстве признаков (все детали уже не вспомню, давно дело было).
Основное, ради чего с этим запаривался – поиск "предателей" в обучающей выборке, т.е. клеток, из-за схожести с которыми в дальнейшем другие клетки распознаются неверно. Для перцептрона, как вы понимаете, это довольно сложно, он в изрядной степени чёрный ящик, а не понимать, почему классификатор начинает систематически ошибаться – очень неприятно.

Как человек, имеющий зрение -4, легко решаю предложенные задачи, просто сняв очки. Я уже могу идти в дата-сатанисты?

Кстати, хороший метод. Только что проверил - реально работает. Спасибо, раньше о таком не думал, хотя есть еще один - уменьшить размер картинок.

А я прищуривался в очках (тоже приемлемый результат), забыв об аппартном сглаживании )

Вы уж извините, но с картинками(12х12) это натягивание совы на глобус.

Есть классическое статистическое машинное обучение, где это еще как-то можно считать релевантным.

Есть более современное машинное обучение на основе глубоких нейросеток, в том числе сверточных. Где на входе будет картинка 256х256, а на выходе можно получить низкоразмерный эмбединг(предположим 10-20 размерности), который будет содержать информацию о "семантической близости" входных изображений.

Есть языковые модели, которые выросли из тех же глубоких нейросеток машинного зрения и средств межязыкового перевода. И т.д.

Смотрите выше мой комментарий, который начинается фразой "Наверное, мне нужно еще раз пояснить саму идею статьи."

"На самом деле, главное, что влияет на качество модели, — это количество и качество доступной аналитику информации. А метод ее обработки не настолько важен."

Это не совсем верно, а точнее совсем не верно. Например, на kaggle разные команды на одном и том же датасете показывают совершенно разный скор.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий