R

데이터 분석, R로 시작할까 파이썬으로 시작할까?

#파이썬 R #R 데이터 분석 #머신러닝



파이썬을 써야 할까요? R을 써야 할까요?

머신러닝을 처음 공부하는 분들은 주로 R과 파이썬을 통해 데이터 분석에 입문을 합니다.
따라서 어떤 언어로 시작하는 것이 좋을지는 패스트캠퍼스의 데이터 사이언스팀이 정말 많이 받는 질문입니다. 그러나 아쉽게도, 명확한 대답을 드리기 어렵습니다. 마주하고 있는 데이터의 종류와 과제의 성격에 따라 다르기 때문이죠.
여러분의 선택을 돕기 위해 각 언어의 특징이 무엇인지, 어떤 점을 고려해야 하는지 분석해 봤습니다!


R의 특징과 장단점 소개

✔ R은 통계분석에 유리합니다.

결론부터 말씀드리면 R은 통계분석에 아주 유리합니다. 통계학자에 의해 개발된 R은 통계 분석에 용이한 여러 기능들을 제공합니다. 기초적인 통계 분석 알고리즘부터 복잡한 통계 분석 알고리즘까지 R에서 간단한 코드로 구현이 가능해요.

그리고 같은 통계분석을 실시했을 때 R은 파이썬에 비해 더 자세하고 명료한 결과물을 보여줍니다. 강력한 데이터 시각화 기능을 제공하는 것도 큰 장점이에요. R을 처음 만든 목적 자체가 '데이터 분석, 통계학 그리고 시각화를 하기 위해 더 좋고 친근한 방법을 만들어 보자!' 였기 때문이죠. 대표적인 시각화 패키지에는 ggplot2, ggvis, googleVis, rCharts등이 있습니다.

✔ 그러나 R은 수행 속도가 느립니다.

통계학자들이 연구 목적으로 만든 언어라, 파이썬에 비해 R의 수행 속도는 현저히 느립니다. 단점을 상쇄해줄 수 있는 pqR, renjin, FastR, Riposte 등의 R의 패키지들이 있긴 하지만, 데이터 분석을 할 때 대량의 데이터를 빠른 속도로 처리하는 것은 굉장히 중요하기에 수행 속도가 느린 것은 R 프로그램의 큰 단점이에요.


파이썬의 특징과 장단점 소개

파이썬은 1980년대 말 네덜란드 CWI의 귀도 반 로섬이 구현하기 시작한 프로그래밍 언어입니다. 귀도 반 로섬이 좋아하는 영국 드라마였던 'monty Python’s Flying Circus’ 에서 유래되었다고 해요.

✔ 파이썬은 AI 알고리즘 적용에 유리합니다.

데이터 분석에 있어 파이썬의 가장 큰 장점은 최신 머신러닝, 딥러닝 알고리즘을 제공한다는 것입니다. 물론 R에서도 머신러닝이나 딥러닝 알고리즘을 제공하나, AI 알고리즘의 경우 연산 과정이 복잡해 수행 시간이 오래 걸리는 경우가 많아서 파이썬이 제공하는 알고리즘의 수준이 더 우수한 편입니다.

이전부터 Scikit-learn 은 다양한 종류의 머신러닝 알고리즘들을 제공하였으며, Pandas 는 편리한 데이터 전처리 기능들을 제공하였습니다. 특히 Scikit-learn 은 통일된 인터페이스로 알고리즘들을 제공하기 때문에 몇 가지 알고리즘을 이용해보면 다른 알고리즘들도 빠르게 이용할 수 있습니다.

또한 최근 AI는 텐서플로, 파이토치 등 특정 환경에서만 구현되는 경우가 많습니다. 대부분의 환경이 파이썬을 기반으로 하는 환경이기 때문에 R 이용자는 최신 AI 알고리즘을 적용하는 데 어려움이 있을 수 있습니다.

✔ 언어의 성장세와 커뮤니티의 규모가 큽니다.

최근의 10년간의 파이썬의 성장은 다른 어떤 언어들보다도 빨랐습니다. 그리고 그 발전에 데이터 분석과 머신러닝 커뮤니티의 성장이 큰 역할을 했습니다.

커뮤니티가 크기 때문에 양질의 최근 연구들의 구현체를 구하기 쉽고, 문제가 발생했을 때 해결책을 검색할 가능성이 높습니다. 사용할 언어를 선택할 때 '함께 일할 사람이 쓰는 언어를 선택하는 것이 좋다'라는 말이 있습니다. 나와 함께 일할, 혹은 일하고 싶은 사람이 데이터분석을 위하여 어떤 언어를 사용하는지 살펴보세요. 아마 파이썬일 것입니다.

✔초보자도 쉽게 배울 수 있습니다.

C 언어 등의 프로그래밍 언어는 문법이 복잡해서 컴퓨터 공학을 공부하는 학생들도 어렵게 느끼는 경우가 많은데, 파이썬은 직관적인 프로그래밍 언어로 코딩을 배워본 적이 없는 사람도 쉽게 배울 수 있다는 강점이 있습니다. 사람이 사용하는 언어에 가깝기 때문이죠.

또한 함수나 조건문을 선언하면 자동으로 코드가 들여쓰기가 된다는 특징이 있습니다. HTML과 달리 괄호로 시작과 끝을 알릴 필요가 없어 코드를 입력했을 때 깔끔하고 알아보기 쉽습니다. 특히나 데이터 분석을 하기 위한 코딩은 전문적인 개발자의 코딩수준까지는 필요로 하지 않기 때문에 단기간에 학습하여 활용하는 데 용이합니다.

✔다양한 라이브러리와 프레임워크를 지원합니다.

파이썬은 간단하게 설치하여 사용할 수 있는 여러 라이브러리, 도구 및 프레임워크를 지원합니다. 대표적으로 Numpy, Pandas, TensorFlow, PyTorch 가 있습니다.

1. 넘파이 Numpy

NumPy는 행렬이나 일반적으로 대규모 다차원 배열을 쉽게 처리 할 수 있도록 지원하는 파이썬의 라이브러리로 데이터 구조 외에도 수치 계산을 위해 효율적으로 구현된 기능을 제공합니다.

특징
* 고성능 n차원 배열 개체
* 상호적
* 일반적인 데이터를 위한 다차원 컨테이너
* 직관적

2. 판다스 Pandas

pandas는 데이터 전처리를 할 때 가장 많이 사용되는 라이브러리 중 하나로 숫자 테이블과 시계열 을 조작하기 위한 데이터 구조 와 연산, 분석에 특화되어 있습니다.

특징
* 디폴트 및 사용자 지정 인덱싱indexing으로 빠르고 효율적인 DataFrame 개체
* 다양한 파일 형식에서 in-memory 데이터 개체로 데이터 로딩하는 툴
* 데이터 정렬data alignment와 결측 데이터missing data의 통합 처리
* 데이터 세트 reshaping and pivoting

3. 텐서플로우 Tensorflow

텐서플로우는 구글에서 데이터 흐름 프로그래밍을 위해 출시한 오픈소스 소프트웨어 라이브러리입니다. 여러 프레임워크 중에서도 텐서플로우는 특히나 머신러닝, 딥러닝과 관련된 많은 논문에서 가장 많이 인용되고 실제로 AI를 위한 다양한 기능을 제공합니다.

특징
* 속도에 최적화, 빠른 선형 대수 연산을 위해 XLA와 같은 기술을 사용
* 반응형 구조
* 탄력적
* 쉽게 교육 가능
* 병렬 신경망 교육
* 대규모 사용자 커뮤니티
* 오픈 소스

4. 파이토치 PyTorch

파이토치는 페이스북에서 개발한 파이썬 라이브러리입니다. 아직까지는 텐서플로우의 사용자가 많지만, 비직관적인 구조와 난이도 때문에 비교적 간결하고 구현이 빨리되며, 텐서플로우보다 사용자가 익히기 훨씬 쉬운 파이토치의 사용자가 늘어나고 있는 추세입니다. GPU사용이 가능하기 때문에 속도가 빠르고 자연어 처리와 같은 애플리케이션에서 이를 적용할 수 있게 해주는 장점도 있습니다. 또한 파이토치 허브는 여러 영역에 걸쳐 통합되므로 텍스트와 오디오, 비전을 모두 다룰 수 있는 원스톱 아키텍처로 적합합니다.

특징
* 하이브리드 프론트 엔드
* 분산 교육
* 파이썬 퍼스트
* 라이브러리와 툴

출처 : 한빛미디어 2021년 머신러닝을 위한 최고의 파이썬 라이브러리 8가지

✔ 그러나 파이썬은 통계 분석에서 약점을 보입니다.

파이썬 환경에서 통계 분석을 진행하는 사람이 상대적으로 적다 보니, AI 알고리즘에 비해 통계 분석 알고리즘은 활발히 제공되지 않는 경향이 있습니다. 그리고 통계 분석을 진행한다 해도, R에 비해 결과물이 상세하게 도출되지 않을 뿐 아니라, 시각화 기능도 떨어집니다.


지금 패캐머들이 읽고있는 BEST 아티클이 궁금하다면

이 글과 연관된 주제의 추천 강의