의미분석_part3
Shared on October 10, 2026
이걸 전부 다 주제백터로 나타내기 위한 기술이고요. 주제백터라는 것은 뭔가 잘 차원을 압축해서 우리가 원하는 주제에 대해서 값을 갖게끔 차원을 변환시키겠다는 거죠. 공간을. 그래서 원래 어이집 구축을 하고 각도 큰 단위로 그 축이 매겨져 있던 공간을 사용기술적 기법을 이용해서 변환을 시킨 겁니다. 중요한 건 순서대로. 그게 기본적인 일비분석, 잠재일분석, LSA의 방식이고 근데 이제 기본은 SVD 특이값 부분에 기관적으로 하는 것인데
한 점은 더 그럴 건데 좀 랜덤성의 일시화 있고 데이터 전처리에 더 부가적인 중심화, 중교화 이런 걸 하는 게 좋은데 SVD 자체는 그거 없이도 수행을 할 수 있죠 그래서 PCA를 쓰는 게 한편하다, 한편하다 제험도 잘 되고 그래서 먼저 소개를 드렸습니다 오늘은 svd를 쓰면은 뭐가 다른지 간단히 살펴볼 거고요 그리고 잠재 디렉클레 핸드기라고 부르는 다른 의미분석 기술이 있습니다 이 의미분석 큰 틀에 속하는 기술들은 많이 있죠
많이 있는데 뭐 저도 그랬고 저도 처음에 이제 다양한 처리를 배우고 그 활용하고 하려고 할 때 LSA랑 사실은 LDA라고 많이 부르거든요. 장제 딥클리아일 땅. 이 두 개가 굉장히 메인으로 살아남아서 계속 활용이 되고 있던 저는 그때가 2018년도, 2019년도 그쯤이었는데 열심히 공부하고 쓸 때가 그때까지도 좀 파워가 있었는데 딥러닝 기반으로 많이 좀 넘어가게 된 기술이라고 보시면 될 것 같습니다.
그래서 잠재 디리클레아 할당이 뭔지 오늘 배우고 일비분석 다음은 마무리를 할겁니다. 자 이거는 우리 PCA 기반 LSA 했던 거의 연장선상에 있는 내용입니다. 그래서 처음에 나와있는 말이 뭐냐면은 SVD로 일비분석을 하는거다. 기본이다 라고 제가 먼저 소개를 드렸는데 그 다음에 구현은 갑자기 PC로 봤어요 그러면서 조금'이게 좋다'라고 약간 드립식으로 이야기를 드린 감이 있는데
좋긴 좋아요 근데 그러면 SVD를 썼을 때 어떤 차이점이 있냐, 이슈가 있냐인데 크게 두 가지입니다 일단은 뭐 랜덤성이 생깁니다 SVD를 이용을 했을 때 배워서 알지만 특이값은 특이값 순서대로 이렇게는 결정적으로 나오는데 앞쪽 뒤쪽 행렬이 여러가지가 나올 수 있잖아요 게다가 이 트렁키티트 SVD 이걸 효율적으로 연산한 알고리즘 이런 것만 해도 되게 또 한 분야거든요 알고리즘에서의 한 분야 이게 워낙 쓰임이 많은데 이걸 얼마나 효율적으로 계산하는지까지 이슈라서
알고 있는 쪽에서 그래서 근사를 많이 합니다. 계산할 때. 우리 결국 SVD 기반으로 LSA를 한다는 건 특정 원하는 주제일 수 있죠. P건 K건 잡아가지고 그것만큼만 SVD를 좀 해서 자르려는 것이고 그게 바로 원래 SVD에서 전 KT의 SV 자랐단 말이죠. 자르는 그런 SVD인데 1번은 랜덤성이 있는 것 자체가 마음에 안들고 2번은 뭐 기회도 이야기가 나올텐데 그냥 머신러닝만 해봐도 각 비처들 중심도 안맞고 스케일도 안맞으면
상당히 고전한 알고리심들이 많이 있거든요 대표적으로 svm, 소프트웨터 이런거 이제 딱 중심으로 맞추고 분산도 전개화 해주면 매도 잘 작동합니다 물론 데이터 상태나 이런거에 따라 다르긴 합니다만 그래서 이것도 행렬을 개념의 보상하기 전에 중심화 종교 이런거 해주면 좋은데 SVD를 쓸 때는 그걸 따로 해야 된다 물론 하면 된다 근데 번거롭다 이 모든걸 한번 해결하는게 PCAE를 사용하면 훨씬 가득한다고 이결된다는 겁니다
그래서 SVD는 어떻게 나오는지 살펴볼게요 지금 SK런에 나와있죠? 전KTD SVD 이용을 할건데 앞서 이제 지난번에 16개의 차원으로 PCA 차원 축소해가지고 의미 분석을 했습니다. 문서에 대한 주제벡터도 봤고요. 단어에 대한 주제벡터를 보려면 어떻게 하면 된다? 컴포넌트 그때는 PCA였죠. PCA 학습시킨 거에서 컴포넌트
이건 뭐 중요한 건 아니에요. 라이브러리 스페셉 한 거니까. 근데 이제 PCA 했을 때 주성분이 무엇인지를 보면은 원래 있었던 축 X축, Y축 등등 막 이렇게 나오는 축들이 워드에 해당했으니까 토큰에 걔네들이 어떻게 변환되어야 될지 알 수 있고 단어에 대한 주제백터들도 얻을 수 있다는 거. 그래서 이젠 SVD로 할 건데 여기서 반복 횟수를 정할 수가 있습니다. SVD 자체의 랜덤성이 다양한 분야에서 이슈가 되기 때문에 우리 일미보석 뿐만 아니고
그래서 100번 정도 해서 좀 안정적인 결과를 보도록 하겠습니다. 그렇지 않으면 할 때마다 조금씩 달라질 수 있고요. 이게 뭐 랜덤성이 상관이 없는 분야도 있을텐데 재현할 때 늘 이슈가 됩니다. 그냥 코드를 똑같이 가지고 오고 데이터도 똑같이 가지고 왔는데 돌려봤는데 약간 다른 경우가 나왔어 이런 것들이 있죠. 특히 딥러닝에서 많이 나오죠. 뭐 랜덤시드 같은 거 고정하면 나아지긴 하는데 이게 랜덤시드를 전부 잡지 못하는 경우들이 또 있어요. 자 100번 해서 좀 안정적인 결과를 보도록 하겠습니다.
자 그다음 fit transform 하면은 변환이 되고요. 이렇게 해서 변화를 시켰더니 지금은 문서 주자 벡터입니다. 보시면은 여기 문서죠. spam 데이터 sms 스팸 데이터 그대로 쓰는 거고요. 16개 주자에 16개 있는데 9개만 지금 프린트 한거에요 이렇게 나오는데 PCA이랑 거의 비슷해요 100번쯤 해서 이렇게 하니까 비교해보면 좋은데 그래서 제가 다음에 PCA 그걸 붙여놨거든요
여기 밑에만 좀 주거 해주시면 되는데 SMS 0은 0.201 똑같고 그 다음 0.404 똑같고 근데 뭐 여기 이런거, 이건 0.012인데 SVG로는, 여기는 0.011이죠 PCA로는 이런게 조금씩 차이가 나는데 뭐 거의 유사하게 나옵니다. SVG도 근사 때문에 랜덤성이 있지만 많이 해가지고 평균 내거나 하면은 좀 안정적인 값으로 갑니다. 수렴을 합니다.
근데 뭐 굳이 이거를 몇 번씩이나 해가지고 이렇게 해야겠습니까? 그죠? PC가 추천이다 라는 거를 지난 시간에 이야기 드린 거지만 한 번 더 이야기 드리고자 하고요 자 그 다음에 PC건 SVD건 이거를 이제 진행을 하면은 우리가 일단 머신러닝을 쓰는 입장에서는 피처를 훨씬 더 압축적으로 축소시켰다는 강점이 하나 있고요
그대로 문서 분류, 스팸분류 같은 거 하려고 하면 그리고 단어 벡터가 좀 더 그럴싸하게 나온다 하지만 이게 얼마나 그럴싸한지, 얼마나 쓸고 있는 건지 이런 거를 제가 디테일하게 보여드리지는 않았는데 그래서 약간 감을 잡으실 수 있게 참고할 만한 슬라이드입니다 교과서에서도 나와 있는 내용인데 자 분류를 해본 건 아닙니다 지금 딱 분류를 해본 건 아닌데요 왜냐면은 아까 문서별로 주제벡터가 나왔잖아요 16차원짜리 벡터가 나왔습니다
문서 하나당 sms 하나당 16개의 블록값이 있는 벡터로 나왔는데 애들끼리 전부 유사도를 좀 봤습니다. 계산했습니다. 그래서 X축, Y축 전부 다 SMS에요. 대각선거는 1이겠죠. 자기 자신이니까 유사도가 1이 나오고요. 그래서 뭐를 보고 싶으냐. 스팸 끼리엔 유사도가 높고, 넌 스팸 끼리엔 유사도가 높고, 스팸과 넌 스팸 유사도가 높고 그 악기 바꿔서 그러면은 이제 좀 가능성이 있지 않을까 라고 추정해 볼 수 있다는 겁니다
근데 이것만 봤을 때는 이거 바로 유사도만 봤을 때 아주 훌륭한 피처라고 보기는 조금은 어렵긴 합니다 예를 들어 보면은 우리 스팸 데이터 집중해 보자 느낌표 붙은 게 스팸입니다 그중에 5랑 0.4정도 8, 9, 0.5, 4정도 나오고 지금 이 칸에서는 정상인 데이터보다는 스팸끼리의 유사도가 좀 더 높죠 그죠? 뭐 sms0하고는 - 약간 반대로 나왔고
-2, 0.1, 0.3 정도 수준인데 스펙 길이는 전고 0.4 이상 나왔잖아요. 그죠? 조금 되지 않을까? 라고 추정을 해볼 수는 있는데요. 이게 뭐 그래서'아 이미 아주 훌륭하다' 뭐 이런 식으로 이야기하기엔 조금 곤란합니다. 물론 이걸 또 비선형 머실러닝 모델에 돌리거나 해가지고 교회가를 뽑으면 또 다릅니다. 지금은 선형적으로 단순히 벡터 유사도를 본거에요. 그렇게만 했는데도 편별력이 우수하다면 정말 좋은 것일텐데
그렇게까지 가지는 않습니다. 그건 쉽지 않아요. 그런 식으로 표현을 얻는 것은 상당히 어려운 일입니다. 자 여튼 그래서 이 의미구석이 다른 후속 테스크를 하기 위한 기반 기술로서 많이 활용이 되는데 만약에 이걸로 머신러닝에서 분류한다면 가정하고 가능성을 살짝 살펴봤다 정도로 봐주시면 될 것 같아요 자 여기까지 우리 LSA는 분량은 이제 다 됐고요
제가 준비한 내용은 의미보석이라는 분야는 잠재 의미보석 LSA 말고도 다양한게 있습니다. 특히 오늘 잠재들이 클레아 할당 올건데요. 그래서 경우에 따라서 원하는 목적에 따라서 만든 것을 활용하시면 되고요. 활용하신다면 요즘부터 딥러닝이나 이런걸로 많이 넘어가긴 했지만 그런거고요. 그리고 일비 분석을 위한 원재료! 원재료로써는 기본적으로는 카운팅 기반 통계를 쓴다는 거죠.
백어버드나 디에프와 디에프 결국 워드 카운트에 근거해서 피처를 만드는 거잖아요. 단어 카운트, 수수기반의 피처들이라고 이야기를 합니다. 그리고 중심화 정교화하기를 추천하는 것은 머신러닝에서 배우신 이유랑 비슷해요. 그때는 비슷한 이유로 여기서도 k-fi, back over effect 이런거는 사실은 중심화가 되어 있지 않죠 채소가 0이고 양소만 가는데 그런 이슈가 있는데 변화시켜 주시는게 좋습니다
아래쪽은 결국 pca를 좀 더 행정한다 라는 내용이고요 이렇게 하고 잠재들이 클리어 할당 쪽으로 넘어가 보도록 하겠습니다 자, 이 잠재리클의 할당이라는 것은 주제벡터를 구하는 방법입니다.
근데 장단점이 있어요. LSA랑 비교하면 장점은 사람이 해석하기 좋은 형태의 주제벡터들이 나오는 편입니다. 아 이 주제는 반려동물에 강한 거야 도시에 강한 거야 이렇게 딱 나오지는 않아요 이것도 그렇지 않아요 근데 자 잠시만요 약간 감을 잡아 봅시다 자 pca로 분석한 걸 보죠
이게 각 토픽이 어떤 토픽이다 라고 말하는 게 어렵다 라고도 제가 언급을 드렸습니다만 약간 상식적으로 지금 우리가 뭐 원리 법칙은 아니고 약간 상식적으로 느낌으로 다가 생각을 해보는 건데 SMS 짧은데, SMS 0번이, 그러니까 벡터가 댄스한 건 좋아요. 뭐 피처 측면에서는 좋긴 한데 16개의 주제가 뭔지도 어사인을 하기 어려울 뿐더러 짧은 메시지 하나에 이렇게 많은 주제가 이렇게 많은 어떤 그러니까 조그만 값들
연계되어서 들어 있을까? 라는 생각이 듭니다. 그러니까 이건 좀 우리가 원하는 공간으로 변환이 안 된 것일 수 있어요. 우리는 훨씬 더 깔끔하게 떨어지는, 그러니까 만약에 스팸분류를 하고 싶으면 이거 주제 두 개 잡아가지고 정상, 그리고 스팸성 이런 걸로만 해가지고 점수 쫙 나오면 제일 편하잖아요. 그렇게 할 수 있다면. 차원 두 개를 잡아가지고 어? 저 스팸에 대한 주제로만 근데 지금 뭐 16개를 뭐 어떤 핵파라니터가 따로 있는 것도 아니죠 사용 대수적 기법으로 그냥 쭉 압축을 시켰고
굉장히 바라보기 힘들게 나옵니다 근데 과연 그럴까? 실제로 우리가 또 어떤 글들에 대해서 분석하고 또 대량의 프로포스에 대해서 경향이나 등등 논하고 싶을 때 이 정도로 댄스하게 나오는 걸 원할까 라는 겁니다. 아까 얘기한 방법도 한 가지 방법이에요. 근데 저것의 단점은 해석이 어렵다. 장점은 이론이 워낙 탄탄하다. 사용대수적 기법으로 근거에 기반해서 하니까 여기에 대해서 토론을 달 수가 없어요. 다만 단점 중 하나는 비선형 관계를 포착할 수 없다.
이런 게 있는데 그래서 나온 여러가지 의미 분석이 있고 아까 본 lsa 단점을 극복하기 위해 이 잠재 디리클레아 혈당 같은 경우에 굉장히 강력한 과정에 근거해서 사람이 알아보기 좋은 벡터를 만들어 냅니다. 이게 맞느냐는 또 이슈는 있어요. 근데 해석하기가 좋은 그럴싸한 결과가 나오는 방식이라는 겁니다. 근데 이게 머신러닝 입장에서 기계가 쓰기에 좋은 비처나 이거는 좀 생각할 여지가 있습니다 마지막에 볼건데
분류용으로는 LSA로 압축한 팩터가 더 좋았습니다 우리 케이스에서는요 잠재들이킬라 할당보다 잠재들이킬라 할당이 좋은 점은 해석 그리고 썰 불기가 좋다 분석해서 이야기를 하기가. 자 그래서 딜클레 할당이라는 건 결국 베이지안 쪽에서 많이 이야기하는 거죠. 사전 분포들이 있는데 정확히 뭔지 모른다 할 때 가정할 때 굉장히 많이 쓰는 분포 중 하나고요. 이 가정하고 좀 연계 지어서 설명을 드려야 될 것 같아요.
디리클레아의 땅이라는 의문이 붙은 이유는 그리고 잠재라는 것은 마찬가지로 우리의 LSA에서도 레이터에서 잠재라는 말을 썼잖아요 겉으로 드러나지 않는 뭔가 얘네들을 단어 카운트나 이런 것을 열심히 봤더니 숨어있는 어떤 것을 끌어낸다는 의미를 갖고 있습니다 자 그래서 잠재디리클레아의 땅에서 중요한 것은 여기서 뭐를 가정하고 있는가? 가정기고 첫 번째, 두 번째는 이 잠재디리클레아의 땅을 수행하는 과정입니다. 알고리즘이죠 그래서 그 가정부터 먼저 이야기를 드리면 잠재들끼리 할당에서는 문서들이 주제들을 혼합으로 이루어져 있다고 가정을 합니다.
갑자기 무슨 말인지 싶을 텐데 우리가 문서를 주제백토로 변환한다는 것 자체가 이미 그걸 좀 가정하고 있는 거긴 해요. 예를 들어 16개의 주제에 대한 어떤 값들로 나눈 문서들을 수치화시킬 거야 라는 거고 아까 이런 시도는 16개의 주제가 각각이 뭔지 이런 게 도저히 해석이 안되고 너무 댄스하게 나와서 설명이 안되고 패턴이 이런 게 단점이 있었다 근데 이제 ldi에서 주제들의 혼합이라는 것은 경우에 따라 다르지만
개수를 적당히 관리 가능한 개수로 하고요 분포를 파악해 냈을 때 설명이 훨씬 더 편하게 나옵니다. 스펠스하게 나와요. 결론적으로 이야기 드리자면 그리고 이 주제들이 어떻게 실제 글로 불리냐? 한 주제에 대해서 각 월드가 샘플링 될 확률이 있다고 가정합니다. 어떤 확률분포가 있는 거죠 주제마다 예를 들어 애완동물에 대한 애완동물이면 주제에 대한 확률분포는 강아지 고양이니까 10%씩 확률로 나올 수 있고 나머지 확률은 다른 토큰들이 나눠 가진다
이런 식으로 이제 가정을 하는 겁니다 그런 식으로 엄청 샘플링 해가지고 주사위를 엄청 던져가지고 글이 나왔다 라고 가정을 하고 있습니다 너무 사람이 열심히 고민해서 쓴 글에 대해서 주사위 노름처럼 이렇게 하는 거 아니냐 생각하실 수 있는데 어쨌거나 우리는 이걸 통계적으로 분석하고 바꿔서 피처화 시켜야 되잖아요. 그래서 이런 생각을 하는 겁니다. 자 그래서 이 기법'잠재디니클의 하이딴'에서는 이 가정의 근거에서
문서가 생성되었고 근데 지금은 우리가 그 가정을 알 수가 없고 생성된 문서만 보고 있는 상황이거든요. 볼퍼스에서. 그래서 이 결과물, 문서를 바탕으로 주제랑 단어의 확률분포를 역사, 역추적해 나가는 그런 기법이라고 보시면 되겠습니다. 실제로 이게 이렇게 이런 분포의 기반에서 만들어졌느냐 뭐 이런 걸 알기는 어려워요. 하지만 이 가정에 근거해서 진행을 하면은 나름 설명성이 굉장히 좋은 결과가 나온다. 생각해 주시면 될 것 같아요. 그리고 원래 LDA라고 많이 이야기 합니다.
여러분 어디서 특히 NLP에서 LDA를 보시면 잠재들이 틀려있다니입니다. 근데 우리가 선형 판별 분석을 썼단 말이에요. 단원에서. 겹칩니다. 머신러닝에서는 그냥 LDA하면 아마 선형 판별 분석이 먼저 나올 텐데 정확히 겹칩니다. 그래서 우리 교과서에서도 자연화트레이 넥션에서도 LDA로 쓰는데 이것이 자주 쓰는 약차는 아닙니다. LDE입니다. 맥락에 따라서 판단하셔야 돼요.
여러분이 어디선 LDE를 봤다 라고 하면 디리클리아이 땅인지, 서형 판별 분석인지는 헷갈리진 않으실 겁니다. 맥락을 보면. 이 둘은 너무나도 달라서. 자, 그래서 일단 이 과정과 알고리즘을 같이 설명을 드릴 텐데 우선 이 잠재 디리클리아이 땅 LDE에서 가정하는 원서 생성 과정을 이야기 드리겠습니다. 굉장히 기계적이에요. 하지만 이렇게 가정합니다. 우리는 이렇게 글을 쓰지 않지만. 자 우선 문서의 기계가 있다고 정합니다.
샘플링 횟수죠. 토큰을 뽑는 횟수가 있다고 가정합니다. 자 그리고 어떤 문서에 사용될 토픽과 혼합 비율을 정합니다. 이게 더 좋아요. 자 여기 노란색부터 이렇게 있는 각 문서인데 아 아니군요 이거는 이건 토픽이고요. 왼쪽에 있는 색깔들은 주제고 각 문서들이 있는데 지금 보시면 이 문서는 노란색이 엄청 많고요.
노란색이 무슨 토픽인지 정확히는 어려워. 근데 진이 좀 성분이 높네요. 진 관련한 주제 비율이 되게 높고 그다음 라이프 관련한 성분 그리고 데이터 관련한 성분 예를 들어 뭐 0.5, 0.3, 0.2라고 할까요? 이렇게 되어 있는 글이라고 칩시다. 자 이런 뭐 무슨 기사가 있어요. 이 글의 주제를 대충 이제 파악을 하면은 유전자 혹은 유전학이 50% 생명이 30% 데이터가 20% 라고 말할 수 있다는 겁니다.
이런 관점으로 보는 거예요. 댓글 할당에서는 각 문서들을 그래서 문서마다 어떤 토픽을 어떤 퍼센트로 혼합할지 정한다고 가정합니다. 이 두 가지가 정해지면 이제 매 토큰마다 주사위 두 번 터지면 됩니다. 첫 번째 주사위는 토픽을 정하는 주사위입니다 주사위라고 하는 것은 뭐 같았죠? 샘플링 한다는 겁니다 우리 확률 통계에서
이것이 이렇게 뽑는 것처럼 그 분포에 따라서 샘플링 하는 것처럼 먼저 뽑는 건 토픽을 뽑아야 돼요 무슨 말이냐 토픽을 개수 및 혼합 비율이 있다고 했는데 예를 들어서 유전학 0.5, 생명 0.3, 데이터 0.0 한번 샘플링 했을 때 데이터가 나올 수도 있죠 20%면 나쁘지 않으니까 확률이 있고 근데 유전학이 절반이니까 확률이 높긴 하겠죠
일단 1번 이거를 굴려서 정합니다 그래서 만약에 데이터가 나왔다 그럼 데이터 중에서, 뒤에 가보면은, 데이터와 관련한 이 토픽에서 각 토큰이 나올 확률은 또 있습니다. 우리는 모르지만 있어요. 있는 거에서 뽑는다고 가정하는 거예요. 우리가 정확히 알 수는 없지만 이 공포를. 그래서 주사위 돌리면 또 컴퓨터가 나와요. 예를 들면. 주사위 두 번 던지는 차례에선 컴퓨터가 안 나온 겁니다.
자 이상하죠 이런 문법도 안 맞고 우리가 글 쓰는 거랑 말이 안 되지 않느냐 자 근데 우리 다시 한번 생각해 보시면 여러분 자연원 저리에서 카운트 기반 그런 피처들을 변환할 때 순서가 중요치 않죠 어차피 어떤 단어들이 몇 번 나왔는지 한번 보죠 세고볼드로 변환하고 나면 그렇게 바뀌잖아요 어떤 단어들이 몇 번 나왔다 그게 어떻게 생기는지를 이렇게 가정한다는 겁니다
항상 이게 조금 안 와닿는 게 우리는 이렇게 글을 쓰지 않아 맞아요 우리는 이렇게 글을 쓰지 않아요 여기 보시면은 색깔 있는 것들만 그거라고 하긴 좀 애매한데 아무튼 원문이 있으면은 우리가 결국 전처리를 하고 나면은 백오벌이드를 쓴다 이러면은 결국 어떤 단어들이 몇 개 있는지만 나옵니다 그죠? 그게 어떻게 생겼는지를 이렇게 가정하겠다는 거예요 이런 식으로 생겼다 우리는 이렇게 글을 쓰지 않지만
모종을 이런 군포에서 샘플링 되었다고 가정한다는 것입니다. 자 그래서 이거는 LDI 설명은 아니고요. LDI에서 갖는 전제하고 있는 가정의 근거에서 운설을 만들 때 어떻게 만드는지에 대한 겁니다. 자 문서 1, 2, 3이 이렇게 있는데 얘네를 백오벌드해서 바꿨다고 생각을 해보겠습니다.
그리고 여기 있는 단어들이 어휘지집 내의 모든 단어들입니다. 복귀비로. 그랬을 때 이 순서대로 할게요. 사과 바나나 먹어요. 귀여운 강아지. 깜짝하고 좋아요. 첫 번째 문서는 사과 바나나 먹어요. 0 0 0 0. 나머지는 없는 것 같네요. 그렇죠? 이렇게 나올 거고요.
두 번째는 우리 없어요. 귀여운 애교. 0 0 0. 귀여운 애교. 강아지 입고. 아 0,1 이렇게 됩니다. 그죠? 이 순서는 위에 있는 이 순서대로 워드가 축이 맵핑되었다 가정하겠습니다. 아.. 아래쪽 봅시다. 다 나오나? 자 사과.. 아 사과 안 나온다. 바나나 있고요. 먹어요 있고요. 귀영 있고요. 강아지 있고요. 깜찍한 거 있고. 근데 좋아요는 없어요.
이렇게 되겠죠. 이렇게 될 겁니다. 그래서 이 백오벌드들이 도대체 어떻게 생겼느냐 어떻게 생성이 되었을까를 아까 같은 분포를 가정한다는 겁니다. 그래서 지금 가정을 하는데 문서 1 같은 경우에는 토픽A 100%로 그리고 N=3 세 개의 토큰으로 세 번 세 플리크 한 거죠 토큰을
그렇게 해서 만들어진 글로 가정을 한다는 겁니다 그래서 지금 좀 약간 아무튼 이 백오버드가 어떻게 생성되는지에 대해서만 가능성을 보자면 여기서 생각하는 메태리클리아트에서 가정하고 있는 과정에 따라서 첫 번째, 토픽 주사위를 던져야 되는데 토픽 A 혼자 100%이니까 다른 경우일 수가 없습니다. 토픽 A에서 나왔고요. 토픽 A에서 정확히 어떤 토큰을 우리가 고를 건지 주사위를 던져야 되는데 그거는 오른쪽에 나와 있습니다.
각 토픽마다 각 단어, 토큰들의 분포가 어떻게 되는지 샘플링이. 자 한번 던졌습니다. 먹어요가 나왔어요. 먹어요 쪽에 카운트가 1 올라가는 겁니다. 0, 0, 1이에요. 그 다음에 또 두픽 주사위를 던집니다. 두 번째 토큰. 무조건 두픽 1가 나오겠죠. 그 다음 또 두픽 내부 주사위를 던지는데 토큰. 이번에는 바나나가 나왔습니다. 그럼 0, 1, 1이 되겠죠. 마지막 세 번째 같은 식으로 선졌되어 사과가 나왔다. 그러면 11200이 나온다는 겁니다. 이렇게 100업을 생성하고
무척 생성하고 이렇게 된다 라고 가정하는 거예요. 자 그러니까 우리는 이렇게 글을 쓰지 않지만 이런 게 좀 녹아들어있었다라고 가정할 수는 있을 테고 그리고 중요한 거는 이게 결국 문서에서 드러나지 않습니다. 문서 혹은 백오버전. 이게 결국 원본인데, 이 알고리즘에서 보는 데이터 원본. 이걸 아무리 들여다봐도 우리가 이 분포가 보이지가 않습니다. 그죠? 이걸 예측해 나갈 겁니다. 역추적하는 거예요. 담대 디리클리아 할당기는 알고리즘 자체는.
이런 분포 역사할 때 사전 분포로 발전하는 게 글래 분포다 보니까 이렇게 이름이 붙었고요. 이걸 역주적해서 뭔가 만들어내면 무엇이 장점이냐 전체 콜퍼스에 대해서 토핑 크게 두 가지가 있고 각 문서들이 이런 분포가 있고 각 토핑은 이런 단어들로 쓰였고 이런 걸 좀 설명할 수 있잖아요. 설명성이 되게 좋아요. 그래서 이 기법이 그런 용도로 쓰이는 거고 자 비슷한 원리로 두번째 모사는 토픽비 100%인데 토픽비는 귀여운 강아지 깜짝하고 좋아요에서만 나온다고 합니다.
자 근데 길이 3으로 또 샘플링을 했더니 깜짝하고는 안 나와서 귀여운 강아지 좋아요까지만 나왔다고 칩시다. 또 끝뒤 그런 상황이고요 아래쪽은 문서 3이 더 복잡한 케이스인데 토픽 B가 60% 토픽 A가 40%인 상황입니다 잠시만요 세 번째까지가 또 끝뒤 그리고 길이가 오라고 합니다 이게 다섯 번 주사위를 던져야 되는데 그래서 주사위를 던졌더니
예를 들면 첫 번째 주사업위에서는 Topic A가 나왔고요 Topic A에서 어떤 단어를 또 토큰을 뽑을지 주사업위에 던졌더니 바나나가 나왔다 그런 상황 2번 던졌더니 아 이번 B가 나왔어 그러면 B쪽에 있는 여기에서 주사업위에 던져야겠죠 이렇게 해봤더니 귀여운이 나왔다 이런 식으로 해가지고 다섯 개가 토픽 A2번, 토픽 B3번 이런 식으로 나와가지고 나오면은 0111110
이런 이제 맥오벌을 갖는 문서가 나올 수도 있다. 이렇게 나왔다는 거죠. 보니까 이 과정을 통해서 가정을 깔고 있습니다. 잠재니클리아 헬당은. 그래서 이 분포를 역주적 역산해서 어떤 콤퍼스, 문서, 그리고 주제에 대한 설명을 하고자 하는 기법으로 보시면 될 것 같아요. 그래서 물론 여러가지 기술에 썩을 수 있겠지만
머신러닝의 재료 피처 처리보다는 데이터 마이닝, 데이터 과학 쪽에서 극강 받아오고 자연 처리 쪽에서 뭔가 설명하려고 할 때, 콜프스에 대해서 구석하고 그럴 때 많이 활용을 하던 기술입니다. 자 그래서 여기 아래쪽에 나와 있는 그림 아까 좀 풀어다 썼는데 보다 조금 더 시각화가 돼 있는 이런 자료이고요. 보시면 뭔가 기사가 있죠. 뭐 이런 기사 사이언스 지내요. 사이언스 논문인 것 같아요.
이런 글들이 어떻게 구성되어 있는지를 글을 보고 앞서 우리가 봤던 토픽들의 분포 그리고 각 토픽에서의 단어 출연 확률 이런 거를 분석을 해서 사이언스 지혜사 다룬 토픽들에 대해서도 분석해서 글을 쓰고 어떤 각 문서에 대해서도'아 이 논문은 각 주자가 몇 퍼센트씩 섞였어' 이런 거를 이야기를 하고자 하는 기술인 겁니다. 자 그런데 지금 보시면 정말 어렵겠지만 역주적하는 게 그죠?
실제로 이 분포가 뭐였는지도 알기가 어렵습니다. 우리가 글을 쓰지 않았으면 반복하는 건데 지금 하지만 이걸 가정하고 이걸 잘 뽑아내면 뭔가 설명성 있는 걸 만들 수 있을 거라는 것은 감이 오는데 일단 주제가 몇 개 있는지는 정해야 돼요. 몇 개 있을지 모르는 주제 이것은 갈등파랑부터입니다. 사람이 개수를 잘 정해야 됩니다. 특정 키위가 까지나 정하겠다. 5개, 10개 정하고 각 주제들은 어떤 단어들을 출현 확률로 이루어져 있는지를
점점 추적해 나가는 기술이라고 보시면 될 것 같아요. 예를 들면 지금은 이게 좀 이렇게 나와 있으니까 이걸로 예시를 듣는 거지만 사이언스지에 대해서 대주제 4가지를 꼽고 싶다 이겁니다. 그래서 주제 4개를 가정하고 잠재들이 글을 할당으로 돌렸어요. 우리 좀 이따가 볼 거예요. 어떻게 저 대연지는. 그랩터에 나온 게 재밌는 게 노란색. 첫 번째 주제는 딱 봐도 상위권 내림차수 정렬한 건데 등장률.
이야 이것은 유전화 관련 주제다. 정말 설명력이 좀 강하게 뽑힌 거죠. 주제만. 이렇게 나올 수 있는 거고 두 번째는 생명, 세 번째는 신경과학, 네 번째는 데이터 뭐 이런 식으로 나올 수 있다는 거죠. 이렇게 안 나오기도 해요. 가끔 근데 이제 저는 봤을 때 이렇게 아까 나온 적이 없었어요. 진짜 피드데이터 가지고 상단데이터 뭐 그런 거였는데 이렇게 나오지 않는데 이런 녹음 같은 건 잘 나올 것 같아요 이런 식으로 나온다는 겁니다
자 그래서 일단 주제 몇 개에 대해서 내가 이 분포를 추정할 건지 분포를 추정하는 곳인데 지금 어떻게 되어야 했다면 좀 정해야 되고 그것만 하고 나면은 사실은 구현이 되어 있습니다 사이킬러원이나 이런 데 뒤에 우리 사이킬러원의 시도 볼 거고 근데 이게 어떻게 이루어지는지 핵심은 우리가 좀 알아야 되니까 잠시 예시를 좀 같이 살펴볼 겁니다 간단한 예시 그리고 제가 고민을 좀 해봐야겠지만
이것도 문제 하나씩은 중간고사에 단골로 제가 좋아하던 분이 있는데 잘 봐주시면 좋겠고요 근데 장난력이 너무 높아가지고 고민이에요 자, 별로 어렵지가 않습니다. 자, 역추적을 하는 거예요. 결국 이게. 아까 나와있던 문서들로부터 이 분포를 역추적해 나가는 것이라서 처음에는 거의 유니폼한 분포를 가정하고 이거를 보정해 나갑니다. 이터레이티브한 알고리즘이에요.
아까 말했듯이 하이퍼 파라미터, 독백 개수는 사람이 정해줘야 되다 보니까 K계, 사람이 외부에서 강제로 5개면 5계, 3개면 3개 정하고요. 자 그렇게 했으면 이제 문서 원고 입력이 최소한 백오벌드, 아니면 백오벌드 하기 전에 백오벌드에 쓰는 단어들이 나열되어 있는 거죠 다섯 번 등장한 단어는 얘가 몇 번째로 등장했는지 여러 번 등장할 수도 있어요 다 자르고 백오벌드 딱 카운팅하기 바로 전 그 정도 입력을 넘겨줍니다
백오벌드들도 할 수는 있는데 좀 더 로우한 게 있으면 좋고요. 자 그러면 이제 결국 이 잠재들이클레아의 가정에 따르면 그 단어들이 주사위 두 개 던져져서 나온 거란 말이에요. 어떤 주제에 대해서 인지랑 그리고 그 주제에서 각 확률에 대해서. 지금 보시면 주제 A랑 B가 정확히 구분되어 있죠. 단어가. 실제로는 이렇지 않아요. 예를 들어 토픽 A에서 귀여운 확률이 10%고 토픽 B에서 귀여운 확률이 33%일 수 있어요
한 단어가 한 토픽이만 속해야 되는 건 아닙니다 이 인시가 너무 간단해서 지금 딱 잘라놨는데 엄청 복잡해요 그 분포가 이게 그걸 추적해나가는 과정인데 그래서 일단 처음에는 다 랜덤으로 그냥 세팅해버립니다 주제 케이크 잡으면은 오늘 독립대, 그러니까 캣이 만약 5번 나왔다. 캣이 여러 번 등장한다. 문서에서. 그러면 이 캣은 주제 A에서 온 것일 수도 있고, 이 캣은 주제 B에서 온 것일 수도 있거든요.
다 랜덤으로 일단 설정을 해요. 처음에는. 처음에는 랜덤. 자, 그 다음에 하나하나씩 전체 통계를 보면서 확률이 높은 걸로 고정해 나갑니다 하나하나씩 보면서 이 단어 말고 나머지는 제대로 되어 있다고 가정하고 물론 이 가정에 맞을 수 있는 건 처음에는 맞지는 않죠 전부 랜덤으로 확당했는데 그래도 이걸 막 반복하다 보면 수렴을 합니다 이 분보들이 그래서 수렴 된 거를
각 문서의 주제의 각 태그 비율 그리고 각 주제마다 단어 비율로 삼는 겁니다 이제 설명을 시작해요 그래서 끝나면은 그리고 이따가 볼 거지만 뭐 피처벡터로도 나옵니다 피처벡터로도 있을 수는 있고 그런 식으로 발령을 하는 겁니다 자 그래서 주제 키에게 정하고 단어마다 두컵마다 전부 랜덤 할당한 다음에 이걸 리터레이티브하게 보정해 나간다 수렴할 때까지 그렇게 생각해 주시면 되고 그 보정하는 과정을 좀 같이 살펴보도록 하겠습니다
아주 간단한 예시입니다 이거는 근데 이제 이 과정에 대한 이해가 중요한 거겠죠 자 도큐먼트 123 가 있고요 여기에 등장하는 단어 이렇게 있습니다. 애플, 바나나, 캣, 엘프 등등 있어요. 조금씩 다릅니다. 무사가 등장하는 단어들이. 이게 백오버랜드는 아닙니다. 도큐먼트 1을 보시면 캣이 두 번 등장해요. 그죠? 근데 이제 등장한 순서대로 이렇게 좀 써놓은 거예요. 이거를 카운트화 시키면 백오버랜드가 되긴 하겠죠.
빼고볼 때 되게 전에 좀 더 약간 로우 데이터 형식이고요 자 여기에 대해서 원래대로라면 순서대로 예를 들면은 document1 애플부터 쭉 document2 document3 쭉 하나하나 보정해 나가야 돼요 이거 다 돌면은 마치 뭐 우리 그 뭐 학습할 때 딥러닝 이런 거 이런 거 본 것만이 하면 다 한 바퀴 보정 한 개 이렇게 되는데 지금은 여기 document1에 있는 세 번째 캣 이 친구에 대해서 보정해야 된다 가정을 해봅시다
이 상황에서 앞쪽이나 뒤쪽이 보정되었는가 중요치 않아요. 지금 내가 이 두꺼번에 있는 캣의 분포를 갱신하고 싶을 때는 나머지들은 다 맞다고 가정을 합니다. 예를 들어 갓 랜덤으로 사인해서 전혀 받지 않는 상황이라도 일단은 가정을 합니다. 맞다고 그렇게 이제 좀 공고를 수렴시켜서 나가는 거고 자 그랬을 때 이 캣이 두픽 A에서 나왔을 확률과 두픽 B에서 나왔을 확률을 계산을 하는 겁니다. 이 상황에서.
계산할 수 있죠. 할 거예요. 다음 페이지까지 봐서. 그리고 확률이 더 높은 걸로 강제 배정을 시켜버리는 겁니다. 네가 가능성이 높으니까. topic B에서 나가고 가능성이 높았다면 넌 topic B부터 나왔어. 이런 식으로 랩핑을 하고 이걸 쭉 반복하다 보면 이제 거의 이상 잘 바뀌지 않거나 수렴해요. 그러면 그 상황을 보고 분포를 추정합니다. 각 문서에서는 A 몇 퍼센트, B 몇 퍼센트. 그리고 topic A에서는 cat 몇 퍼센트, 애플 몇 퍼센트. 뭐 이런 거를 그때 가서 이제 추정을 하는 겁니다.
자 그래서 계산을 해볼게요. 일단 이 캣이 나온 과정은 topic A 또는 B에서 나왔을텐데 만약에 topic A에서 나왔다고 가정하면 document1의 topic A 비율이 있었을텐데 그 주사위가 확률이 그죠? 던져서 A가 나왔고 주사위 두개인데 주사위로 비교하는데 괜찮죠? 첫번째 주제
디오스입니다. 도큐먼트1을 주제해 주사위에서 A가 등장해야 되고요. 이제 A. 도큰이랑 함께요. 각 주제별 도큰. 그리고 주제 A의 token 주사위에서 cash이 등장했어야 cash이 A에서 나온게 됩니다. 그죠? 만약에 cash이 주제 A로부터 나왔다면.
그래서 그걸 지금 가늠해 보는 거예요. 나머지 통계를 이용해서. 자, document 1은 지금 보시면 cash 제외하고요. 캣을 제외해서 이렇게 됐는데 나머지 4개의 토큰 중에 A가 두 개 있습니다. 그죠? 그래서 도큐먼트1의 주제 A 비율은 50% 주제 B의 비율도 지금 50%입니다. 이 캣은 뭔지 모르니까 통계에서 뺐어요. 아시겠죠? 자 도큐먼트1만 보는 겁니다. 이 토픽들. A 두 개.
B 두개. 그죠. 1:1입니다. 50%로 지금은 보는 겁니다. 도쿠문트원의 주제 주사위는 1:1이다. 50%씩. 자 그러면 주제 A에서 CAT이 나올 확률은? 이건 이제 전체 COPUS를 다 보는 겁니다. 파란색으로 칠해져 있습니다. 지금 A가. 3, 2, 3, 5, 6개 있고요. 캐시 한 번밖에 안 나옵니다. 그러면 1/6 자 이거 두 개 뽑혀야겠죠 주사위 두 번 증명의 확률
주제 1번 도큐멘트와이스 주제 A 나올 확률은 이거고요 그 다음에 A의 토큰 주사위에서 캐시 나올 확률 둘이 곱하면 되겠습니다 토픽 B의 확률도 마찬가지입니다 그래서 도큐먼트 1에서의 주제는 50% 확률이고 4개 중에 2개니까 토픽 B 중에 CAT이 몇 개 등장하는가? 8개 중에 3개나 등장하네요 전체 콜퍼스를 봐야 됩니다 8분은 3입니다
두 개 곱하면은 우리가 물음표 지금 현재 갱신하고 싶어하는 캣이 토픽 B에서 왔을 확률을 현상한 기준으로 계산하는 겁니다. 자 둘 다 비교해보면은 A는 대량 0.08 B는 0.18 토픽 B일 확률이 훨씬 높습니다. 그러면 토픽 B로 일단 배정을 합니다. 일단 배정해요. 이런 식으로 다 합니다. 다른 토큰들도 다 바꿉니다. 이렇게 하면서 수렴시까지 반복을 하고요. 그러면 하고 나면은 각 토큰별로 얘네들이 어디서 나왔는지 샘플링 결과가 나오게 되죠. 이걸 기반으로 우리가 아까 했던
각 도큐먼트마다 주제 비율 그리고 각 주제마다 토큰들이 어떤 확률로 이루어져 있는지를 쭉 통계를 내 가지고 이런 거 만들어 내는 겁니다. 어떤 어떤 주제가 어떤 토큰들이 몇 퍼센트씩 나오더라 확률이 그리고 도큐먼트는 각 주제들이 몇 퍼센트로 섞여 있더라. 이걸 알아내는 게 잠재기 그리어학당의 목표입니다. 자 이거 가죠
이해되시죠? 우리가 선호를 할 수 있는거에요 운사 3개, 토픽 2개 실제로는 토픽이 많겠죠 운사는 훨씬 더 많겠죠 이걸 기계적으로 하면 되는 겁니다 예비해서 특이하죠 뭔가 SVD나 이런 거 이미 잠재비 분석할 때보다
뭔가 확률가 분포 눈에 보이고 하는 것은 있는데 이게 어떤 의미를 가질까 조금 애매하실 수 있을 것 같은데요 여튼, 아무튼 아주 그 강한 가정이 근거하고 있습니다 아까 제가 이야기 드린 어떤 주제들의 비율과 각 주제는 또 어떤 토큰들이 샘플의 확률이 있다 강력한 가정하에 그걸 어떻게든 추정하기 위한 알고리즘으로 봐주시면 될 것 같습니다. 자, 이걸 이제 우리가 조금 써보도록 하겠습니다.
sms 스팸 데이터에 대해서 말이죠. 근데 우리가 쓴 데이터를 썼는데 아주 설명성이 좋은 데이터는 아닌 것 같아요. 피규어인데 사이언스 이런 거 잘 나왔어요. 이런 약간 좀 코퍼스가 좀 이런 주제 분석하기 좋은 것들이면 좋아요. 학술지 이런 거 좋고요. 아니면 뭐 글쎄요. 경제지 같은 특정 아주 큰 대주제 안에 엮여있는 어떤 문원들. 이것들을 주제 분포랑 동향이랑 각 주제를 나타내는 어떤 조건들이 쓰여는지 파악하고 싶다.
이럴 때 좋은 방법이라고 봐주시면 될 것 같아요. 하지만 우리는 sms 스팸 데이터로 한번 해보겠다 자 그래서 데이터는 제가 올려드렸죠 그 데이터 똑같이 활용해서 이번에는 잠재 디딕 클리어 할당 간단하게 해보는 코드입니다 따라서 보시면 좋을 것 같고요 자 먼저 전처리입니다 이거는 백오브리즈로 만드는 거예요 잠재 디딕 클리어 할당 같은 경우에는 지금 보시면 아시겠지만 백오브리즈 아니면 그 전에 어떤 레벨로 나와야지
tfi, tf까지 갈 필요는 없습니다 아이디에프를 고려하지 않아요 각 단어들이 언제 나왔나, 몇 번 나왔나 이런 것만 알면 됩니다 그래서 처리한 다음에 지금 처리된 거, 전처리 예시를 보여주고 그 다음에 백오버리즈를 만들고 0이 아닌 것들만 압축해서 꼽아본 결과입니다 백오버리즈가 만들어졌구나 까지 확인하는 거 자 그 다음에 잠재드립클리아 입당을 돌려보도록 하겠습니다. 16개. 우리 아까 잠재 의미 분석도 16개 주제로 했으니까 일단 같이 진행하겠습니다.
SK-RUN 안에 이렇게 포함되어 있습니다. 잠재드립클리아 입당으로. 자 그렇게 해서 수행을 그 다음에 컴포넌츠라고 하면은 사용대수적으로 뭔가 변화하는 건 아니긴 한데요 우리가 PC에서 컴포넌츠라고 하면은 각 토큰들의 주성분에 대한 내용이었잖아요
여기서는 16개 주제들이 원본에 등장했던 토큰들이 각각 몇 번 혹은 확률값 다 더해서 그 주제들이 표현되는지를 표기를 하고 있습니다. 보시면은 16,932, 이거 토큰 기수거든요. 전체 요금, 목격. 야오이집 안에 있는 요금 개수 우리 PC에서 봤던 거랑 똑같은 형식으로 표현되는 거 알 수 있고요 요거를 조금 보기 좋게 변환해서 출력을 해보면
0부터 15까지 16개 토픽에 대해서 각 토큰들 기여값이 나오게 됩니다 이게 소수점도 있고 하죠 정확히 등장 확률은 아니고 좀 고정이라는 게 들어갔는데 높을수록 많이 등장했고 기여했다는 것은 맞습니다 그래서 좀 비슷하게 봐주시면 될 것 같고요 그래서 만약에 16개의 토픽으로 지금 일기를 우리가 돌렸는데 앞서 보시면 아시겠지만 사이언스지에서 만약에 우리가 4개의 주제로
참제들이 그리할땅을 돌렸다 그렇게 해도 우리는 이게 첫 번째 주제가 '지인이 나올 거라는 걸 의도하고 바라고 해서 이렇게 된 것은 아닙니다 돌려봤더니 이런 분포가 나왔고 알고 봤더니 얘는 유전학 쪽에 가까워 얘는 생명에 가까워 이런 식으로 나오는 거거든요 그래서 지금 우리는 스팸 데이터셋이니까 보고 싶은 건 16개의 토픽이 돼서 LDIA인 우리 전자들이 플레이할 때 수행을 했고 어떤 토픽이 스팸과 연관이 깊은가를 보고 싶어요 그랬을 때
약간 우리 교과서에서도 결과를 적긴 한데 토픽3에서 스팸에 많이 들어가는 문자들의 값이 굉장히 높다 라고 이야기를 하고 있습니다 첫번째에서 보시면은 느낌표 393 물론 느낌표가 우리가 스팸 아닌데 쓰지 말라는 부분은 없는데 잘은 안 쓰죠. 그래서 굉장히 이것도 엔지니어의 주관이 들어간 겁니다.
스팸에 많이 쓰이는 문자는 나는 이런 이런 거라고 생각해. 그리고 이런 것들이 많이 기여한 주제를 찾아보니까 토픽3도 있고 토픽7도 있고 그래 이런 식으로 지금 찾아가고 있는 거예요. 그래서 보시면은 토픽3가 스팸과 관련한 그런 스코어가 높다고 해석할 수 있다는 것이고 LSA에서랑 비슷하게 조금 자기적인 느낌이 있긴 하지만
LSA보다는 훨씬 좀 클리어하게 설명이 되는 편입니다 왜 그러냐 이제 단어 주제 벡터 약간 단어 주제 벡터에 향하는 겁니다 지금 값이 뭐 이렇게 크지만 이거를 각 토픽별로 정교화를 시키면 벡터값으로 적절한 성분값의 벡터를 변환시킬 수 있거든요. 그렇게 쓸 수 있고 문서 주제벡터를 확인해보면 훨씬 스팔스하게 나옵니다.
이거 정교화된 결과입니다. 문서에 대한 주제벡터 이거. 보시면은 뭐 뒤에 잘려서 그런데 sms 0 같은 경우에는 토픽이 1번 8번 합치면은 0.96 이거든요 서메이션 1으로 됐을 때 이거 정보 서메이션 1.0 그래서 1번 토픽과 8번 토픽 정확히 뭔지는 모르겠지만 이것도 알고 싶으면은 토픽별로 가장 높게 기여한 워디들 줄 세워보면 대충 느낌 알 수 있고요
sms0은 이거 기계사품거 sms1은 토픽8이 되게 많이 들어갔네요 이렇다는 거 알 수 있고 그리고 지금 스팸 문자죠 sms2 이거는 토픽9번이 0.98이네요 토픽 9가 그러면 스팸성을 나타내는 것인가? 그것은 다른 스팸도 봐야 되기는 해요 하지만 훨씬 스팔스하게 나오는 거죠 그래서 이 주제들에 대한 설명을 하기도 좀 더 편하다는 것인데 근데 막상 이 주제들을 설명하려고 보면 앞서 여기 나오지만요
토픽 3는 이거를 나열한 거예요 내림차순이에요 여기서부터 말걸 어떻게 설명해야 되지? 스팸에서 많이 쓰는 문장이상으로 저도 잘 연락하세요 돈 표시도 있고 느낌? 아니? 마침표는 다 많이 쓸 거잖아요 마침표는 이 토픽3뿐만 아니라 다른 데서도 높을 수 있는데 아무튼 설명성이 높은 편인데 이런 느낌인 것 같아요 잠시 때 이 글을 알땅도록
자 어떤 토픽을 설명할 때 톱 토큰들을 뽑고요 얘네들을 근거해서 이런 느낌이다 라고 설명하는 것입니다 아까 사이언스 예시 같은 게 나오면 좋은데 딱 깔끔하게는 잘은 나오지 않습니다 그럼에도 LSA보다는 훨씬 설명하기는 좋습니다 장점이 있고요. 자 우리가 좀 이제 막판으로 볼 것은 머신러닝 피처로 활용했을 때의 가능성입니다. 코드가 막 나와 있지만 핵심만 이야기 드리면은 아까 이제 우리가 꼽았던 그 벡터들, 분석 주제 벡터들을 이용해서 선형 판별 분석, 이거는
linear discriminant 입니다. 이용해서 분석을 시도를 한 겁니다. 그랬을 때 나름 트레인 테스트 분리도 했습니다. 우리 예전 예시에서는 분리 안 했었거든요. 그랬을 때 트레인 0.70 테스트 0.67 정도 불균형한 데이터에서 F1 스포 중요한 것은 머신 회의에서 스팸 데이터가 훨씬 적기 때문에 그냥 정확도를 보면 안 됩니다. 이럴 때 F1이 많이 쓰이고요. 근데 PCA 기반으로 생성된 LSA 활용해서 생성된 주제벡터를 이용하면 훨씬 성능이 높습니다.
이것만 해도 0.8 정도 나옵니다. F1이. 근데 모듈이 좋은 거 있으면 잘 나올 수도 있겠죠. 물론 가능성입니다만 LDA는 진짜 간단한 거니까. 그래서 열심히 구성을 했는데 잠재 디리클레아이다는게 재료로 들어가는 것도 좋지 않아요. 보시다시피 너무 스파이스하고 그래서 마이닝에서 널리 활용되는 방식이다 라고 봐주시면 될 것 같습니다. 그래서 의미분석 크게 LSA랑 LDA라고 부르는데 잠재 디리클레아이다는 우리는 LDA라고 부르는 기법을 배웠고요.
LSA는 계속 서형 대수적인 기법으로 분석을 하는 곳인데 SVD, PCA, 그게 다 가능합니다. PCA 좀 더 권장 자 근데 잠재들이클라이 땅 같은 경우에는 비성형이죠. 선형적이지 않아요. 이건 어떤 분포의 과정에서 이터레이트를 바꾸는 거니까 비성형적인 어떤 관계나 잠재되어 있는 그런 주제 분포 같은 걸 이끌어낼 수 있는 가능성이 있습니다. 하지만 현실의 데이터에서 적용하다 보면은 쉽지 않을 수 있어요. 예를 들어 처음에 한번 여러분들 전처리하고 막 해서 해봤는데
불용어라 보기 어렵다고 생각했던 단어가 많이 나오는데 좀 방해가 되는 겁니다. 그럼 여러분들 콜포스에서는 그걸 불용어로 처리할 수도 있는 거고 반복 작업이 필요한 거죠 이제. 근데 또 하다 보면 그런 생각이 들 수도 있어요. 어떤 예를 들어 이거 잠재디리크 할당을 이용해서 어떤 콜포스에 대한 설명을 시도한다. 여러분들이 마이밍에서 분석을 한다고 했을 때 처음에 시행했던 결과가 너무 약간 좀 지저분해서 이것저것 쳐내고 하다 보면 여러분들 주관이 또 많이 들어가게 되잖아요. 아 이게 맞는 건가? 이런 이슈가 생길 수 있는데
뭐 이건 어쩔 수 없습니다. 그러니까 어느 정도는 자연철 엔지니어의 주관이 들어갈 수 밖에 없고 다만 원한 결과를 만들어내기 위해서 온갖 단어, 불량어 처리하고 이런 건 이제 그러면 이상한 결과만 나오게 되겠죠. 이런 건 지향을 해야 될 것 같습니다. 자 그래서 이 잠재들이클래 할당은 사람이 해석하기에 좀 좋은 형태로 주제벡터를 산출하고 스펠스를 합니다. 그래서 이 기법 이후로 토핑모델링이라는 분야가 상당히 자연처리 쪽에서 많이 연구가 되었습니다.
자연처리기도 하고 텍스트 마이닝이기도 하고 데이터 마이닝이 좋다는 것이던 그런 기법인거에요. 구체적으로 마케팅이나 이런 데 많이 관심을 갖고 기업들이 쓰려고 했습니다. 혼재되어 있는 SNS 데이터나 그런 걸 분석해서 사람들이 니즈 변화나 이런 걸 추적하고 그에 따라 대응할 수 있으면 좋겠죠. 디테일하게 모르겠지만 느낌이 있죠. 이거 아까 보시면 아시겠지만 주제 개수 k만 정해주면은 뭐 레이블 없이 다량의 분석해서 뭔가 있어 보이는
결과를 이끌어낼 수 있잖아요. 그죠? 이걸 어떻게 쓰는지는 또 다르죠. 다음 영역에 나서. 여튼 그래서 토핑모델링 대량의 코퍼스를 분석해서 어떤 토픽들이 우세하고 유효하고 각 토픽들은 어떻게 좀 풀어지고 있고 이런 거를 보는 분야가 개척이 되었습니다. 근데 이것도 이제는 어허 모델 기반으로 어... 아니... 하고 있는 걸로 제가 알고 있고요. 그래서 뭐... 자체가 성능 이슈적으로 이제 봐주기 유효한가는 좀 뭐...
생각해봐야 될 문제지만 그래도 우리가 토핑모델링 분야를 개척한 알고리즘이고 해서 짚고 넘어갈 만한 머리점이 되겠습니다. 자 근데 이제 뭐 주제벡터를 아예 재료로 활용한다. 유사도 등 연산. 머실러닝 재료로 활용할 때는 별로 이 잠재 드리클리아 혈당은 좋지가 않습니다. 인간 친하죠. 분석 설명 쪽에 강점이 있다. 이렇게 봐주시면 될 것 같고요. 이렇게 의미분석 단어는 마치도록 하겠습니다 목요일에 어디임빌딩으로 시작하도록 할게요
고맙습니다