AI/Data

AI/Data #


2025-08-21 ⋯ MLops #1 mlflow 설치 & 실습

1. mlflow 설치 및 docker 띄우기 로그인햇으면 도커를 켠다음에 다음을 수행. 확인해보면 제대로 떠있다!! MLflow 서버를 띄웠고 경고창이 뜨는데 호스트 CPU는 ARM64이고 MLflow 공식 이미지는 AMD64여서 플랫폼 불일치 이슈가 있지만 문제되지는 않고 만약에 해결하고싶으면 docker-compose.yml에 아래와같이쓰면 댄다고함. docker ps 해보면 떠있는걸볼수있고 확인후에 http://localhost:5001/ 접속하기 잘들어가있다!! 2. mlflow quick start 튜토리얼 링크 - https://mlflow.org/docs/latest/getting-started/intro-quickstart/index.html 위에서 한 내용이 step1-2여서 step3부터 하면 댄다. - step3는 그냥 사이킷런으로 기본적인 모델 만들기. - step4는 tracking uri를 설정하고 현재 experiment에 대한 name을 MLflow Quickstart로 정한다. - model_info에 step3에서 만들었던 lr 모델을 보낸다. - model loading을 하고 - loading된 model을 가지고 test dataset을 사용해서 prediction을 한다. 3. mlflow experiments 모델 inference를 하면 mlflow의 experiments에 뜬다. (ui에서 information을 볼수있다) 확인하는원리는? - compose.yml을 보면 라고 돼있는데 local의 mlruns 디렉토리를 /mlflow/mlruns 도커 이미지 안에 매핑을 시키면 mlruns 디렉토리내 모든 파일들이 도커 이미지로 들어간다. 확인하는법은? - docker 안으로 들어가서 /mlflow/mlruns 들어가기. 여기서 python tutorial.py를 하면 실행된다. - iris 데이터를 가지고 모델을 만들고 - mlflow가 tracking을 하고 - model을 만들어서 tracking-quickstart라는 이름으로 register를 함 - 그리고 result를 출력. - tracking url은? - compose.yml에 MLFLOW_TRACKING_URI=http://0.0.0.0:5000 로 돼있어서 자동으로 이쪽으로간다(공식 튜토리얼은 mlflow.set_tracking_uri(uri="http://127.0.0.1:8080") tutorial.py에서 run하는부분 코드를 보면 이렇다 암튼 이렇게 Inference를 했고 UI(http://localhost:5001/)를보면 mlflow quickstart가 왼쪽에 생겻고 클릭하면 inference(prediction)한게 나온다. 해당 experiment를 확인해보면 - 모델에 대한 정보 environment conda, python environment, requirements.txt 등이 다 넘어왔고 - tagging이돼있음 - tracking quickstart 누르면 - register된 모델도 아래처럼 뜬다. 정리하면? - mlflow를 docker pull해서 설치하고 inference해서 ui에서 어떻게 flow가 뜨는지랑 모델 register를 확인함.


2025-08-19 ⋯ 데이터 분석 #4 리뷰 데이터 분석

1. 목적 리뷰 데이터를 보고 - 감성 점수와 평점의 관계 - 리뷰 길이와 감성 점수의 관계 - 카테고리별 감성 차이 - Review_length가 AI 임베딩 유사도에 영향을 줄 수 있는지 인사이트 생성하기. 2. 코드 3. 생각 결측치 처리 - 나는 결측치가 하나라도 있는 샘플은 다 제거했는데 다른 사람들꺼보니깐 review_text 컬럼의 결측값을 'no review'로 대체하는 경우도 있었다. 이게 낫나? - 리뷰랑 상관없는 인사이트 (감성점수 vs 평점, 카테고리별 감성차이)에는 데이터가 확보되니깐 좋고. - 리뷰 길이가 AI 임베딩 유사도에 영향을 줄수있는지 <- 여기서는 오히려 잘못된 데이터 심어주는게 대지않나 싶음. - 리뷰길이 vs 감성점수의 관계도 마찬가지. 이상치 탐지 - 이상치 탐지는 보통 IQR을 쓰던데 나는 IQR 너무 많지 않나 한두개만 제거하면대는데? 생각해서 챗지피티한테 다른거추천해달라니깐 상하위 1% 추천해주길래 그걸로햇다. - 다른사람들 IQR 한거보니 리뷰길이는 3개 단어개수는 2개등 몇개 안되길래 결과는 비슷햇을듯. (나는 6개 제거됏엇던듯) - 근데 rating이 평점같은데 평점은 1점 줄수있지않나? 특이취향을 제거하는셈이 돼버리니깐 이건 제거안하길 잘한거같다. 이상치 box plot - before box plot그리고 after box plot도 그렷으면 더 이뻤겟다. 상관관계 - 나는 감성 점수 vs 평점, 리뷰 길이 vs 감성 점수, 리뷰 길이 vs AI 임베딩 유사도 비교에서 매번 상관계수를 그냥 구햇는데 - correlation matrix 그린 사람도 있어서 그것도 괜찮은듯하다 - 상관관계 전부다 낮게나왓는데 그건 남들도 마찬가지 같아서 다행이엇다. 감성점수 vs 평점 scatter plot - 장르별로 색깔 다르게한사람 좀 있던데 그림자체는 안이쁘지만 좋은접근같았다. category별 평균평점 - 다른사람들도 어쩔수없었겟지만 아쉬운게 y축 max를 모르니깐 플롯이 다 안이뻣다. 멀 말하고자하는지 잘 안보엿다. 아마 max 5였겠지? 근데이건 정보가 없으니깐.. 리뷰 길이 vs AI 임베딩 유사도 - 이거야말로 어케하란건지 모르겠어서 - 처음에는 랜덤하게고른(사실 첫번째) 기준 리뷰와의 유사도를 다 계산하고 리뷰길이 vs 임베딩유사도의 corr을 구했는데 - 목적이 '모든 리뷰 쌍 간의 임베딩 유사도' 또는 '임베딩 모델의 특성상 길이가 의미 표현에 미치는 영향'을 보는건데 - 내가수행한건 '기준 리뷰와의 유사도가 길이에 따라 변하는지' 본거라 데이터셋 전체의 관계를 본게아니라 한 기준점에 대해서만 수행한셈이 되길래, - 각 리뷰가 다른 모든 리뷰와 가지는 평균 임베딩 유사도를 계산하는 방식으로 다시 했었다 - 남들 어케했는지 궁금했는데 - '기준 리뷰와의 유사도가 길이에 따라 변하는지' 본사람도있고 - 임베딩 어케하는지에따라 다르다 그냥이렇게쓴사람도 있고... - 얘는 답을 몰겟음.


2025-08-09 ⋯ 생성형 AI #2 Prompt Engineering 실습 미리돌려보기

1. VOC 분석 setting - https://openrouter.ai/ - Model: GPT-5 - Temperature: 0.2 (낮게: 일관성 있는 분류 결과) - Top-k / Top-p: default - Max tokens: 1024 system prompt user prompt result | 번호 | VOC 내용 | 분류 | 판단 근거 | |------|---------|------|----------| | 1 | 복잡한 엑셀 정리에서 해방됐어요. 기존 수작업으로 처리하던 매출/비용 분석을 자동화해 시간 절약 효과를 체감했습니다. | 긍정 | - | | 2 | 회계 비전문가인 마케팅 담당자도 재무 지표의 의미를 쉽게 파악할 수 있었습니다. | 긍정 | - | | 3 | AI 추천 덕분에 세무 위험을 미리 인지했어요. 실제로 부가세 누락 가능성을 사전에 알림 받아, 실제 신고 전에 정정할 수 있었던 점이 유용했습니다. | 긍정 | - | | 4 | 실시간으로 현금흐름을 추적할 수 있어 좋았습니다. 회계팀 없이도 매주 자금 흐름을 파악하고 의사결정에 반영할 수 있었습니다. | 긍정 | - | | 5 | 처음에만 가이드를 받고 나니 반복 작업이 놀랍도록 간단해졌습니다. 설정만 끝나면 이후 반복 업무에서 자동화된 결과물이 기대 이상으로 좋네요. | 긍정 | - | | 6 | 기능은 흥미롭지만, 실제 업무에 어떻게 녹여야 할지 고민이 됩니다. 시스템이 낯설고 기존 워크플로우와 맞물리는 데 시간이 필요해 보입니다. | 부정 | 1. 적용 방법에 대한 명확한 가이드 부족 2. 기존 시스템과의 통합 어려움 | | 7 | 예쁜 그래프가 많긴 하지만 실무상 의미가 뚜렷하게 와 닿지는 않았습니다. | 부정 | 1. 시각적 효과는 있으나 실용성 미흡 2. 구체적인 데이터 분석 기능 부재 | | 8 | AI가 추천해주는 분석은 흥미로웠지만, 최종 결정은 여전히 사람이 해야겠더라고요. 완전한 자동화보다는 보조 도구로 보는 것이 현실적이라 느꼈습니다. | 부정 | 1. AI의 신뢰도 및 정확성 한계 2. 의사결정 과정에서의 자동화 미비 | | 9 | 피벗 기능이나 드릴다운 기능이 있었으면 더 좋을 것 같긴 해요. 보고서 결과는 직관적이지만, 좀 더 상세 데이터를 보고 싶을 때 아쉬움이 있습니다. | 중립 | - | | 10 | 회계 전문가 입장에서는 보안이 필요해 보이지만, 일반 사용자에겐 적합할 수도 있겠네요. 어떤 고객을 주 대상으로 할지 더 명확하면 좋겠습니다. | 중립 | - | | 11 | 일부 기능은 대기업 회계 기준에 맞춰져 있어 간편한 사용을 기대한 소규모 기업에는 과도했습니다. | 부정 | 1. 소규모 기업의 요구사항 미반영 2. 기능의 복잡성으로 인한 사용 장벽 | | 12 | AI 설명이 부족해 불안했어요. AI가 어떤 기준으로 판단했는지, 근거가 불투명해 검토에 시간이 걸렸습니다. | 부정 | 1. AI 프로세스의 투명성 부족 2. 결과 검증에 추가 리소스 소모 | | 13 | 엑셀 연동 시 포맷 오류가 잦았습니다. 업로드한 자료가 표준 포맷이 아닐 경우 오류가 자주 발생했습니다. | 부정 | 1. 데이터 호환성 문제 2. 사용자 입력 오류에 대한 유연성 부족 | | 14 | 초기 세팅에 시간이 좀 걸렸습니다. 계정과목 연결, 은행 계좌 연동 등 초기 설정을 마치기까지 다소 복잡하게 느껴졌습니다. | 부정 | 1. 초기 설정의 복잡성 2. 사용자 편의성 저하 | | 15 | 사용자별 접근 권한 설정이 더 세분화되었으면 합니다. 팀 내 다양한 역할별로 보기 권한을 구분하고 싶었는데 현재는 제한적이었습니다. | 부정 | 1. 권한 관리 기능의 제한성 2. 조직 내 역할별 맞춤형 설정 미지원 | 2. 관리를 위한 규격화된(JSON) 정보 생성 setting - https://openrouter.ai/ - Model: Gemma 3 27B (free) - Temperature: 0.2 - Top-k / Top-p: default - Max tokens: 1024 system prompt user prompt result 3. 컨설팅 리서치 & 전략 수립 setting - https://openrouter.ai/ - Model: Gemma 3 27B (free) - Temperature: 0.2 - Top-k / Top-p: default - Max tokens: 1024 system prompt user prompt result 4. 신상품 출시 프로모션(행사) 기획안 작성 setting - https://openrouter.ai/ - Model: Gemma 3 27B (free) - Temperature: 0.2 - Top-k / Top-p: default - Max tokens: 1024 system prompt user prompt result 5. 이력서 파일 검토 setting - https://openrouter.ai/ - Model: Gemma 3 27B (free) - Temperature: 0.2 - Top-k / Top-p: default - Max tokens: 1024 system prompt user prompt result 6. 비용관리 엑셀 템플릿 생성 setting - https://openrouter.ai/ - Model: Gemma 3 27B (free) - Temperature: 0.2 - Top-k / Top-p: default - Max tokens: 1024 system prompt user prompt result ~*링크가 없는데..*~ 7. 마케팅용 기술 블로그 작성 setting - https://openrouter.ai/ - Model: Gemma 3 27B (free) - Temperature: 0.2 - Top-k / Top-p: default - Max tokens: 2048 (1024하니까 말이 끊김) system prompt user prompt - 근데 첨부할 파일이 없길래 그냥했다. result


2025-08-09 ⋯ 생성형 AI #1 생성형 AI 기초 및 Prompt Engineering

RAG (p.27) RAG의 역할? - 질문을 LLM에 던지기 전에 knowledge corpus에 질문을 미리 검색한다(회사 데이터에 대한 지식 벡터 db). - 질문과 연관된 문서를 찾고 적절하게 만들어서 retrieval 던지면 의도대로 답변이 잘 나온다. LLM 출력 구성 (p.42-45) Output Length (Max Tockens) - 500자로 제한을 걸면 500자로 맞춰주는게 아니라 500자 넘으면 출력을 멈춘다. Sampling Controls - LLM은 다음에 올 단어를 고를 때 미리 계산된 사전 확률분포를 가지고 거기서 하나를 뽑는다 - temperature로 무작위성의 정도를 조절. - temperature를 0으로하면 확률이 가장 높은 단어만 거의 항상 선택 - 그림에서 원래의 확률분포가 가운데 그림처럼 생겼더라도 temp를 0으로 낮추면 첫 번째 그림처럼 가장 높은 확률에 몰빵되어 다른 선택지는 거의 배제된다. - 반대로 temperature를 2로 올리면 확률이 평평해져서 원래 1등이 아니었던 단어들도 선택될 가능성이 높아진다. - 이렇게 임의성을 높이면 흔하지 않은 단어가 튀어나올 확률이 커지고 결과가 예측 불가능해지고 창의성이 늘어난다. - TopK - 다음에 올 단어 후보 중에서 확률이 가장 높은 K개만 남기고 나머지는 버림 - K값이 크면 후보 폭이 넓어져서 더 다양한 결과가 나오고 창의성이 높아진다. - K값이 작으면 몇 개의 후보만 남아서 결과가 더 안정적이고 사실적인 방향으로 수렴한다. - TopP - 누적 확률이 특정 값 p에 도달할 때까지의 상위 후보만 남기기 예를 들어 p가 0이면 항상 가장 가능성이 높은 단어 하나만 선택하고, p가 1이면 거의 모든 단어가 후보에 포함. - TopK TopP를 통과하고나서 temperature 값이 적용된다. - temperature가 낮으면 이 후보 중에서 가장 확률이 높은 단어를 고르는 쪽으로 기울어지고, 높으면 확률 분포를 평평하게 만들어 무작위성이 커진다. 낮은 temperature에서는 사실상 Greedy decoding처럼 정답 하나를 뽑는 느낌이고, 높은 temperature에서는 후보 중에서 랜덤하게 섞어 뽑는 Sampling 방식이 된다. - 흐름예시 1. 다음 토큰 후보마다 사전확률을 계산하고 이 후보들을 확률이 높은 순으로 정렬한 뒤 TopK를 적용하면 예를 들어 K=2일 때 가장 높은 두 개만 남기고 나머지는 모두 버린다. TopP를를 쓰면 누적 확률이 p에 도달할 때까지 후보를 남기고 이후는 잘라낸다. 2. 필터링을 하고 남은 후보들에 temperature를 적용한다. temperature가 낮으면 확률 분포가 뾰족해져서 가장 가능성이 높은 후보를 뽑을 확률이 커지고, 높이면 분포가 평평해져서 확률이 낮은 후보도 비슷한 기회로 선택된다.


2025-08-07 ⋯ 데이터 분석 #3 회귀분석

Oversampling Techinique (p.69-71) - SMOTE - 소수 클래스 포인트 중 하나를 랜덤하게 고르고 - 이웃 포인트 k개를 찾고 - 이 이웃들과의 연결선을 따라 중간 어딘가에 새로운 샘플을 만든다. - 즉 원본과 이웃 사이에 위치한 점들을 생성한다. - 소수 클래스 포인트들 사이의 직선 위에서만 새로운 데이터를 만들기 때문에 실제로는 decision boundary 근처에서 중요한 데이터를 놓칠 수 있다 - Borderline-SMOTE - 소수 클래스의 포인트에 대해 kNN을 수행해서 이웃들을 찾는데 - 이때 이웃 중에서 과반수 이상이 다수 클래스인 경우 위험한 샘플(danger set)으로 간주된다 즉 이 샘플은 결정 경계에 가깝기 때문에 모델 입장에서 헷갈릴 가능성이 높다. - 그런 danger set에 대해서만 SMOTE를 수행하여 새로운 데이터를 생성해서 decision boundary 근처의 소수 클래스 밀도를 높인다. - 이렇게 하면 모델이 중요한 경계 영역에서의 소수 클래스를 더 잘 인식하도록 도와줄 수 있다. - ADASYN - 소수 클래스 포인트마다 kNN을 사용해서 가까운 이웃을 찾고 - 이웃들 중에 다수 클래스 비율 ri를 계산하고 이 ri값이 높을수록 더 많은 데이터를 그 샘플 주변에 생성한다. - 이렇게 하면 학습 데이터에서 어렵고 복잡한 영역에 더 많은 정보를 제공할 수 있기 때문에 모델이 보다 정밀한 분류를 수행할 수 있게 된다. Learning vs Inference (p.3) - Learning - 컴퓨터에게 어떤 일을 시키기 위해서는 먼저 그 일을 어떻게 해야 하는지를 가르쳐야 하는데 이게 Learning. - 예를 들어 "이 사진이 사람 얼굴인지 개 얼굴인지 맞혀봐"라고 한다고 치면 처음에는 컴퓨터가 제대로 못 맞히지만 많은 사진을 보여주고 정답을 알려주고를 반복하면서 컴퓨터는 '이런 모양이면 사람 얼굴이고', '이런 구조면 개 얼굴이구나' 하는 규칙을 배우고 - 예측을 해보고 틀리면 왜 틀렸는지 되돌아가서 네트워크 구조를 수정하는 과정을 계속 반복한다(forward/backward 과정). 이 반복을 통해 점점 더 잘 맞히는 모델로 발전한다. - Inference - 학습이 끝난 다음에 새로운 사진을 주고 "이건 뭐야?"라고 물어보는 단계. 이때는 정답을 알려주지 않는다. - 예를 들어 처음 보는 사람 얼굴 사진을 주면 학습 때 봤던 예시들과 비교해서 '이건 사람 얼굴이네'라고 추측한다. - 이 과정에서는 이미 학습된 모델만 사용하고 그 내부 구조를 바꾸지 않는다 즉 지식을 시험 보듯이 적용만 하는 단계. 상관 분석은 왜 필요할까? (p.15) - (a)와 (b)는 모두 x와 y의 평균값과 퍼짐 정도 즉 표준편차는 동일하다. - 근데 a는 데이터가 거의 직선인반면 b는 흩어져 있어서 서로의 관계가 약해 보인다. - 즉 단순한 통계량만 보면 같아 보이지만 실제로는 전혀 다른 패턴이다. - 상관분석은 두 변수 간의 방향과 강도 다시 말해 x가 커질 때 y도 커지는지 혹은 반대로 작아지는지, 그리고 그 관계가 얼마나 뚜렷한지를 숫자로 나타내서 평균과 표준편차가 말해주지 못하는 두 변수 간의 관계를 정량적으로 보여준다. 자유도 (p.18) - 일부 샘플만으로 진짜 모집단의 표준편차를 추정하려면 그냥 단순히 샘플의 평균으로 계산하면 안 되고 조정을 해줘야한다 왜냐면 샘플은 모집단 전체를 대표하지 못하기 때문에 항상 약간의 편향(bias)이 생긴다. - 그 보정법이 'n-1'이라는 자유도의 개념인데 1을 빼줌으로써 계산된 분산이 모집단 분산보다 작게 나오는 경향을 보완해즌다. - 예를 들어 10개의 데이터를 가지고 표준편차를 계산할때 10이아닌 9로 나눠서 평균을 내는데 그 이유는 실제로 자유롭게 움직일 수 있는 값이 10개 중 9개밖에 없기 때문. - 편차가 1개밖에 없을 때 즉 데이터가 하나뿐일 때? - 이때는 표준편차를 구할수없다 왜냐하면 분산을 계산할 때 0으로 나눈 값은 정해질 수 없기 때문에. - 이 경우는 부정형(indeterminate form)이라고 부른다. 말 그대로 "알 수 없다"는 뜻이다. - 올해 10% 수익이면 내년도 10% 수익이 확실하다는 의미? - 데이터가 하나밖에 없기 때문에 변동성 즉 편차를 측정할 수 없다 - 표준편차가 0이라고 해서 수익이 고정됐다는 뜻이 아니라 아예 그 불확실성을 판단할 방법이 없다. cf) n-1이 아니라 만약 -2를 하면?? - 모델이 실제보다 데이터의 불확실성을 과대평가하는셈. 상관계수와 z-score (p.20) - 각 관측치에 대해 x와 y의 z-score를 각각 계산할 수 있고 - 모든 관측치에 대해 z_x * z_y를 계산하고 다 더하고 평균낸 값과 똑같다. - 엄밀히는 n이아니라 n-1로 나눈거랑 똑같다. 인과관계 (p.25) - 인과관계는 x와 y의 시차를 틀었을때 regression의 결과가 어떻게 달라지는지를 통해 선후관계를 파악한다. 시계열 데이터 (p.33) - 시계열 데이터에서 일반적인 회귀분석의 가정이 깨진다. 그러면 어떻게 회귀분석을 돌리지? -> 시계열 분석의 시작. 회귀직선과 상관계수 (p.34-37) - 평균보다 키가 1표준편차 큰 사람은 몸무게도 1표준편차 클 것이다? - 아님 왜냐면 두 변수 간의 관계가 완벽한 선형이 아니기 때문에. 상관계수가 얼만큼 변하는지에 관여한다. - 즉 키가 평균보다 1표준편차 클 때 몸무게는 평균보다 정확히 1표준편차가 아니라 r배 만큼 증가한다. - 예를 들어 상관계수가 0.8이면 몸무게는 0.8 표준편차만큼만 증가하고 0.5라면 절반 정도만 따라간다. - 모의고사 본고사 시험 사이의 점수를 회귀분석으로 분석. - 모의고사와 본고사 점수 사이에는 어느 정도 상관관계가있다. - 근데 이게 완벽하게 1:1로 이어지지는 않는데 예를 들어 모의고사에서 160점을 받은 사람이 본고사에서는 약간 낮은 점수를 받는 경우가 많고, 반대로 모의고사에서 평균보다 낮은 110점을 받은 학생들이 본고사에서도 꼭 110점 아래를 받는 게 아니라 평균적으로는 오히려 그보다는 약간 높은 120점 정도를 받는 경향이 있다. - 그러니까 한쪽으로 극단적인 값을 보였던 사람들은 다음 측정에서는 평균 쪽으로 다시 돌아오는 듯한 모습을 보인다(평균으로의 회귀 현상) - 점수라는 건 단지 실력만 반영하는 게 아니라 시험 당일의 컨디션이나 운, 문제 유형 같은 우연한 요소들도 영향을 주기때문에 모의고사에서 아주 높은 점수를 받은 사람은 실력이 좋았을 뿐만 아니라 우연히 좋은 조건이 겹쳤을 수도 있어서 본고사에서는 점수가 조금 낮아질 가능성이 크고 반대로 모의고사에서 낮은 점수를 받은 사람도 사실은 실력보다 약간 덜 나온 걸 수 있어서 본고사에서는 평균으로 되돌아오는 경향을 보인다. - 그래프로 보면 모의고사 점수가 x축, 본고사 점수가 y축일 때, 모든 점들을 연결하면 하나의 퍼진 구름처럼 보이고 - 그 위에 회귀선을 그리면 이 선은 꼭 대각선이 아니라 약간 눕는다. 즉 극단적인 점수를 받은 사람일수록 그 다음 점수는 평균 쪽으로 더 가까워진다. 결론 - 회귀효과는 실력과 운이 섞여 있는 측정 결과에서, 두 번째 측정에서는 우연한 요소가 줄어들면서 평균으로 돌아가는 현상. 회귀모형의 평가 (p.41) 설명력 - 어떤 현상을 설명하기 위해 회귀선을 그린다 - 예를 들어 키로부터 몸무게를 예측하거나, 공부 시간으로부터 시험 점수를 예측하기위해 회귀선을 그린다. - 이때 회귀선에서 궁금한건? - 이 직선 즉 회귀식이 실제 데이터를 얼마나 잘 설명하고 있을까? - 이걸 수치화한게 결정계수 R². 오차 - 그림의 데이터를 보면 각 점(실제 관측값)이 퍼져 있고 회귀직선은 이 점들을 가장 잘 통과하는 직선. - 그리고 실제 데이터와 예측값 사이에는 늘 오차가 존재하는데 두가지로 나누면 - 회귀선으로 설명할 수 있는 부분 즉 데이터가 평균에서 얼마나 벗어났는지를 회귀선이 얼마나 잘 설명했는지(SSR) - 회귀선이 설명하지 못한 부분 즉 예측값과 실제값 사이의 차이(SSE). R²의 해석 - SSR / SST는 전체 변화량 중에서 회귀선이 설명한 비율. (R² = SSR / SST) - 회귀선이 설명하지 못한 부분 SSE 기준으로는 R² = 1 - SSE / SST. - R²이 0.6이면 전체 y의 분산 중 60%는 x로부터 설명된다는 뜻이고, 나머지 40%는 다른 요인이나 노이즈 때문이라는 뜻. cf) R²도 음수가 나온다? - 이 지표는 train data가 회귀선에 얼마나 잘붙었는지 지표이니깐 train data로 계산해야 제대로 나오는데 test data에 대고 계산하면 엉뚱한 값으로 -가 나올수 있다. 회귀분석 결과 해석 (p.45-46) - 목적: 쿠폰을 얼마나 배포하고 가격을 어떻게 책정해야 구매고객 수가 늘어나는지 확인 - 독립변수(쿠폰배포매수와 판매가격)가 종속변수(구매고객수)에 미치는 영향 분석. - 회귀분석 결과 - 회귀식 y = 0.109·x₁ + 0.003·x₂ + 274.375 (x₁은 쿠폰매수, x₂는 판매가격이고 y는 예상 구매고객수) - 쿠폰을 1장 더뿌릴수록 고객 수 0.109명 늘어난다 - 판매가격이 1원 올라가면 고객 수는 0.003명 늘어난다 - 근데 단순히 계수 값만 보고 판단하면 안 되고 그 값이 실제로 통계적으로 의미 있는지를 봐야 한다. - 쿠폰배포매수의 P-값 3.795E-05: 유의미하다 - 판매가격의 P-값은 0.813: 유의하지 않다 즉 가격이 변한다고 해서 구매고객 수가 유의미하게 달라진다고 보기 어렵다. - 판매가격 제거하고 회귀모델을 구성: y = 0.108·x + 282.892 - 조정된 결정계수는 0.735 - 즉 이 회귀모델이 전체 구매고객 수의 약 73.5%를 설명할 수 있다. - (조정: 변수의 개수를 고려해서 모델의 설명력을 평가) - 유의확률 F가 0.000: 회귀모형이 전체적으로 통계적으로 유의하다. - 적어도 하나의 독립변수가 종속변수에 영향을 준다. (실제로 2개 중 1개가 유의했음) cf) F 통계량이 유의히다 = 3개중에 하나라도 유의하다. 모두라는 표현은 아니다. 회귀방정식의 가정 - 등분산성 (p.51) - 등분산성? - x값이 작든 크든 관계없이 y값의 퍼짐 정도 즉 오차의 분산이 항상 일정해야 한다. - 예를 들어 교육수준이 10년인 사람들과 20년인 사람들 모두 소득이 평균을 중심으로 비슷하게 퍼져 있어야 한다. - 오차가 일정하다는 말은 예측이 고르게 잘 맞는다는 뜻이기도한데 회귀선에서 멀리 떨어진 사람도 있고 가까운 사람도 있지만, 그 거리(오차)의 평균적인 크기가 x의 값에 따라 달라지는것만 아니면 된다. - 실제 데이터를 보면 - 교육수준이 낮은 사람들은 대부분 소득이 비슷하게 모여 있다 예를 들어 평균이 500만 원이면 대부분이 450~550만 원 안에 있다. 그런데 교육수준이 높아지면 예를 들어 22년 이상 교육을 받은 사람들의 경우 평균은 800만 원이지만 어떤 사람은 600만 원 벌고 어떤 사람은 1200만 원 넘게 벌기도 하는 등 퍼짐이 훨씬 커진다. - 이건 등분산이 아니라 이분산이고 회귀모델의 중요한 가정을 깨뜨린다. - 이 가정이 깨지면? - 겉으로 보기엔 회귀선이 잘 맞는 것처럼 보여도 실제로는 예측의 신뢰도가 높지 않아진다 즉 평균적인 소득은 맞힐 수 있지만 개별 사람에 대해서는 예측이 크게 틀릴 수 있다. 불편 추정량 (p.53) - 어떤 값을 추정할 때 그 추정값이 평균적으로 진짜 값을 잘 맞히는지를 판단하는 기준. - 모집단의 평균이나 계수를 추정한다고 할 때 표본 데이터를 여러 번 뽑아서 그때마다 계산된 추정값들을 평균 내봤더니 그게 진짜 값과 일치한다면 그 추정량이 "편향이 없다" 즉 불편(unbiased)하다고 한다. - 추정값들이 우연히 왼쪽으로 쏠리거나 오른쪽으로 쏠리지 않고, 중심이 진짜 값을 잘 둘러싸고 있다는 뜻. - ^β2는 변수 X가 Y에 얼마나 영향을 주는지를 나타내는 기울기. - 기대값과 실제값의 차이를 제곱해서 평균내는 방식 즉 분산 공식 그대로 분산을 구한다. - 식을 보면 - 오차항 ei의 분산인 σ2에 영향을 받고 - X의 분산에도 영향을받는다. - n이 커질수록 분산이 작아진다. ​ - 결론적으로 불편 추정량의 의의? - 어떤 계수를 추정할 때 그 값이 정확하냐는 문제를 통계적으로 따질 수 있다. - 정확하다는 건 단순히 한 번의 추정이 맞았다는 뜻이 아니라 여러 번 뽑았을 때 평균적으로 참값 근처에 있다는 것(불편 추정량) - 회귀계수가 불편 추정량이라면 우리는 평균적으로 정확한 값을 얻고 있다. - 들어온중에 젤어려웠던수업.. - oversampling technique 설명들으면서 좋은알고리즘만큼 중요한게 알고리즘을 잘보여주는 예시데이터와 플롯 같다고 생각들었다. ~그런의미에서 내학위심사ppt는 어떡하지?..~ - 자유도 개념이 애매했는데 -1 왜하는지 완전이해할수있어서 좋앗고 등분산성이 헷갈렸는데 위 그림의 예시는 어쨌든 등분산성이 깨진 예시인게 맞겠지? 그러면 제대로 이해했다. - 그리고 불편 추정량을 처음들었는데 개념은 이해했는데 그래서 이게왜나오는건지는 잘모르겠다.


2025-08-06 ⋯ 데이터 분석 #2 Preprocessing

머신러닝 프로세스 (p.25) - test data가 필요한 이유? - hyperparameter tuning을 하면서 validation data는 모델이 이미 참고했다 즉 간접적으로 학습에 영향을 줬기 때문에 모델 학습 과정에서 한번도 보지않은 데이터가 필요함. Box plot (p.38) 그림이 7개 차종에서 연비 플롯이라고 가정 1. 투입됏을때 예측에 긍정적영향을 줄수잇는건? - 납작한애들. 두꺼우면 대표성이 떨어진다. 2. 2번에서 이상치들이 많으니까 잘 처리해야하겠다. 3. 만약 그림같지 않고 y축 높이가 다 비슷비슷했다면? - 이 변수들이 연비를 결정하는데 큰 영향을 못줌. 조건수 (p.52) 조건수(Condition number)? - 어떤 계산 문제에서 입력값이 조금만 바뀌어도 결과가 얼마나 크게 바뀌는지를 나타내는 값 (민감도 개념). 조건수가 큰 경우? - 데이터에 조금의 노이즈나 오차만 있어도 결과가 달라져버려서 예측이나 계산을 할 때 신뢰하기 어려워진다. - 머신러닝에서 여러 개의 입력값(피처)이 있을 때 이 피처들 사이에 스케일 차이가 너무 크거나 비슷한 성향을 가지면 조건수가 커진다. - 예를 들어 Feature 1은 0에서 10 사이 값인데 Feature 2는 1,000에서 100,000 사이 값이라면, 둘을 같은 선형 모델에 넣었을 때 Feature 2의 작은 변화가 모델 결과에 훨씬 큰 영향을 줄 수 있어서 값의 Feature 2 쪽이 모델을 지배하게 됨. - 이를 방지하기 위해 Feature Scaling이 필요하다. Ideation bin counting (p.60) Bin Counting? - 범주형 변수의 값을 단순히 숫자나 벡터로 바꾸는 것이 아니라 그 값이 결과 변수(Target)와 어떤 관련이 있는지를 통계적으로 계산해서 숫자로 바꾸는 방식 - 학생들의 이름이 있고 이 학생들이 시험을 통과했는지(합격/불합격)를 예측하려고 할 때? - 각 학생 이름을 그대로 피쳐로 쓰면(One-hot encoding) 100,000명의 학생 이름마다 새로운 열이 생기고 그러면 데이터가 너무 커지고 희소해져서 계산도 느려지고 모델도 과적합되기 쉬워진다. - Bin Counting은 이름마다 그동안 시험에 합격한 비율을 계산한다. 예를 들어 ‘김민수’라는 이름이 10번 나왔고 그 중 7번은 시험에 합격했다면, ‘김민수’라는 값은 0.7이라는 숫자로 바뀐다. - 이름이라는 범주형 값을 단순히 분리해서 다루는 게 아니라, 그 값이 결과 변수와 얼마나 관련이 있는지를 반영한 숫자로 바꾸는 것. (이름 자체는 중요한 의미를 갖는게 아니니깐) *TFT연구 feature디자인할때 항생제 인코딩 이런식으로 할걸!!!! 이런게잇엇다니


2025-08-05 ⋯ 데이터 분석 #1 기초통계

1. 기술 통계 IQR (p.34) - IQR은? 가운데 50%의 거리. - 그림 설명 - 그림의 2,3: 각각 IQR의 1.5배 선, median 값 선. - 그림의 B: ⚬ 가 많으면 특이값이 많은 것. - 그림의 1,2,3: 1,2는 각각 IQR의 1.5배 선이라고 했는데 3과의 거리가 서로 다른 이유는? 1.5배 안쪽에 데이터들이 다 분포해서. 즉max가 1.5배보다 작아서. 변이 계수(Coefficient of Variables) - 평균치가 다른 집단 비교. - 변이 계수 = 표준편차 / 평균. - 값이 작을수록? 평균 가까이에 분포한다. - 평균 관점에서 퍼짐의 해석 -> 이상치에 민감하다. - IQR은? 중앙값 관점에서 퍼짐의 해석 -> 이상치에 강건하다. 2. 추론 통계 모집단과 표본집단 - 모집단의 모수(parameters): 관심의 대상이 되는 특성. - 표본집단의 통계량(statistics): 표본을 대표하는 값. 확률분포 (이전자료 p.81) 이산형 확률변수 X - 확률질량함수(PMF): f(x)=P[X=x] - 시점(x)의 값이 확률. 연속형 확률변수 X - 확률밀도함수(PDF): ∫(a,b)f(x)=P[a≤X≤b] - 넓이(a~b)가 확률. 확률의 3가지 정의 (p.50) - 확률이란 어떤 일이 일어날 가능성을 숫자로 표현한 것. - 라플라스의 정의 - 동전을 던졌을 때 처럼 가능한 모든 경우가 서로 동등한 기회를 가지고 있다고 보고 사건이 일어나는 경우의 수를 전체 가능한 경우의 수로 나누기. - 예를 들어 동전을 던질 때 앞면이 나올 확률은 두 가지 중 하나니까 1/2. - 빈도주의적 정의 - 동전을 100번 던졌는데 앞면이 18번 나왔다면 앞면이 나올 확률은 0.18이라고 추정하듯이 실험을 여러 번 해보는 방식 - 공리적 정의 - 확률이 어떤 성질을 가져야 하는지(공리)를 정해놓고 그 성질을 만족하는 값을 확률이라고 정의. - 전체 가능한 경우의 집합(표본공간)에 대한 확률은 무조건 1이어야 하고 어떤 사건도 확률이 0보다 작거나 1보다 클 수 없다. 서로 동시에 일어날 수 없는 두 사건이 있을 때 그 둘 중 하나라도 일어날 확률은 각 사건의 확률을 더한 것과 같다(상호배반적). 68-95-99.7의 법칙 (p.59) - 어떤 데이터를 측정하거나 관찰했을 때 그 값들이 평균을 중심으로 어떻게 퍼져 있는지 그 퍼짐 정도(모양?)가 분포이고 - 종 모양의 곡선 형태, 평균을 중심으로 좌우 대칭인 형태이면 정규분포. - 정규분포에서 평균에서 '얼마나' 떨어져 있는지를 나타내는 지표가 표준편차. - 68-95-99.7의 법칙은 평균에서 몇 개의 표준편차 범위 안에 전체 데이터의 몇 퍼센트가 포함되는지를 알려주는 규칙. - 평균에서 ±1 표준편차 범위 내에는 전체 데이터의 약 68%가 들어온다. 예를 들어 평균이 100이고 표준편차가 15인 경우에서 100에서 15를 빼고 더한 값인 85부터 115까지의 범위에 전체 데이터의 68%가 몰려 있다. - ±2 표준편차 범위 안에는 약 95%의 데이터가 포함된다. 평균이 100이고 표준편차가 15이면 70부터 130 사이에 전체 데이터의 95%가 분포하고 있다. - ±3 표준편차 범위에서는 전체 데이터의 99.7%가 들어온다. 평균이 100이고 표준편차가 15인 경우 55부터 145 사이에 전체 데이터의 거의 전부인 99.7%가 존재한다. - Z-Score는 어떤 값이 평균에서 몇 개의 표준편차만큼 떨어져 있는지 수치. - 어떤 데이터가 평균보다 1 표준편차만큼 크면 Z-Score는 +1 - 평균보다 2 표준편차만큼 작으면 Z-Score는 -2 - 정규분포에서 Z-Score가 ±1인 값은 전체의 68%, ±2인 값은 95%, ±3인 값은 99.7%를 포함한다. 불확실성과 표준오차 (p.66) - 동전을 100번 던져서 앞면이 몇 번 나오는지를 보는 실험을 반복하면 매번 정확히 50번씩 앞면이 나오지 않고 어떤 때는 47번 어떤 때는 52번처럼 약간의 오차가 생기는데 - 그 오차가 불확실성, 그 크기를 수학적으로 표현한 것이 표준편차. - 한 번의 시행에서 앞면이 나올 확률이 0.5이고, 그것의 표준편차가 0.5라고 했을 때, 100번을 시행하면 표준오차도 0.5에 100을 곱한 50이 될까? 시행횟수에 비례해서 오차의 크기도 똑같이 늘어날까? - 여러 번 시행하면 평균값에 더 가까워지는 경향이 있기 때문에 시행 횟수가 많아질수록 오차는 작아진다. - 표준오차는 단순히 표준편차에 시행 횟수를 곱하는 것이 아니라, 표준편차를 루트 시행 횟수로 나눈 값으로 변한다. (제곱근의 법칙) 제곱근의 법칙 (p.67) 표본의 수가 많아지면 평균은 더 정확해지나? - 표본이 많아질수록 그 평균은 실제 전체 집단의 평균 즉 모평균에 가까워진다 - 얼마나 가까워졌는지 알려면 뭔가 수치로 표현할 수 있어야하는데 그게 '표준오차(Standard Error, SE)'이다. - 모집단의 표준편차를 알고 있다면 표준오차 SE는 = σ/√n - 모집단의 정보를 모른다면 표본의 표준편차 s를 대신 써서 SE = s/√n - 보면 표본의 수가 많아질수록 분모에 있는 n이 커지니까 전체 SE 값은 작아지고 평균이 모평균에 더 가까워진다 표본의 수가 늘어나면, 표준오차는 얼마나 줄어들까? - '제곱근 √n'에 반비례해서 줄어든다 - 표본의 수가 1일 때는 √1 = 1, 표본 수가 4면 √4 = 2, 9면 √9 = 3, 16이면 √16 = 4처럼 증가. 그래서 표본의 수가 4배여야 표준오차는 절반으로 줄어든다. - 그래서 우리가 어떤 평균을 구할 때 표본이 많으면 더 정밀해지는 건 맞지만 그 정밀도는 점점 천천히 좋아짐 마치 10명으로 평균을 구할 때보다 100명으로 구할 때 더 정확해지긴 하는데 그 차이가 그렇게 크진 않은데 왜냐하면 √10은 약 3.16이고, √100은 10이라서 약 3배 차이만 나니까. 68-95-99.7 법칙 - 표준편차가 5인 경우 평균 ± 1σ(표준편차)인 구간, 즉 45-55에는 약 68%의 확률로 데이터가 들어오고, 평균 ± 2σ인 40-60에는 약 95%의 확률로 들어온다는 규칙 - 어떤 동전 던지기 실험을 100번 반복했더니 평균이 50이고 표준오차가 5였다면? - 표본 평균이 40에서 60 사이에 있을 확률이 약 95%. (95% 신뢰구간) - 나는 평균이 50이라고 믿는데 95% 확률로 진짜 평균은 40~60 사이에 있을 거라고 신뢰가능한구간 - 표본의 크기가 커지면 신뢰구간은 어떻게 될까? - 표본이 커지면 표준오차가 줄어들고 신뢰구간도 좁아진다. 즉 우리가 더 많은 데이터를 가지고 있다면 진짜 평균을 더 좁은 범위로 정확히 예측할 수 있다. 중심극한정리 (p.71) - 동전을 한 번 던지면 앞면이 나오거나 뒷면이 나오고 확률이 50%씩이다. - <실험1> 동전을 5번 던지면 - 앞면이 5번 중 2번일 수도 있고, 4번일 수도 있고, 완전히 랜덤처럼 보이고 히스토그램으로 그려보면 이상한 모양이 나오는데 표본수가 적어서그렇다. - 동전을 500번 던지고 히스토그램으로 그려보면 가운데 몰린 종 모양이 된다. - <실험2> "동전을 5번 던지고, 앞면이 몇 번 나왔는지를 기록"을 한번 하는게아니라 수백 번 반복하고 - 마찬가지로 "10번 던지고 기록", "100번 던지고 기록", "500번 던지고 기록"을 히스토그램으로 그리면 횟수가 많아질수록 분포가 가운데 몰린 정규분포 형태가된다. (중심극한정리) - 중심극한정리 - 어떤 분포에서 나오는 데이터든지 그 평균값들을 계속해서 모으면, 그 평균들의 분포는 (처음 데이터 자체가 정규분포가 아니더라도) 정규분포를 따른다. - 유의점 - <실험2>에서 500번 던지고 기록한다는건 히스토그램에서 막대가 500개라는게 아니라 500개의 평균을 N번 그려서 막대는 N개이고 엄밀히는 "500번 던지고 N번 기록한다"이다. - <실험1>에서 500번 던진 히스토그램이 종 모양이되는건 중심극한정리를 보여주는게 아니라 이항분포의특성을 보여준다. (p.75-76) 1이 나온 횟수의 분포 - 주사위를 10번 던지면 1이 나올 수 있는 횟수 분포는 불규칙하고 히스토그램도 불규칙함. - 주사위 던지기를 600번씩 반복해서 그때마다 '1이 나온 횟수'를 기록하고 그 결과를 모아 히스토그램을 그리면? - 분포는 점점 종 모양 정규분포에 가까워진다. - 평균(x축의)은 대략 전체 횟수의 1/6인 100 근처가 된다.(주사위의 한 면이 나올 확률이 1/6) 여론조사 - 여론조사에서 1,000명에게 물었더니 63%가 어떤 후보를 지지한다고 나왔다고 해보자. 다음에 또 1,000명을 조사하면 정확히 63%가 나올까? - <질문1> 재조사 시 동일한 결과는 보장하지 못하지만, 구간을 잡으면 신뢰할 수 있지 않을까? - 다음 조사에서 63%를 보장하지 못하지만 표준오차와 중심극한정리를 바탕으로 구간은 찾을수있다. 95% 신뢰수준이라면 “우리가 100번 이런 조사를 반복했을 때 95번은 진짜 값이 이 구간 안에 들어간다”고 말할 수 있다. - <질문2> 샘플링 불확실성(uncertainty)을 수량화 즉 불확실성의 정량화? - 뽑은 표본은 항상 약간씩 다르고 오차가 존재하지만 그 오차가 얼마나 될지를 수식으로 계산해서 수량화할 수 있고 그게 불확실성의 정량적 추론. - <질문3> 어떻게 구간을 잡을것인가? - 표본 비율 ± (임계값 × 표준오차) - 95% 신뢰구간을 구하고 싶다면? (z = 1.96 / p = 0.63, n = 1000일때) - SE = √(p(1-p)/n) = √(0.63 × 0.37 / 1000) ≈ 0.0153 - 신뢰구간 = 0.63 ± 1.96 × 0.0153 ≈ (0.600, 0.660) - 진짜 지지율은 약 60.0% ~ 66.0% 사이일 것이다. - <질문4> 95% 신뢰구간의 의미는? - 이 사람의 지지율이 95% 확률로 이 구간 안에 있다 (x) - 이런 방식으로 표본을 100번 추출해서 구간을 만들면 그 중 약 95번은 진짜 값(모비율)을 포함할 것이다. (표본이 아니라 추정 방법에 대한 신뢰) 유의수준 (p.87) - 유의수준? - 내가 어느 정도 위험을 감수하고 기각할지를 정하는 수치. - α = 0.05 면 5% 정도는 내가 틀릴 수도 있다는 걸 감안하고 귀무가설을 기각하겠다 즉 실제로는 귀무가설이 맞는데도 5% 확률로 잘못 기각할 수 있다는 걸 받아들이겠다. - α = 0.01로 정했다면? 나는 실수할 확률을 1% 이하로 줄이겠다. - 유의수준 & 신뢰도 - α = 0.05는 95% 신뢰도. (95% 확률로 맞을것이다 x 95% 확률로 이 방법을 믿는다 o) - α = 0.01이면 99% 신뢰도 / α = 0.1이면 90% 신뢰도. - 유의수준 & Z-값 - Z-값: 정규분포에서 얼마나 극단적인 값이 나와야 기각할지를 결정하는 경계값 - α = 0.1 → Z ≈ 1.645 - α = 0.05 → Z ≈ 1.96 - α = 0.01 → Z ≈ 2.575 - 유의수준 α가 작아질수록 더 멀리 떨어진 극단적인 데이터가 나와야 귀무가설을 기각할 수 있다. 중심극한정리는 모든 분포에 다 유효한가? 그러면 분포가 없는 경우에도 유효한가? - 중심극한정리가 적용되기 위해선 표본들이 서로 독립적으로 추출 / 각 표본은 같은 분포 / 모집단의 유한한 평균과 분산 / 표본의 크기가 충분히 클 것 (n ≥ 30) - 모집단의 분포가 존재하지 않거나, 분포는 있지만 기댓값이나 분산이 무한하다면, 중심극한정리는 성립하지 않음. - Cauchy 분포: 평균, 분산이 정의되지 않아서 중심극한정리 성립 안 함 - 무한 분산을 가진 분포 (heavy-tailed distributions) 적용 불가 모집단에 분포가 존재한다의 의미? - 기댓값(평균)과 분산 같은 통계량을 계산할 수 있다. 평균이랑 분산을 계산못할수도있나? - 평균이 너무 자주 바뀌면 분산이 무한할수있다(=계산할수없다). - 예시: 가상의 시험에서 대부분 학생은 80~90점 사이인데 한번씩 누가 10만 점, 1억 점을 받는다. 말도 안 되게 큰 점수가 자주 나오면 평균을 구할 수는 있더라도 평균이 계속 바뀌고 평균 근처에서 얼마나 퍼져 있는지를 따지는 분산도 엄청 커져서 계산이 불가해진다. 결론 중심극한정리는 "대부분 학생은 80~90점 사이인데 한번씩 누가 10만 점, 1억 점을 받는다" 같은 상황이나 Cauchy 분포만 아니면 모두 적용된다? (왜냐면 기댓값과 분산은 데이터만 있으면 무조건 계산 가능하므로 언급한 케이스가 아니면 모집단의 분포가 없기는 어려움)