게시글
질문&답변
2024.04.25
DBSCAN 실습 결과
클러스터링이 "잘 되었는지"를 평가하기 위해서는 실제 데이터와 도메인 지식을 바탕으로 한 데이터에 관한 이해가 필요합니다. 실습 교재에서 제가 임의로 생성한 데이터 포인터는 random 하게 생성한 sample 들이므로 단순히 DBSCAN 함수 사용법을 이해하기 위한 목적이므로 검증에 큰 의미는 없습니다. 산점도의 모습은 비지도 학습이 잘 된 것으로 보입니다. 좋은 질문 감사합니다.
- 0
- 1
- 26
질문&답변
2024.04.25
DBSCAN 질문
R의 'unit'은 데이터 포인트 간의 거리를 측정하는 데 사용되는 단위입니다. 단위는 데이터의 특성에 따라 달라집니다. 예를 들어, 위치 데이터의 경우 미터나 킬로미터가 될 수 있고, 다른 유형의 수치 데이터에서는 그 데이터의 단위를 따릅니다. 따라서 데이터 포인트의 "점 크기"를 의미하는 것이 아니라, 사용된 데이터의 측정 단위(예: 거리, 금액 등)를 말합니다. Border Point는 R 안에 최소 M개 미만의 이웃을 가지지만, Core Point의 영향 범위 내에 존재하는 포인트를 의미합니다. 단순히 R 안에 다른 데이터 포인트가 하나라도 있으면 Border Point가 되는 것은 아닙니다. 반드시 그 R 안에 있는 다른 포인트 중 적어도 하나가 Core Point여야 합니다. 좋은 질문 감사합니다.
- 0
- 1
- 26
질문&답변
2024.04.24
heatmap에서 numeric_only=True
corr() 함수는 기본적으로 수치형 데이터만을 대상으로 상관 계수를 계산합니다. numeric_only=True 는 필수적인 옵션은 아니지만, 코드의 의도를 명확히 전달하기 위해 사용되었습니다. 생략한 경우는 default parameter 가 적용 되므로 동일한 결과가 나옵니다. 감사합니다.
- 0
- 1
- 31
질문&답변
2024.04.24
Feature Scaling 강의 질문 있습니다!
나이와 같은 연속적인 수치 데이터에서 결측치를 중간값으로 대체하는 것은 통계적으로 이상치의 영향을 줄이면서 전체 데이터의 분포를 유지하는 데 도움이 됩니다. 또한 나이는 생존 여부 판단에 중요한 변수일 수 있기 때문에, 단순히 이 값을 제거하기보다는 적절한 추정값으로 채우는 것이 모델의 성능을 유지하는 데 도움이 될 수 있습니다. Embarked 는 두개 밖에 결측치가 없으므로 전체 데이터셋에 미치는 영향이 크지 않아 제거해도 되는 경우가 많습니다. Fare 의 경우 값의 범위가 넓으므로 로그 변환은 큰 값의 영향을 줄이고, 모델이 데이터를 더 잘 이해하도록 도움을 줍니다. 그런데 Parch (부모와 자녀의 수)나 SibSp (형제, 배우자의 수) 같은 다른 변수들도 비슷하게 치우친 분포를 가질 수 있으나 이러한 변수들은 원래부터 정수 값을 가지며, 대부분의 값이 0 또는 매우 낮은 숫자로 구성되어 있습니다. 이러한 경우, 로그 변환을 적용하면 많은 값들이 -inf (음의 무한대)로 변환되거나 변환 후의 효과가 미미합니다. 4. pop 메소드를 사용하면 X_train 과 X_test 에서는 Survived 가 제거되며, 동시에 y_train 과 y_test 에는 Survived 의 값이 저장됩니다. 실제로 Jupyter notebook 에서 실제로 실행해 보세요. 감사합니다.
- 0
- 1
- 46
질문&답변
2024.04.24
Feature Scaling
테스트 데이터( X_test )에 대해서 새로운 통계값(평균, 분산)을 계산하는 fit 을 수행하지 않는 이유는 모델 평가 시 테스트 데이터가 학습 과정에서 사용된 데이터와 동일한 조건에서 평가되어야 하기 때문입니다. 즉 X_train 데이터로 만든 내 모델이 실전에서 보지 못한 새로운 데이터를 입력 받았을 때 정상 처리하려면 학습 데이터에 했던 것과와 동일한 전처리(Standard Scaling 또는 MinMax Scaling)를 새로운 데이터에도 해 주어야 하는데 이때 새로운 데이터의 전처리에 적용할 평균/분산 (Standard Scaling의 경우) 또는 최대/최소값(MinMax Scaling의 경우) X_train에서 구해 놓았던 값을 그대로 사용한다는 의미 입니다. 만약 새로운 데이터의 통계적 수치가 과거 모델을 만들었던 X_train의 통계 수치와 크게 바뀌었다면 데이터의 분포가 바뀐 것이니 새로운 데이터에 맞추어 모델을 새롭게 훈련 시켜야 합니다. 그 것이 인공 지능 모델이라는 소프트웨어의 유지 보수 과정입니다. 감사합니다.
- 0
- 1
- 28
질문&답변
2024.04.24
pd.Series
판다스(Pandas)는 시각화 기능을 제공하므로 특성 중요도를 pd.Series 객체로 만들어주면, 이를 바로 .plot() 메서드 등을 사용하여 시각화할 수 있습니다. 또한, .sort_values() 메서드를 사용하여 특성의 중요도를 정렬할 수 있고, 이를 바탕으로 상위 N개의 가장 중요한 특성만을 시각화하는 등의 작업을 손쉽게 수행할 수 있습니다. 감사합니다.
- 0
- 1
- 37
질문&답변
2024.04.23
Transformer 번역기 부분에 대해 질문 있습니다.
Transformer 모델에서 mask를 사용하는 목적은 두 가지입니다. 하나는 입력 시퀀스에 있는 패딩(padding) 토큰을 마스킹하여 어텐션(attention) 메커니즘이 이를 무시하도록 하는 것이고, 다른 하나는 디코더(decoder)에서 미래의 토큰을 예측하는 데 있어 아직 예측하지 않은 토큰을 참고하지 않도록 하는 것입니다. 1. 인코더 파트에서의 마스킹 (mask=None): - 마스킹이 없는 경우는 일반적으로 입력 시퀀스에 패딩이 없거나, 특정 구현에서 패딩을 고려하지 않아도 되는 상황을 의미합니다. Transformer 의 입력은 가변 길이인 tf.RaggedTensor 로 되어 있어 입력을 고정 길이로 맞추기 위한 패딩이 없으므로 mark=None으로 합니다. 2. 디코더에서의 마스킹: - 디코더는 두 종류의 마스킹을 사용합니다: 하나는 인코더로부터의 출력을 처리할 때 사용하는 패딩 마스크이고, 다른 하나는 디코더 내부에서 미래의 토큰 정보를 숨기기 위한 캐주얼(causal) 마스크입니다. - 첫 번째 어텐션(sub-layer)에서 캐주얼 마스크는 올바르게 적용되며, 이는 디코더가 각 위치에서 그 위치 이전의 토큰들만 참고하도록 합니다. - 두 번째 어텐션(sub-layer)에서 패딩 마스크가 None으로 나타나는 것은, 인코더 파트와 마찬가지로 tf.RaggedTensor 로 되어 있어 입력을 고정 길이로 맞추기 위한 패딩이 없으므로 mark=None으로 합니다. 감사합니다.
- 0
- 1
- 28
질문&답변
2024.04.15
Residual Error
오차 가 이론적, 참값과 관측값 사이의 차이라면, 잔차 는 실제 모델에서 사용되는 예측값과 관측값 사이의 차이라는 점입니다. 따라서 잔차는 모델이 얼마나 잘 맞는지를 평가할 수 있는 실제 측정치이며, 오차는 보다 일반적인 용어입니다. 머신러닝과 통계학에서는 모델의 예측값고 지도학습 label 간의 차이를 잔차라고 표현합니다.
- 1
- 1
- 41
질문&답변
2024.04.15
categorical 변수의 수치화
성별을 여자 칼럼과 남자 칼럼으로 나누어 표현하는 것은 원-핫 인코딩(one-hot encoding) 을 통해 카테고리 간에 계층적 혹은 수치적 대소관계가 없도록 하기 위해서입니다. 성별을 단일 숫자(예: 남자=1, 여자=0)로 표현하게 되면, 모델이 수치적 대소관계(남자 > 여자)를 잘못 학습할 위험이 있습니다. 반면, 서수형(ordinal) 카테고리 는 그 값에 따라 순서나 등급을 나타내는 특성을 가지기 때문에, 사이즈와 같은 카테고리에는 L, M, S를 각각 3, 2, 1과 같이 숫자로 표현하는 것이 적합할 수 있습니다. 요약하면, 순서가 중요한 카테고리는 ordinal 인코딩을, 순서가 중요하지 않은 카테고리는 원-핫 인코딩을 사용하는 것이 좋습니다. 좋은 질문 감사합니다.
- 0
- 1
- 45
질문&답변
2024.04.07
201_classify_text_with_bert_tfhub_Kor.ipynb 오류
다음과 같이 수정하시면 됩니다. (기존) !pip install -q -U tensorflow-text !pip install -q tf-models-official (수정) !pip install -U "tensorflow-text==2.13.*" !pip install "tf-models-official==2.13.*" 이 교재는 Google Tutorial의 https://www.tensorflow.org/text/tutorials/classify_text_with_bert 교재를 IMBD 대신 한글 naver movie 데이터로 제가 customizing 한 것인데 원래의 영문 tutorial 도 수정이 되어있네요. github 교재 source도 수정해 놓았습니다. 불편을 드려 죄송합니다. 제가 새롭게 고쳐서 실행해 보니 T4 GPU 기준 6시간 걸리네요. 예전 보다 시간이 훨씬 길어졌는데 아마도 Google 에서 무료 GPU 에 대한 지원을 낮춘 것으로 보입니다. 감사합니다.
- 0
- 2
- 71