상세 컨텐츠

본문 제목

머신러닝을 어떻게 시작할것인가?

머신러닝 이야기

by 리치윈드 - windFlex 2020. 3. 15. 19:31

본문

반응형

머신러닝에 대한 질문으로 아래와 같은 문의 사항을 많이 듣습니다.

제가 머신러닝을 사용해 보려고 하는데, 어디에 사용해야 하나요?

제 분야에 머신러닝을 사용해 보려고 하는데, 어디에서부터 손 데야 할지 모르겠습니다...

사실, 위 같은 질문을 받으면,, 저도,,,

멍..........................

 

위 질문의 직설적이 답변을 드리면,

머신러닝에 대한 최소한의 이해를 키우시라...

라고 답변을 먼저 드려야 할것 같습니다.

 

[Machine Learning Process]

우선, 머신러닝 관련 프로세스는 아래와 같습니다.
굳이 교과서적으로 표현한다면 아래와 같습니다.

 

① 목표 설정 (머신러닝으로 하고 싶은일이 무엇인가?)


  • - 목표, 예상 알고리즘, 그에 따른 데이터 셋 설계
    - ex) . 목표 : 적합한 요금제 추천
    . 필요 데이터 : 총통화량, 연령대, 통화시간대, 주요통화지역 등...
    . 클러스터링 알고리즘, or 일부 Classification 알고리즘

② 데이터 확보 → 빅데이터 시스템 구성


③ 데이터 정제 (ETL, Feature 선택, 정형화/Columnize, Normalize)


④ 알고리즘 개발/적용/설정 (알고리즘의 이해를 바탕으로한, 적정 알고리즘 선택)


⑤ 알고리즘 평가 및 조정 (알고리즘은 적정한가?)


⑥ 알고리즘 결과값 활용/Application (결과해석, 시각화, 패턴연계 등..)


질문자의 현 상황에 따라서 대답이 달라져야 하기 때문에, 차근 차근 이해력을 높여 나가셔야 합니다.

그래도, 좀 막연하다...  최소한의 필요한 것만 빨리...

라고 말씀하신다면,

 

"어떤 데이터를 확보할 수 있는지", "그 데이터로 무슨 일을 하고 싶은것인지",

 

"시간만 주어 진다면 컴퓨터 없이 본인이 그 데이터를 가지고 할 수 있을 것 같은지..?" 등을 점검해 보시기 바랍니다.


머신러닝은요...
인간 지능을 능가한다라고 바라보기 보다는,

" 인간이 매우 오랜시간 동안, 좋은 기억력으로 처리하면 할 수 있는 것을, 빠르게 할 수 있다... "

관점으로 접근하시면 쉽게 응용할 수 있습니다.

 

AlphaGo를 예로 들면,
오랜동안 쌓아 놓은 다른 사람의 바둑 경기 중 "승리하는 수"를 잘 기억했다가,
그와 유사한 환경 조건에 사용하는 방식과,

"A수를 두었을 때, (과거 기보를 기반으로) 다음 상황 추정"입니다.

더보기


(※ Policy Gradient 방식의 강화학습 사용한것 제외... 사실 이것도 결과적으로 비슷합니다.)
즉, AlphaGo의 경우도, 다수의 기보를 기억하여 빠르게 Search해 보는 것이지,
인간이 하지 못하는 불가해한 예측을 하는 것이 아닙니다.

 

[어떤 머신러닝 알고리즘을 선택해야 하는가?]

동일한 답변일지 모르겠습니다만, 아래와 같은 답변에 따라 다릅니다.

"무엇을 하고 싶으신가요? 어떤 데이터를 어떤 결과를 얻기를 원하시는지요?"

 

도움을 요청하시는 분께서,
"어떤 머신러닝 기술을 사용하면 될까요" 질문하시어,
"데이터를 한 번 봐봐야 겠는데요.."라고 답변한적이 있었습니다.

 

왜냐면, 그 분은 해당 데이터가 텍스트인지, 수치형 데이터 인지도 모르고 있었습니다.

(나중에 확인한 결과 대부분 "텍스트 문장"형태로 데이터를 쌓고 계셨습니다.)

 

이 때문에 데이터 샘플을 가져오시면 답변해 드리겠습니다..라고 말씀 드리나,
"전문가가 아닌가 보다...."라는 표정들로 돌아가시곤 하셨습니다.

다시 한번 청하건데...

여러분은 어떠한 데이터를 가지고 계시나요?

 

[ 데이터 분포 가정 ]

 

알고리즘들은, 대부분 학습데이터가 특정 분포에 따른 다는 가정(Assumption)을 하고 있습니다.

대부분, 정규분포(Normal)입니다.

 

더보기

(※ 이유 : 중심극한정리 - 여러 다른 불규치 분포를 가질지라도,다수가 섞이면 Normal분포에 따른다..)

 

그러나, 우리가 활용하고자 하는 데이터는 노말 분포에 따르지 않는 경우가 많습니다.
=> 불규칙 분포 (※ 규정하기 어려운, Chi2 또는 포아송 분포 등)

또한, 데이터가 모두 채워져 있는 것이 아니라, 어떤 특정한 칸(필드)에만 숫자가 채워져 있는 희소행렬 (Sparse Matrix)를 가지는 경우가 상대적으로 많습니다.

더보기


(※ 빅데이터를 통하여 현실 데이터를 확보하고, 수치 행렬을 만들 경우 대다수 발생)


=> 기본 가정을 위배하게 되어 알고리즘이 먹통이 되는 경우가 있습니다.
==> 이러한 기본 배경의 이해가 필요하나, 자연스럽게 이해가 될 것입니다.

 

예를 들면, Binary Data ( 0과 1값만 갖는)에 k-means Clustering를 적용하면,
큰 의미 없이, 2개의 클러스터 0과 1로 분류되어 버립니다.

 

마찬가지로 동일 데이터에 PCA (Principal Component Analysis)를 적용하면,
엉뚱한 결과가 도출될 수 있습니다.


PCA는 기본적으로 알고리즘 자체가 연속된 분포와 Normal 분포를 가정하기 때문입니다.

분포에 무관한 알고리즘들도 있습니다.
Decision Tree (의사결정나무), 또는 SOM (Self-Organized Map)등은 분포와 무관하게 동작하는 계열의 알고리즘 입니다.


[  무엇으로 시작해 볼까? ]

ㅇ R이나, 파이썬을 설치해서, 간단한 Clustering, Classification 예제를 실행해 보세요.
감을 잡으실 수 있을 것입니다.


ㅇ 만약, R, python 등 컴퓨터언어에 대한 경험이 전현 없이, 감만 빨리 잡아보고 싶다면,
MS Azure ML 플랫폼, Google Analytics 등을 사용해 보시길 권장 드립니다.


ㅇ이미 데이터 확보가 되어 있다면, SAS, SPSS 등 기존 통계패키지를 사용할 수 있습니다.
. 실환경/자신의 업무 유관 데이터 샘플로 간단한 알고리즘을 실행해 보세요

(데이터 정제가 더 어려울 수 있습니다..)

반응형

관련글 더보기

댓글 영역