자바로 개발한 웹, 앱에서 빅데이터나 머신러닝 기술을 구현하는 방법은 무엇인가요?
제가 자바가 주력 언어라서 향후에 자바로 개발한 웹이나 앱에 빅데이터나 머신러닝 사용하고 싶습니다. 근데 찾아보니 빅데이터나 머신러닝에는 파이썬을 많이 사용하는 것 같아서 질문드립니다. 자바로 개발한 웹, 앱에서 빅데이터나 머신러닝 기술을 구현하는 방법은 무엇인가요? 혹시 그 방법이 자바와 파이썬을 연동해서 사용하는 방법인가요?
안녕하세요
저도 AI 나 maching learning 에 관련 개발자는 아니므로 제가 아는 선에서만 답변드리겠습니다.
우선... python 을 사용하는 이유
우선 저도 몇년전에 한참 AI, ML 이런게 유행처럼 막 떠올랐을때 해외 동영상 보면서 개념만 익혀봤습니다.
Andrew Ng 이라는 교수가 설명하는 동영상이었는데 시간되실때 한번 보시면 도움이 되실듯 합니다.
https://ko.coursera.org/courses?query=machine%20learning%20andrew%20ng
우선 이 Ng 교수도 처음에는 Maching learning 에 대해서 강의를 하고 나중에 실제 프로그래밍 예제에서는 python 을 사용했습니다. 그런 예제를 보면서 저의 느낀점은..
"모야 저게 저렇게 쉬워???" 이였습니다.
일단 maching learning 에 대한 기초 이론이나 이런것은 어려웠습니다. 데이터를 가지고 무슨 이론을 해서 어쩌고 저쩌고 해서 공식을 이용해서 해당 데이터의 이럴 확률은 몇 % 입니다. 이건데...
python 에서 제공되는 tensolflow 를 사용해서 그냥 함수하나에다가 데이터 입력하면 바로 몇 % 라고 나옵니다.
그 결과값을 무슨 python 에 visual 해주는 함수에 넣으면 바로 차트랑 이런걸로 볼수 있도록 구현됩니다.
질문자님께서 java 로 웹을 만드신다고 하셨는데 그 이유가 java 가 웹을 만들기에 좋다라기 보다, 스프링이나 스프링부트를 이용하려면 java 를 사용해야 되서 아닌가요? (저도 마찬가지로 react 이나 express 등을 사용하려고 javascript를 주로 사용합니다.)
maching learning 이나 AI 에서도 마찬가지로 python 문법이 쉽고 간결한것도 있지만 machine learning 에서 유용한 도구들을 쉽게 사용할수 있도록 제공하기 때문입니다.
python 에서 제공되는 maching learning 라이브러리들은
1. tensorFlown - machine learning
2. numPy, sciPy, pandas - visualization and data analysis
3. OpenCV - computer vision
4. NLTK, spaCy - natural language processing
등이 제공되기 때문입니다.
(출처 : https://steelkiwi.com/blog/python-for-ai-and-machine-learning/)
python 과 java 를 같이 연동하는 방법은..?
- 당연히 데이터로 연동을 해야 될것 같습니다.
현재 질문자님은 웹이나 앱을 머신 러닝과 연동을 하신다고 하시는데 흠... 이걸 파이프라인 형식으로 구현하면 쉽습니다.
AWS 에서 제공되는 서비스를 이용해서 구현한다고 예를 들어서 설명해볼게요.
AWS EC2 -> 웹 서버 운영 및 DB 에 데이터 저장
AWS Cloudwatch -> 설정된 스케쥴링에 따라 DB 에 저장된 데이터를 AWS S3 에 파일로 dump
AWS SageMaker -> 머신 러닝 계산후 AWS S3 에 데이터 저장
AWS EC2 -> 저장된 데이터를 웹 서버에서 사용
이런식으로 데이터를 파이프 라인을 만들어서 수집, 저장, 가공, 계산 등을... 처리하도록 만들어야 됩니다.
https://aws.amazon.com/ko/solutions/fraud-detection-using-machine-learning/
수고하세요~
실제 빅데이터나 머신러닝을 활용하기 위한 기술이 파이썬 구현체가 많이 있을뿐이니, JAVA 로 불가능 한것은 아닙니다. 물론, 이미 구현되어 있는 기술을 가져다 쓸 수 있으니 해당 언어로 연동하는게 가장 편하겠지만 실제로 해당 기술을 단순히 쓰는것보다 지식을 실제로 익혀야 하기에 해당 지식을 습득해야 하는게 중요합니다.
즉, 빅데이터 , 머신러닝에 대한 이해 ( 순수 이론에 대한 이해 수학적 지식이 좀 많이 필요합니다. )
그리고 그것에 대한 구현 ( 구현하는 언어에 대한 이해 Java, Python, .... )
현재 수학 학자들이 Python 을 많이 써서 구현체가 많이 있을분이지 이를 구현하는데 제한사항이 별도로 있는것은 아닙니다. 빅데이터나 머신러닝의 이론서적을 한번쯤 읽어보는것을 추천합니다~!
자바를 백엔드 주력언어라 생각하시고 빅데이터 구성을 위한 시스템을 구축하여 연동 하시면 됩니다.
빅데이터 구성은 [검색어 : 하둡에코시스템 ] 으로
검색하시면 구축모델등이 많이 있습니다.
그리고 스칼라 언어와같은 자바에서 사용가능한 대용량 데이터를 처리하기위한 펑셔널 랭귀지 등을 공부하시면 도움이 될것같습니다.
머신러닝 에서의 구성은 딥러닝 라이브러리 가 제일 쉬운 접근방법 입니다.
라이브러리 는
https://deeplearning4j.org/ : DL4J
http://nd4j.org/ : ND4J
등이 라이브러리 형태로 제공하니 Java BackEnd 구성에 추가하여 사용 가능합니다.
위에서 말씀드린 듯이 빅데이터 / 머신러닝 구성시에 스칼라와 같은 펑셔널 랭귀지가 사용되기에
자바 - 스칼라 듀토리얼 페이지
https://docs.scala-lang.org/ko/tutorials/scala-for-java-programmers.html
를 공부하시고 나머지 부분 연동하시어 구축하는 방향이 효율적입니다.
감사합니다.