Автор: Ли Шухуань, инженер по работе с большими данными.
Сегодня волна искусственного интеллекта захлестывает. От AlphaGo, беспилотных технологий, распознавания лиц, голосового диалога до систем рекомендаций для торговых центров, контроля рисков в финансовой индустрии, количественных операций, анализа пользователей, корпоративной кредитной отчетности, роботов-консультантов и т. д., применение искусственного интеллекта широко распространилось во всех сферах жизни, промышленности и специалистов по обработке и анализу данных не хватает. Python и R привлекают все больше внимания как основные языки для машинного обучения. Новички в области изучения данных часто не знают, как выбрать между ними В этой статье сравниваются и анализируются особенности языка и сценарии использования.
один. Концепции и особенности Python и R
PythonЭто объектно-ориентированный интерпретируемый свободный язык высокого уровня с открытым исходным кодом. Он мощный, с активной поддержкой сообщества и большим разнообразием библиотек классов, а такжелаконичный, легко читаемый и расширяемый, в последние годы он стал популярным языком программирования.
Преимущества Python:
1. Существует множество сценариев использования Python, которые можно использовать не только для статистического анализа, такого как R, но также широко использовать в системном программировании, обработке графики, обработке текста, программировании баз данных, сетевом программировании, веб-программировании, поисковых роботах и т. д. Это очень подходит для тех, кто хочет углубиться Программисты, которые вникают в анализ данных или применяют статистические методы.
2. Текущие основные среды обработки больших данных и машинного обучения обеспечивают хорошую поддержку Python, например Hadoop, Spark, Tensorflow; в то же время Python также имеет сильную поддержку сообщества, особенно с ростом искусственного интеллекта в последние годы, все больше и больше больше Все больше и больше разработчиков принимают активное участие в сообществе Python.
3. В качестве связующего языка Python может быть связан с другими языками.Например, ваша часть статистического анализа может быть написана на языке R, а затем упакована в виде расширенной библиотеки классов, которую Python может вызывать.
язык RЭто интерпретируемый язык для исследования данных, статистического анализа и построения графиков, но он больше похож на среду математических вычислений. Он богат модулями и предоставляет очень удобный метод программирования для математических расчетов, особенно для расчета матриц.
Преимущества языка R:
1. В языке R есть много элегантных и интуитивно понятных диаграмм.Распространенные наборы инструментов для визуализации данных:
· Интерактивные диаграммы rCharts, Plotly, интерактивные диграфы временных рядов, интерактивная древовидная диаграмма TreeMap
ggplot2 - система построения графиков на основе синтаксиса графики
· Решетчатая графика на языке решетка-R
rbokeh — интерфейс R к боке
RGL — 3D-визуализация с использованием OpenGL
Shiny — фреймворк для создания интерактивных приложений и визуализаций.
visNetwork — интерактивная визуализация сети
График рассеяния
Временная диаграмма
облако слов
2. Он имеет большое количество практических функций и богатый математический инструментарий, специально разработанный для статистиков. Он поставляется с базовым модулем base-R, модулем оценки максимального правдоподобия mle, модулем анализа временных рядов ts, модулем многомерного статистического анализа mva, модулем анализа выживаемости и т. д. В то же время пользователи могут гибко использовать массив и матрицу. операторы операций, а также ряд последовательных и полных промежуточных инструментов для анализа данных.
3. Язык лаконичен и прост в использовании, нет необходимости явно определять тип переменной. Например, следующие три простые строки кода могут определить линейную регрессию, не правда ли, это круто:
x <- 1:10
y <- x+rnorm(10, 0, 1)
fit <- lm(y ~ x)
В то же время язык R имеет высокую степень поддержки векторизации.Посредством операций векторизации данные не зависят от начала и конца процесса вычислений.Это высокопараллельная реализация вычислений и позволяет избежать использования многих циклов структуры.
Конечно, у него есть и некоторые недостатки по сравнению с Python. Например, проблемы с управлением памятью, при регрессии больших выборок, при неправильном использовании будет недостаточно памяти, но в настоящее время spark также предоставляет поддержку R, и разработчики могут использовать sparkR для вычисления и обработки больших данных.
2. Разница между Python и R в интеллектуальном анализе текстовой информации и анализе временных рядов
И у Python, и у R очень сильная кодовая база, у Python есть PyPi, а у R есть CRAN. Но это два разных направления: Python более широко используется и включает все аспекты, R больше ориентирован на статистику, но работает очень медленно при большом объеме данных. Ниже я сравниваю Python и R для двух вариантов использования в анализе данных:
1. Добыча текстовой информации:
Интеллектуальный анализ текстовой информации имеет широкий спектр применений, таких как анализ полярности настроений на основе обзоров интернет-магазинов, твитов с сайтов социальных сетей или новостей. Здесь мы используем пример для анализа и сравнения.
В Python есть хорошие пакеты, которые помогут нам в нашем анализе.Например, NLTK и SnowNLP специально для китайского языка включают сегментацию китайских слов, маркировку частей речи, анализ настроений, классификацию текста, TextRank, TF-IDF и другие модули.
При анализе полярности настроений с помощью Python нам сначала нужно разложить предложение на слова.Здесь мы можем использовать сегментацию слов jieba в Python, которая также очень проста в использовании:
word=jieba.cut(m,cut_all=False)
Затем выполните извлечение признаков, вы можете использовать стоп-слова в NLTK, чтобы сначала удалить стоп-слова. При необходимости текст можно векторизовать, здесь мы можем использовать Bag of Words, выбрать TF-IDF для векторного преобразования на основе весов или использовать Word2Vec для преобразования на основе подобия. Далее используем pca из пакета sklearn для уменьшения размерности:
pca=PCA(n_components=1)
newData=pca.fit_transform(data)
В дополнение к PCA также могут использоваться другие методы, такие как взаимная информация или информационная энтропия.
После этого мы проводим обучение модели алгоритма классификации и оценку модели, и мы можем использовать собственные методы машинного обучения NLTK, такие как NaiveBayes и Decision Tree.
Анализ полярности настроений с помощью R
Сначала нужно предварительно обработать данные и установить два пакета Rwordseg/rJava (много ям);
После очистки данных от ненужных символов выполните сегментацию слов: метод segmentCN в Rwordseg может сегментировать китайские слова. Конечно, можно использовать и jiebaR;
Затем создайте набор данных word-document-label, чтобы удалить стоп-слова;
Чтобы создать матрицу терминов документа, вы можете выбрать TermDocumentMatrix и использовать метод weightTfIdf для получения матрицы tf-idf;
Наконец, используйте байесовский метод в пакете e1071 для классификации текста или вы можете использовать другие алгоритмы машинного обучения в пакете RTextTools для завершения классификации, включая девять алгоритмов: BAGGING (ipred: bagging): групповая классификация пакетов.
BOOSTING (caTools:LogitBoost): классификация интеграции Logit Boosting.
GLMNET (glmnet:glmnet): обобщенная линейная регрессия на основе максимального правдоподобия
MAXENT(maxent:maxent): модель максимальной энтропии
NNET(nnet:nnet): нейронная сеть
RF(randomForest:randomForest): случайный лес
SLDA(ipred:slda): масштабированный линейный дискриминантный анализ
SVM (e1071: svm): машина опорных векторов
ДЕРЕВО (дерево:дерево): рекурсивное дерево классификации
2, Временной анализ:
Анализ временных рядов — это теория и метод создания математических моделей посредством подгонки кривых и оценки параметров на основе данных временных рядов, полученных путем систематического наблюдения. Преимущество R состоит в наличии множества пакетов для работы с регулярными и нерегулярными временными рядами.
PythonМодель ARIMA(p,d,q) часто используется для анализа временных рядов, где d относится к разностному члену, а p и q представляют член авторегрессии и член скользящего среднего соответственно. Наиболее часто используемым модулем для построения моделей ARIMA является модуль statsmodels, который можно использовать для разности временных рядов, моделирования и тестирования моделей. Вот пример периодического прогноза:
Ниже приводится набор данных, представляющих данные о пассажирах за каждый из пятидесяти лет, опубликованных автобусной компанией в США (например, 1950–2000 гг.):
data = [9930, 9318, 9595, 9972, 6706, 5756, 8092, 9551, 8722, 9913, 10151, 7186, 5422, 5337, 10649, 10652, 9310, 11043, 6937, 5476, 8662, 8570, 8981, 8331, 8449, 5773, 5304, 8355, 9477, 9148, 9395, 10261, 7713, 6299, 9424,9795, 10069, 10602, 10427, 8095, 6707, 9767, 11136, 11812, 11006, 11528, 9329, 6818, 10719, 10683]
1) Во-первых, используйте pandas для обработки и хранения данных:
data=pd.Series(data)
2). Затем вам нужно проверить стационарность данных, как правило, используя тест единичного корня, обычно используемые методы: ADF, DFGLS, PP и т. д.:
Использование ADF (данные) и DFGLS (данные) непосредственно в Python может получить результат pvalue
3) Стационарность последовательности является предварительным условием для анализа временного ряда. Если предыдущий шаг показывает, что результат не является стационарным, необходимо выполнить обработку стационарности временного ряда. Как правило, наиболее часто используется разностный метод:
diff1 = data.diff(2)
Там, где diff (объект) представляет собой порядок разности, здесь мы используем 2-й порядок, конечно, вы также можете использовать 1-й порядок, 3-й порядок, 4-й порядок и т. д.
4) Выполните проверку белого шума:
value=acorr_ljungbox(data,lags=1)
5) Теперь d=2 в нашем ARIMA(p,d,q), затем мы делаем выбор модели. Первым шагом является вычисление p и q, сначала проверив график автокорреляции и график частичной автокорреляции стационарного временного ряда с помощью sm.graphics.tsa.plot_acf(data) и sm.graphics.tsa.plot_pacf(data), а затем by Модель выбирается по коэффициенту ситуации, варианты AR, MA, ARMA, ARIMA.
6) Обучение модели: model=sm.tsa.ARMA(data,(p,d,q)).fit(), где модель ARMA используется для вычисления p и q для обучения модели.
Построение моделей временных рядов с помощью R
R имеет различные наборы инструментов для временных рядов, такие как:
library(xts), library(timeSeires), library(zoo) — пакеты базы времени
библиотека (urca) -- модульный корневой тест
библиотека (tseries) -- модель Arma
библиотека (fUnitRoots) -- модульный корневой тест
библиотека (FinTS) -- вызвать в ней функцию авторегрессионного тестирования
библиотека (fGarch) -- модель GARCH
library(nlme) -- вызвать в ней функцию gls
библиотека (fArma) -- подходит и тестируется
библиотека (прогноз) - моделирование аримы
Позвольте мне представить два мощных инструмента в наборе инструментов прогнозирования на языке R: ets и auto.arima. Пользователю не нужно ничего делать, эти две функции автоматически выберут наиболее подходящий алгоритм для анализа данных. Например, используйте ets для обработки:
fit<-ets(train)
accuracy(predict(fit,12),test)
Или обрабатывать с помощью auto.arima:
fit<-auto.arima(train)
accuracy(forecast(fit,h=12),test)
Кроме того, в пакете прогнозов есть алгоритм временных рядов Холта-Винтерса для возрастающих или убывающих трендов и сезонных колебаний. Идея Хольта-Винтерса состоит в том, чтобы разложить данные на три составляющие: средний уровень (level), тренд (trend) и периодичность (seasonality). Простая функция stl в R может разложить исходные данные.
В этой статье в основном анализируются два языка программирования Python и R с точки зрения их соответствующих преимуществ и конкретных примеров. Нетрудно заметить, что они неотличимы друг от друга с точки зрения «всесторонней силы», и какой из них выбрать для углубленного изучения, все же необходимо учитывать проблемы, которые вы на самом деле ожидаете решить, области применения и т. д. . Наконец, приветствую всех, кто может общаться со мной по вопросам, связанным с языками программирования больших данных~