CLIEN

본문 바로가기 메뉴 바로가기 보기설정 테마설정
톺아보기 공감글
커뮤니티 커뮤니티전체 C 모두의광장 F 모두의공원 I 사진게시판 Q 아무거나질문 D 정보와자료 N 새로운소식 T 유용한사이트 P 자료실 E 강좌/사용기 L 팁과강좌 U 사용기 · 체험단사용기 W 사고팔고 J 알뜰구매 S 회원중고장터 B 직접홍보 · 보험상담실 H 클리앙홈
소모임 소모임전체 ·굴러간당 ·아이포니앙 ·주식한당 ·MaClien ·일본산당 ·방탄소년당 ·자전거당 ·개발한당 ·야구당 ·가상화폐당 ·안드로메당 ·소시당 ·이륜차당 ·AI당 ·덕질한당 ·클다방 ·걸그룹당 ·퐁당퐁당 ·IoT당 ·골프당 ·DANGER당 ·디아블로당 ·리눅서당 ·육아당 ·키보드당 ·레고당 ·PC튜닝한당 ·시계찬당 ·달린당 ·AI그림당 ·3D메이킹 ·X세대당 ·ADHD당 ·날아간당 ·사과시계당 ·배드민턴당 ·농구당 ·블랙베리당 ·곰돌이당 ·비어있당 ·FM당구당 ·블록체인당 ·보드게임당 ·활자중독당 ·볼링친당 ·캠핑간당 ·냐옹이당 ·문명하셨당 ·클래시앙 ·콘솔한당 ·요리한당 ·쿠키런당 ·대구당 ·뚝딱뚝당 ·개판이당 ·동숲한당 ·날아올랑 ·전기자전거당 ·e북본당 ·갖고다닌당 ·이브한당 ·패셔니앙 ·물고기당 ·도시어부당 ·FM한당 ·맛있겠당 ·포뮬러당 ·젬워한당 ·안경쓴당 ·차턴당 ·총쏜당 ·땀흘린당 ·하스스톤한당 ·히어로즈한당 ·인스타한당 ·KARA당 ·꼬들한당 ·어학당 ·가죽당 ·LOLien ·Mabinogien ·임시소모임 ·미드당 ·밀리터리당 ·땅판당 ·헌팅한당 ·오른당 ·영화본당 ·MTG한당 ·소리당 ·나스당 ·노키앙 ·적는당 ·방송한당 ·바다건너당 ·찰칵찍당 ·그림그린당 ·소풍간당 ·심는당 ·패스오브엑자일당 ·라즈베리파이당 ·품앱이당 ·리듬탄당 ·노젓는당 ·Sea마당 ·SimSim하당 ·심야식당 ·윈태블릿당 ·미끄러진당 ·축구당 ·나혼자산당 ·스타한당 ·스팀한당 ·파도탄당 ·테니스친당 ·테스트당 ·빨콩이당 ·공대시계당 ·여행을떠난당 ·터치패드당 ·트윗당 ·창업한당 ·VR당 ·WebOs당 ·소셜게임한당 ·위스키당 ·와인마신당 ·WOW당 ·윈폰이당
임시소모임
고객지원
  • 게시물 삭제 요청
  • 불법촬영물등 신고
  • 쪽지 신고
  • 닉네임 신고
  • 제보 및 기타 제안
© CLIEN.NET
공지[점검] 잠시후 서비스 점검을 위해 약 30분간 접속이 차단됩니다. (금일 18:15 ~ 18:45)

팁과강좌

기타 5분만에 이해하는 머신러닝 : 클러스터링 (비지도학습) 20

2
2020-05-02 01:02:16 218.♡.222.111
eddie

머신러닝은 지속적으로 발전하고 있습니다. 정확도는 올라가고 있고, 우리 삶에서 많은 부분(구글포토 등)에 영향을 주고 있습니다.


그러나 클러스터링의 경우, 현실세계에서 클러스터링을 수행하고 평가하는 것은 생각보다 어려운 일입니다. 왜냐하면 클러스터링을 할 자료에는 답안지가 없기 때문이죠.


그리고 자료의 차원이 낮다면 자동차 세그먼트처럼 구분할 수 있겠지만, 현실세계에서는 자료의 차원은 높고, 나의 인지범위는 2차원을 못 넘을 뿐이죠. 🤢



여기서 보스턴 주택가격 자료를 가지고 아주 간단한 클러스터링을 진행해보겠습니다.


이 자료는 클러스터링이 아닌 회귀예측을 위한 자료이며, 506개의 레코드와 13개의 변수로 구성되어 있습니다.


이게 뭐지???

1) 데이터 스케일링

  • 각 변수마다 자료의 척도가 다르기 때문에, 원자료는 그대로 사용시 클러스터링시 문제가 발생할 수 있습니다.
  • 원칙적으로 자료는 탐색한 후, 자료에 맞는 스케일링을 실시해야 하지만 !귀찮아서! 스탠더드 스케일링을 진행하겠습니다. (평균 0 / 표준편차 1)

외계어 아닙니다



2) 클러스터 수에 따른 평가

  • 클러스터링은 비지도학습으로 평가측정이 어렵습니다.
  • 일반적으로 Silhouette(높은수록 좋음 / 0.5 이상 ok), Davies-Bouldin(낮을수록 좋음 / 최소값 0) 점수를 활용하지만,
    클러스터가 모여있다는 가정하에서 클러스터의 모양을 판단하기 때문에, 실제 클러스터링 목적과 부합하지 않을 수 있습니다.
  • 여기에서는 계층군집화(개별사례 간 유사도를 측정하여 클러스터링)을 2~10개의 클러스터로 설정하여 지표를 확인하였습니다.

클러스별 평가점수 / 현실세계자료라서 애매함

지표를 표로도 봅시다


3) 차원축소 Manifold(T-SNE)로 2차원으로 클러스터링을 비교

  • 원칙적으로 클러스터링별 자료를 해석하는 것이 원칙이나 (귀찮아서)여기서는 생략합니다.
  • 반드시 명심할 것은 차원축소로 클러스터링을 비교하는 것은 위험성이 높습니다.
    (차원축소의 경우, 다차원의 자료에 기반하기 때문에 축소시 자료해석에 손실이 발생할 가능성이 높음)
  • 현실세계의 자료는 클러스터별 원자료를 해석하는 경우 클러스터링이 잘된 것으로 판단될 수 있으나, 차원축소된 그래프로는 명확히 나눠지지 않는 난감한 경우도 많이 발생합니다. (그렇다고 가짜 그래프는 삼가합니다)
  • 앞선 지표에 의해서 클러스터 개수를 정하더라도, 실제 클러스터링을 판단/결정하는 것은 분석가의 주관적 판단이 필요한 것을 명심해야 합니다.

클러스터 별 결과인데... 몇개로 클러스터를 설정하는 것은 여러분의 선택입니다.


현실문제에서 클러스터링은 훨씬 많은 시간 및 계산비용이 소모됩니다.


사실 계층적 군집분류의 경우 레코드가 100만 건이 넘어가면, 간편한 Sci-Kit Learn을 사용하면 일반적인 개인컴퓨터에서는 메모리 문제로 실행되지 않습니다. Spark 같은 대량 병렬처리 방법으로 접근해야 하기 때문에... (살려줘)



자세한 내용은 출처의 링크를 확인하셔도 좋습니다. 출처에 있는 자료를 내려받은 후 실행해보시면 더 이해가 빠르실겁니다.



출처 : https://github.com/eddie0122/Clustering-Practice/blob/master/clustering_practice.ipynb
eddie 님의 게시글 댓글
  • 주소복사
  • Facebook
  • X(Twitter)
댓글 • [20]
O___________O
IP 211.♡.137.182
05-02 2020-05-02 01:16:00
·
1차원 수치 데이터에 효과적인 클러스터링이 있을까요???
예를들면 1 2 3 56 58 62 1003 1020이 있으면
위 방법을 적용하면
1 2 3
56 58 62
1003 1020
으로 분류가 될수 있을까요?
eddie
IP 218.♡.222.111
05-02 2020-05-02 01:21:41
·
@O___________O님
1차원 수치 데이터의 경우, K-Means를 사용하면 큰 덩어리 간의 중간점이 클러스터의 경계선이 됩니다.
예를 들어 (3 / 56) (62 / 1003) 의 평균이 3개로 나뉘는 클러스터링이 될 것입니다.
스톰트루퍼-
IP 121.♡.149.205
05-02 2020-05-02 02:52:24
·
러닝머신에 대해 뭘 배운다는거지
하고 들어왔다가
절레절레 하고 갑니다
삭제 되었습니다.
jeminic
IP 182.♡.225.89
05-02 2020-05-02 08:23:05
·
머신러닝으로 포장한 통계학이네요 ㅎㅎ
학부때 배웠던 군집분석 내용인것 같습니다 ㅎ
찬스군
IP 222.♡.61.186
05-02 2020-05-02 10:12:29
·
5분만에 포기하게 만드시는 군요~!!!
maize92
IP 1.♡.187.17
05-02 2020-05-02 12:56:31
·
이것이 일반적인 다변량 분석에서의 k mean 모델이나 군집분석과는 어떤 근본적 차이가 있나요?
eddie
IP 218.♡.222.111
05-02 2020-05-02 13:06:49
·
@maize92님
자료의 형태 및 의미에 따라서 클러스터링의 기법을 다르게 적용하는 것이 일반적입니다.

K-Means의 경우, 각 케이스의 Feature를 일종의 초평면에 펼쳐놓은 상태에서 중심점을 랜덤하게 설정 후, 분산이 최소화되는 클러스터 수를 찾고나서, 원형의 형태로 클러스터링을 수행하게 되죠.

Hierarchical 클러스터링의 경우(케이스간 거리를 각 계산해야 되기 때문에, 계산비용이 비싼 클러스터링입니다.)
1) Euclidean 거리를 사용하면 개별 케이스간 직선거리를 계산하면서, 비슷한 케이스를 묶어 나가게 됩니다.
2) 만약 Cosine 거리를 사용한다면, 개별 케이스의 벡터의 방향(즉 케이스간 벡터각도 / 고소 각도기 아닙니다...)이 0도에 가까우면 비슷한 케이스로 묶어 나가게됩니다. (추천시스템에서 많이 이용하죠)

위의 코드는 Hierarchical 클러스터링에서 Euclidean 거리를 이용한 것 입니다. 실제 데이터를 탐색한 후, 알맞는 클러스터링 기법을 찾는 것이 !영업비밀입니다!
maize92
IP 210.♡.185.94
05-03 2020-05-03 16:05:27
·
@eddie님 자세한 설명 감사합니다. k-mean과 계층군집의 차이를 물어본 것 보다는 지금까지 일반적으로 수행하던 방식과 머신러닝으로 군집분석을 하는 차이가 어떻게 되는지가 사실 알고 싶었어요... 설명이 길어질 듯 하여 요까지만 할께요.. 감사합니다.
eddie
IP 218.♡.222.111
05-03 2020-05-03 16:53:05
·
@maize92님
사실 기존 클러스터링 방법도 모두 머신러닝의 한 가지입니다.
열정과냉정
IP 118.♡.48.75
05-02 2020-05-02 13:33:56
·
오늘 밤에 한 번 정독을 목표로... ^^
Avaritia
IP 117.♡.28.132
05-02 2020-05-02 14:24:36
·
클러스터링의 정의와 설명, 응용예시가 서두에 들어갔으면 더 좋은 글이 될거 같아요
우히헹
IP 14.♡.37.223
05-03 2020-05-03 16:16:12
·
차원축소 tsne의 2열을 이용한 2차원 축의 각 축의 의미하는 바를 쉽게 뭐라고 설명하면 좋을까요??
주성분분석 아쩌구 어쩌구... 피트장에게 쉽게 설명하기가 너무나 어렵습니다 ㅠㅠ
eddie
IP 218.♡.222.111
05-03 2020-05-03 16:33:41
·
@우히헹님
사실 그 부분은 포기하시는 것이 빠릅니다. 심지어 제가 다니는 데이터 분석회사에서도 비슷한 일이 일어나고 있습니다.😥
클러스터링 과정 및 결과 해석문제로, 실제 비지니스에서는 클러스터링 대신 세그먼트를 여전히 사용하는 이유이기도 합니다.
우히헹
IP 14.♡.37.223
05-04 2020-05-04 06:50:32
·
eddie님// 답은 못되었지만... 같은 케이스 여서 다행입니다🤩 ㅎㅎㅎ
우히헹
IP 14.♡.37.223
05-03 2020-05-03 16:21:51
·
data별로 어떤 data는 range 어떤건 z score 어떤건 log 어떤건 power? 등등
데이터 별로 각각 다른 변환을 하고 힌번에
클러스터링을 하는게
일반적인 방법인가요??

맞다면, data구조를 먼저 파악하고 변환하는 비용이 너무 들어가는데,,, 일률적으로 적용 할수 있는 방법이 있을까요? 저는 tukey 변환 사용하고 있습니디민, 더 좋은게 있을지요?
eddie
IP 218.♡.222.111
05-03 2020-05-03 16:46:32
·
@우히헹님
클러스터링을 진행할때 문제되는 것이 크게 2개가 있습니다. 1) 답안지가 없음 2) 그럼 어떤 Feature를 써야됨?

1번은 어차피 답안이 없다는 것은 당연한 일이기 때문에 2번이 문제가 되는데요. 고객을 클러스터링한다고 생각해본다면, 고객의 구매성향(몇번 샀는가?/ 고른 빈도로 사고 있는가?/ 매출액은? / 등...) + 고객정보(성별/사는곳/ 등)이 있을 겁니다. 실무자와 면담을 통해서 필요하다고 판단되는 정보(Feature)를 추려냅니다.

그래서 각 Feature별 스케일링을 할때 일률적으로 변환하기 어려운 점이 많습니다. 어떤 정보들은 척도간 연관이 있어서 상대적인 거리를 유지하면서 스케일링이 되어야 하고, 어떤 정보들은 척도간 연관성이 없기 때문에 상대적인 거리유지가 필요없기도 하죠.

그나마 한번에 한다면, scipy.stats.boxcox에서 log-likelihood를 극대화하는 방향으로 lambda를 자동으로 찾아주게 할 수는 있을 것으로 생각됩니다.
우히헹
IP 14.♡.37.223
05-04 2020-05-04 06:52:48
·
eddie님// lambda 를 활용 하는것이 tukey변환인데 맞게 설루션을 적용하고 있는것 같아 다행스럽군요. 답주셔서 감사합니다. 종종 쪽지로 여쭤보아도 될까요?? 타전공 입사해서 머신러닝 공부한 1인입니다.. ^^
eddie
IP 175.♡.26.68
05-04 2020-05-04 14:18:36
·
@우히헹님
저도 아직 배움이 워낙 부족해서 모든 문제에 답을 해드리기 어려울 수 있지만, 질문 주시면 최대한 답변을 드리도록 하겠습니다.
n54L
IP 218.♡.41.13
05-04 2020-05-04 04:52:36
·
추이분석에 관심이 있는데요. 시스뗌 데이터를 지속적으로 수집하면서 패턴으로 정의하고, 이를 이상감지등 미래예측에 쓰고싶습니다. 어떤것을 찾아봐야할까요
eddie
IP 175.♡.26.68
05-04 2020-05-04 14:33:27
·
@N54L님
현재자료가 시계열 자료라고 가정하고, 최종목적이 이상감지라고 한다고 생각해보죠.

아주 간단하게 접근한다면
1) 시계열자료를 시간차(t - 1 / t-0)로 차분한 자료를 생성
2) 이상감지기간(t + alpha)에 이상감지 Label(0/1) 생성
3) Window사이즈(학습시 사용할 과거자료 기간) 설정
4) Data(t - window ~ t-0) / Label(t+alpha) 데이터셋을 만들고
5) CNN + LSTM을 결합한 모형으로 학습 (CNN으로 일종의 데이터 노이즈를 감소시키고, LSTM으로 시간순서를 감안하여 이상감지)
6) 이제 코드작성을...

이정도로 진행하면 괜찮을지 모르겠네요.
새로운 댓글이 없습니다.
이미지 최대 업로드 용량 15 MB / 업로드 가능 확장자 jpg,gif,png,jpeg,webp
지나치게 큰 이미지의 크기는 조정될 수 있습니다.
목록으로
글쓰기
글쓰기
목록으로 댓글보기 이전글 다음글
아이디  ·  비밀번호 찾기 회원가입
이용규칙 운영알림판 운영소통 재검토요청 도움말 버그신고
개인정보처리방침 이용약관 책임의 한계와 법적고지 청소년 보호정책
©   •  CLIEN.NET
보안 강화를 위한 이메일 인증
안전한 서비스 이용을 위해 이메일 인증을 완료해 주세요. 현재 회원님은 이메일 인증이 완료되지 않은 상태입니다.
최근 급증하는 해킹 및 도용 시도로부터 계정을 보호하기 위해 인증 절차가 강화되었습니다.

  • 이메일 미인증 시 글쓰기, 댓글 작성 등 게시판 활동이 제한됩니다.
  • 이후 새로운 기기에서 로그인할 때마다 반드시 이메일 인증을 거쳐야 합니다.
  • 2단계 인증 사용 회원도 최초 1회는 반드시 인증하여야 합니다.
  • 개인정보에서도 이메일 인증을 할 수 있습니다.
지금 이메일 인증하기
등록된 이메일 주소를 확인하고 인증번호를 입력하여
인증을 완료해 주세요.