Какую статистику должен знать программист (или компьютерный ученый)?

Я программист с приличным опытом в математике и информатике. Я изучал вычислимость, теорию графов, линейную алгебру, абстрактную алгебру, алгоритмы и небольшую вероятность и статистику (через несколько классов CS) на уровне бакалавриата.

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

Я читал о том, как "Google использует байесовскую фильтрацию, как Microsoft использует оператор if" , и я знаю силу даже справедливости наивные простые статистические подходы к проблемам Пауля Грэма План для спама и Лучше Bayesian Filtering, но я бы хотел пойти дальше.

Я попытался изучить больше статистики, но я немного потерял. Статья в Википедии содержит длинный список связанных тем, но я не уверен, на что я должен обратить внимание. Я чувствую, что из того, что я видел, многие статистические данные делают предположение, что все является комбинацией факторов, которые линейно объединяются, плюс некоторый случайный шум в распределении Гаусса; Мне интересно, что я должен выучить за пределами линейной регрессии, или если я должен потратить время, чтобы действительно понять это, прежде чем переходить к другим методам. Я нашел несколько длинных списков книг, на которые можно смотреть; с чего начать?

Так что мне интересно, куда идти отсюда; что узнать, и где его изучить. В частности, я хотел бы знать:

  • Какие проблемы в программировании, разработке программного обеспечения и информатике являются статистическими методами, которые хорошо подходят? Где я буду получать самые большие выплаты?
  • Какими статистическими методами я должен тратить свое время на обучение?
  • Какие ресурсы следует использовать для изучения этого? Книги, газеты, веб-сайты. Я был бы признателен за обсуждение того, что такое каждая книга (или другой ресурс), и почему она имеет значение.

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

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

Ответ 1

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

  • Не изучайте тестирование гипотезы частых посетителей. Пока основная часть моей работы выполняется в этом парадигма, она не соответствует потребностям бизнеса или интеллектуальному анализу данных. Ученые обычно имеют конкретные гипотезы в виду и могут пожелать оценить вероятность того, что, учитывая, что их гипотеза неверна, данные будут такими же экстремальными, как и есть. Это редко тот тип ответа, который хочет сделать ученый-компьютер.

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

Машинное обучение и классификация могут стать хорошим местом для начала работы. В литературе по компьютерному обучению больше внимания уделяется проблемам компьютерных наук, хотя эта миссия почти идентична статистике (см. http://anyall.org/blog/2008/12/statistics-vs-machine-learning-fight/).

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

  • adaboost: Если у вас большое количество дрянных классификаторов и вы хотите создать один хороший классификатор. (см. также logit boost)
  • Поддержка векторных машин: мощный и гибкий классификатор. Может изучать нелинейные шаблоны (в линейном линейном пространстве ядра, если вы хотите быть разборчивыми).
  • k-ближайший сосед: простой, но мощный алгоритм. Он плохо масштабируется, но есть приблизительные варианты ближайших соседей, которые не так патологичны.
  • CART: Этот алгоритм разбивает данные на основе ряда предикторных переменных. Это особенно хорошо, если существуют переменные взаимодействия или существует очень хороший предиктор, который работает только с подмножеством данных.
  • Регрессия с наименьшим углом: если значение, которое вы пытаетесь предсказать, является непрерывным, и у вас много данных и много предикторов.

Это отнюдь не полная, но должна дать вам хорошую возможность спрыгнуть. Очень хорошая и доступная книга на эту тему - Дуда, Харт, Сторк: Классификация шаблонов

Кроме того, большая часть статистики - это описательная визуализация и анализ. Они представляют особый интерес для программиста, поскольку они позволяют ему/ей передавать информацию пользователю. В R, ggplot2 - мой пакет выбора для создания визуализации. На стороне описательного анализа (и полезно в текстовом анализе) многомерное масштабирование, которое может дать пространственную интерпретацию не-пространственных данных (для например, идеологии сенаторов http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.aoas/1223908041).

Ответ 2

Точно так же, как точка зрения, а не как критик, но ваш вопрос должен быть сформулирован по-другому: "какую статистику должен знать любой человек?".

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

Сказал, что, я думаю, следующие моменты важны для понимания

  • среднее, среднее, стандартное отклонение выборки и разница между выборкой и населением (это очень важно).
  • распределения и почему гауссовское распределение так важно (центральная предельная теорема)
  • Что это означает при тестировании Null Hypothesis.
  • Что такое переменное преобразование, корреляция, регрессия, многомерный анализ.
  • Что такое байесовская статистика.
  • Способы построения.

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

  • Оценка нулевой гипотезы имеет решающее значение для проверки эффективности метода. Например, если препарат работает, или если исправление для вашего оборудования имеет конкретный результат или это просто вопрос случайности. Предположим, вы хотите улучшить скорость машины и изменить жесткий диск. Это имеет значение? вы можете сделать выборку производительности со старым и новым жестким диском и проверить различия. Даже если вы обнаружите, что среднее значение с новым диском ниже, это не означает, что жесткий диск имеет эффект вообще. Здесь вводится тестирование гипотез Null, и это даст вам доверительный интервал, а не окончательный ответ, например: существует вероятность 90% того, что изменение жесткого диска оказывает конкретное влияние на производительность вашей машины.

  • Корреляция важна для выяснения того, как две сущности "меняются одинаково". Как учит интернет-мантра "Корреляция не причинность", ее следует принимать осторожно. Тот факт, что две случайные величины показывают корреляцию, не означает, что одна вызывает другую, и что они связаны третьей переменной (которую вы не измеряете). Они могут вести себя одинаково. Ищите пиратов и глобальное потепление, чтобы понять суть дела. Корреляция сообщает о возможном сигнале, он не сообщает об обнаружении.

  • байесовский. Мы все знаем спам-фильтр. но там больше. Предположим, вы заходите на медицинский осмотр, и результат говорит, что у вас рак (я серьезно надеюсь, что нет, но это для иллюстрации точки). Факт: большинство людей в этот момент подумают: "У меня рак". Это неправда. Положительное тестирование на рак повышает вероятность того, что у вас есть рак от базового уровня для населения (например, у 8 на тысячу людей рак, выбранный из тонкого воздуха) до более высокого значения, что не составляет 100%. Насколько высока эта величина зависит от точности теста. Если тест паршивый, вы можете просто быть ложным. Чем точнее метод, тем выше косые, но все же не 100%. Конечно, если несколько независимых тестов подтверждают, что у вас рак, то это очень вероятно, что вы на самом деле его имеете, но все же это не 100%. может быть, 99,999%. Это точка зрения, которую многие люди не понимают в байесовской статистике.

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

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

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

Обычно все, что связано с сопоставлением данных, которое включает числовые (или уменьшенные до числовых) данные из ненадежных источников. Сигнал от инструмента, куча страниц и количество слов, которые они содержат. Когда вы получаете эти данные и должны найти дистиллированный ответ из группы, вам нужна статистика. Подумайте, например, об алгоритме для обнаружения щелчка на iphone. Вы используете дрожащий, толстый стилус, чтобы ссылаться на значок, который намного меньше, чем сам стилус. Очевидно, что аппаратный (емкостный экран) отправит вам кучу данных о пальце, плюс куча данных о случайном шуме (воздух? Не знаю, как это работает). Водитель должен понять смысл этого беспорядка и дать вам координату x, y на экране. Это требует (много) статистики.

Какие статистические методы я должен тратить свое время на обучение?

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

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

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

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

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

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

Существует множество проблем с измерением. Измерение - тонкое и деликатное искусство. Надлежащее измерение почти за пределами человека. Дело в том, что выборка вводит предвзятость либо из пробоотборника, либо из метода, либо из характера выборки, либо из природы природы. Хороший сэмплер знает эти вещи и пытается уменьшить нежелательное уклонение настолько, насколько это возможно, в случайное распределение.

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

Существуют ли другие проблемы с которыми сталкиваются программисты, которые воспользоваться статистическим подходом?

Каждый раз, когда у вас есть ансамбль производителей данных, у вас есть статистика, поэтому научное вычисление и анализ данных, очевидно, одно место. Фолксономия и социальные сети - это почти вся статистика. Даже stackoverflow, в некотором смысле, статистический. Тот факт, что ответ получил высокую оценку, не означает, что он правильный. Это означает, что существует высокая вероятность того, что это правильно, согласно оценке статистического ансамбля независимых оценщиков. Как ведут себя эти оценщики, разница между stackoverflow, reddit и digg.

Ответ 3

Мне нечего добавить, но случилось так, что я только начал читать эту книгу: D. С. Сивия с Дж. Скиллинг, "Анализ данных" - байесовский учебник, 2-е издание, 2006, Press Oxford University Press.

То, что привлекло мое внимание, - это предисловие, где автор ссылается на общее недовольство тех, кто подходит к изучению статистики:

Введение

В качестве бакалавра я всегда находил субъект статистики скорее загадочный. Этот раздел не был полностью новый для меня, поскольку нас учили немного о вероятности раньше в старшей школе; например, я был уже знакомый с биномиальным, Пуассона и нормальных распределений. Наиболее Это имело смысл, но только казалось относятся к вещам, таким как прокатные кости, переворачивание монет, перетасовка карт и т.д. на. Однако, имея устремления став ученым, что я действительно хотел знать, как анализировать экспериментальные данные. Таким образом, я с нетерпением с нетерпением ждали лекций по статистика. К сожалению, они были великими разочарование. Хотя многие из испытания и процедуры были интуитивно разумный, был что-то глубоко неудовлетворительное все дело: похоже, будь то основные базовые принципы!Следовательно, курс "вероятности и статистика привела к неудачной дихотомия: вероятность имела смысл, но это была просто игра; статистика была важно, но это было сбивающее с толку сбор тестов с небольшими очевидная рифма или причина. В то время как не доволен этой ситуацией, я решил отложить тему и сосредоточиться на реальной науке. После все это затруднительное положение было отражения моих собственных недостатков и Идентификатор должен работать, когда время действительно анализировало мои данные.

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

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

...

Надеюсь, эта книга сохранит свой promises.

Есть пара предварительных разделов из первого выпуска здесь, из курса по когнитивной психологии /AI, где эта книга была принята, и другие материалы из того же курса здесь. Сопутствующее программное обеспечение второго автора здесь. Также более расширенный предварительный просмотр из Google Books здесь.

Ответ 4

Мальчик, некоторые из этих ответов хороши. Я исходил из того же фона и должен был попасть в биостатистику в основном из книг и осмоса от коллег. Вот мои рекомендации:
  • Начните с надежного заземления по вероятности, включая условную вероятность, теорему Байеса, марковские модели и некоторые основные статистические распределения.

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

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

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

Добавлено: Вот несколько любимых книг (не полный список):

Ответ 5

Больше вероятности, чем статистика, но Байесовская Вероятность может быть очень полезной (она подкрепляет фильтры спама), и IMO больше программного обеспечения должно использовать ее для вывода пользовательские привычки.

Head First Statistics - отличная книга для изучения статистики (математик/статистик сообщает мне, что у нее не так много ошибок, но несколько упрощений теоретического материала).

Я почти забыл упомянуть: Как лежать со статистикой

Ответ 6

Отличный вопрос! Я действительно думаю, что стоит отступить на минутку и перейти к более широкой картине. Например. то, что мне нравилось в Zed rant, было в начале:

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

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

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

И я тоже считаю, что R помогает тоннеть в мышлении и программировании с данными и о них.

Ответ 7

Один хороший ресурс о программировании - "Искусственный интеллект: современный подход" Рассела и Норвига. Это может быть действительно полезным ресурсом для понимания методов машинного обучения на основе статистики.

Ответ 8

Здесь отличная книга, доступная бесплатно в Интернете: "Элементы статистического обучения" , Хасти, Цибширани и Фрейдмана.

Он охватывает целый ряд полезных тем и должен быть хорошим знакомством с полем машинного обучения. Это объяснение моделей переобучения - лучшее, что я видел в ~ 20-30 статистических книгах, которые я прочитал.

Ответ 9

Какой большой поток. В самом вопросе и в ответах есть много хорошей информации, но я действительно удивлен, что никто еще не упомянул книгу Programming Collective Intelligence.

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

В этой книге объясняется:

  • Совместимые методы фильтрации, которые позволяют онлайн-продавцам рекомендовать продукты или средства массовой информации
  • Методы кластеризации для обнаружения групп похожих элементов в большой dataset
  • Функции поисковой системы - сканеры, индексы, механизмы запросов и Алгоритм PageRank
  • Алгоритмы оптимизации, которые ищут миллионы возможных решений для проблемы и выбрать лучший
  • Байесовская фильтрация, используемая в спам-фильтрах для классификации документов основанные на типах слов и других функциях.

  • Использование деревьев решений не только для прогнозирования, но и для моделирования пути решения принимаются

  • Предсказание числовых значений, а не классификаций для построения цены модели
  • Поддержка векторных машин для сопоставления с людьми в онлайн-сайтах знакомств
  • Неотрицательная матричная факторизация, чтобы найти независимые функции в adataset
  • Развивающийся интеллект для решения проблем - как компьютер развивает свои умение, улучшив свой собственный код, больше он играет в игру

Кроме того, есть отличный разговор о TED о том, почему каждый должен изучать статистику.

Ответ 10

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

Это был мой опыт в последние 30 лет, несмотря на отличные оценки по математике.

Итак, возможно, название этого вопроса должно быть: "Какую статистику должен знать программист, должен ли он знать статистику?"

Ответ 11

Я удивлен, что никто не упомянул о том, что графика очень важна для хорошей статистической практики. Машинное обучение и байесовский анализ великолепны (попробуйте книгу Гельмана, если вы хотите формальное, но доступное и прикладное введение в Bayes), но вы можете поразительно понять проблему с помощью действительно хорошие визуализации. Tufte classic - это хорошее место для начала и классическая семиология и грамматика графики стоит прочитать. Наконец, посмотрите на пакет R ggplot2 для простого способа начать реализацию сложных графических идей.

Ответ 12

Возможно, взгляните на (бесплатную) книгу, "Статистика" : "Вероятность и статистика для программистов" . Хотя он использует Python для демонстрации статистических концепций, каждый, у кого есть опыт работы на других языках программирования, должен следовать.

Описание с сайта:

Think Stats - это введение в Вероятность и статистика для Python программисты.

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

Ответ 13

Это зависит только от области, в которой вы работаете. В качестве примера, если вы работаете над приложениями, которые включают в себя выборку и анализ данных, будут полезны такие области, как Distributions (Normal, t и Chi Square). И если ваше приложение является чем-то вроде программного обеспечения для прогнозирования, вам может понадобиться знание о дистрибутивах, таких как пуассон.

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

Обновление: большинство университетов проводят курсы по статистике. Я видел несколько лекций, которые можно считать короткими, но все же хорошими. Пример

Ответ 14

Вы можете сделать совсем немного со средним и стандартным отклонением.

Все зависит от того, на какие проблемы вы собираетесь работать.

Ответ 15

Я бы сказал, что все в "Всех Статистика" (2004), Ларри Вассерман это правильно. Это также имеет то преимущество, что им предлагается идея разрыва между статистикой и информатикой.

Надеется, что это поможет.

Ответ 16

Мой короткий ответ таков: статистика скрытых переменных, включая моделирование структурных уравнений и моделирование конечных смесей (латентный класс/профиль). Они охватывают внушительное количество статистических моделей.

Ответ 17

Удивительно, что никто не упомянул метод Bootstrap, основной компонентный анализ или алгоритм LASSO. Они охватывают анализ данных, имитацию и анализ исследовательских данных, чтобы назвать несколько.