[오늘의 일지]
머신러닝 녹화 강의 - 머신러닝을 위한 개념 수업 (Dimensionality Reduction, Anomaly Detection)
[상세 내용]
머신러닝을 위한 개념
Dimensionality Reduction
- Dimensionality reduction (차원 축소)은 데이터의 특성 (차원) 수를 줄이는 기술을 가리킵니다. 이 기술은 데이터 공간의 차원을 감소시켜 데이터를 더 효율적으로 다루고 시각화하거나, 머신 러닝 및 데이터 분석 작업을 단순화하는 데 사용됩니다. 이를 통해 데이터의 복잡성을 줄이고 중요한 정보를 보존하려고 합니다.
Curse of dimensionality
- Curse of dimensionality(차원의 저주)는 고차원 데이터 공간에서 발생하는 다양한 문제와 어려움을 나타내는 용어입니다. 이 용어는 주로 데이터 분석, 머신 러닝 및 최적화 분야에서 사용되며, 고차원 데이터가 가지는 특성과 문제점을 설명하는 데 쓰입니다.
- 데이터 희소성: 고차원 공간에서는 데이터 포인트 간의 거리가 멀어지기 때문에 데이터가 희소해집니다. 이로 인해 데이터 포인트 간의 관계를 파악하기 어려워집니다.
- 계산 비용 증가: 차원이 증가함에 따라 거리 계산, 유사성 측정 및 모델 훈련과 같은 작업의 계산 비용이 기하급수적으로 증가합니다. 이로 인해 고차원 데이터를 처리하는 데 많은 컴퓨팅 자원이 필요합니다.
- 과적합: 고차원 데이터에서 모델을 학습할 때 과적합 (overfitting) 문제가 발생하기 쉽습니다. 적은 수의 관측치에 비해 너무 많은 특성이 있으면 모델이 훈련 데이터에 너무 맞춰져 새로운 데이터에 일반화하기 어려워집니다.
- 피쳐 선택과 차원 축소의 필요성: 고차원 데이터를 다룰 때는 피쳐 선택 또는 차원 축소 기술을 사용하여 중요한 특성을 식별하고 불필요한 차원을 제거해야 할 수도 있습니다.
- 시각화의 어려움: 고차원 데이터를 시각화하거나 인간이 이해하기 쉬운 형태로 표현하기 어려워집니다. 이로 인해 데이터의 구조와 패턴을 이해하기 어려울 수 있습니다.
지도학습을 통한 차원 축소
- Embedded : Regularized linear model, Random Forest using feature importance score
- Filter : X’s와 Y의 Correlation, Chi-squared Test, Anova, Variance inflation Factor
- Wrapper : Forward Selection, Backward Elimination, Stepwise Selection
비지도학습을 통한 차원 축소
- 고차원에서의 Variance, Distance 등을 저차원에서도 그 정보를 그대로 보존할 수 있도록 학습함
- 비지도학습의 이상적인 차원 축소는 고차원에서의 데이터가 저차원에서의 데이터와 똑같아야 함
- Feature Extraction
차원 축소 방법
PCA
- 주성분 분석(Principal Component Analysis, PCA)은 다변량 데이터 집합을 주성분이라고 하는 선형적으로 독립적인 변수로 변환하는 통계적 기술입니다. PCA를 사용하면 데이터의 차원을 줄이고 데이터의 구조를 파악할 수 있으며, 주로 데이터 압축, 시각화, 패턴 인식 및 머신 러닝 모델링에서 사용됩니다.
- 차원 축소: 고차원 데이터를 저차원으로 변환하여 데이터를 더 효율적으로 저장 및 처리할 수 있도록 합니다.
- 정보 보존: 주성분은 데이터에서 가장 중요한 정보를 포함하며, 정보의 손실을 최소화하면서 데이터를 변환합니다.
- 노이즈 제거: 주성분은 데이터의 주요 신호를 강조하고 노이즈를 제거할 수 있습니다.
PCA의 원리
- 데이터 표준화: 데이터의 각 변수를 표준화하여 평균이 0이고 분산이 1인 데이터로 변환합니다.
- 공분산 행렬 계산: 표준화된 데이터를 기반으로 공분산 행렬을 계산합니다. 이 행렬은 데이터 간의 관계를 나타냅니다.
- 고유값 분해: 공분산 행렬을 고유값 분해하여 고유값과 고유벡터를 구합니다. 고유벡터는 주성분을 나타내며, 고유값은 주성분의 중요성을 나타냅니다.
- 주성분 선택: 주성분 중에서 주요한 주성분을 선택하거나 원하는 차원의 수에 따라 주성분을 선택합니다.
- 주성분으로 데이터 변환: 선택한 주성분을 사용하여 원래 데이터를 변환합니다.
T-SNE
- T-SNE (t-distributed stochastic neighbor embedding)는 데이터 시각화와 차원 축소에 사용되는 비선형 차원 축소 기술 중 하나입니다. t-SNE는 고차원 데이터를 저차원 공간으로 변환하여 데이터 간의 관계와 패턴을 시각적으로 이해하기 쉽게 만듭니다.
- 비선형 차원 축소: t-SNE는 고차원 데이터의 비선형 구조를 보존하려고 시도합니다. 이는 데이터의 복잡한 구조와 군집을 잘 나타내는 데 도움이 됩니다.
- 군집 감지: t-SNE는 데이터 포인트 간의 유사성을 고려하여 군집을 형성하려고 합니다. 이를 통해 비슷한 데이터 포인트가 저차원 공간에서 가까이 모이게 됩니다.
- 고차원 데이터 시각화: t-SNE는 고차원 데이터를 2D 또는 3D 공간으로 투영하여 시각적으로 데이터의 구조를 파악하기 쉽게 합니다.
- 정보 보존: t-SNE는 주어진 데이터의 구조와 패턴을 최대한 보존하려고 노력합니다. 이는 데이터를 저차원으로 축소하더라도 중요한 정보를 유지하려는 노력을 의미합니다.
T-SNE의 원리
- 유사성 계산: 원래 데이터 포인트 간의 유사성을 측정합니다. 일반적으로 유클리드 거리 또는 가우시안 유사성 메트릭을 사용합니다.
- 저차원 공간 초기화: 저차원 공간에서 데이터 포인트를 무작위로 초기화합니다.
- 유사성 분포 계산: 고차원과 저차원 공간에서의 유사성 분포를 계산합니다. 저차원에서의 유사성 분포를 고차원에서의 유사성 분포와 유사하게 만드는 것이 목표입니다.
- 경사 하강법: 저차원 포인트의 위치를 조정하여 유사성 분포를 최대한 일치시키는 데 경사 하강법을 사용합니다.
번외로 딥러닝에서 사용하는 Autoencoder
- Autoencoder(오토인코더)는 인공 신경망 기반의 비지도 학습 모델로, 데이터 압축, 차원 축소, 특징 추출 및 데이터 재구성에 사용되는 기술입니다. Autoencoder는 입력 데이터를 압축하고 다시 원본 데이터와 유사한 형태로 재구성함으로써 학습합니다. 이런 작업을 통해 데이터의 중요한 특성을 추출하거나 노이즈를 제거하는 데 사용할 수 있습니다.
- 인코더 (Encoder): 입력 데이터를 저차원 표현(코딩 또는 잠재 공간)으로 변환합니다. 인코더는 데이터를 저차원 공간으로 압축하고 중요한 특성을 추출합니다.
- 디코더 (Decoder): 인코더에서 생성된 저차원 표현을 사용하여 원래 입력 데이터를 재구성합니다. 디코더는 인코더에서 생성된 잠재 공간의 정보를 활용하여 입력 데이터를 복원합니다.
Autoencoder의 학습 과정
- 재구성 오차 최소화: Autoencoder의 목표는 원본 데이터와 재구성된 데이터 사이의 오차를 최소화하는 것입니다. 학습 과정에서 인코더와 디코더의 가중치를 조정하여 이 오차를 최소화하도록 합니다.
- 차원 축소 및 특성 추출: 학습된 Autoencoder는 인코더 부분에서 생성된 저차원 표현을 사용하여 데이터를 특징 추출하거나 차원을 축소하는 데 활용됩니다.
Anomaly Detection
- Anomaly detection (이상 탐지)은 데이터 집합에서 일반적인 패턴과는 다르거나 예상치 못한 이벤트를 감지하는 기술 또는 분석 과정을 가리킵니다. 이상 탐지는 데이터의 이상치 또는 이상 행동을 식별하고 분리하여 데이터의 정상적인 동작을 모니터링하거나 이상 사건을 경고 또는 조치를 취하기 위한 다양한 응용 분야에서 사용됩니다.
- 보안: 이상 탐지는 네트워크 보안에서 침입 감지 시스템(IDS)과 같이 악의적인 활동을 탐지하거나, 결제 시스템에서 부정 거래를 식별하는 데 사용됩니다.
- 제조 및 산업: 제조 과정에서 장비 고장 또는 생산 라인에서 이상한 작동을 탐지하여 생산량을 향상시키거나 장비 유지보수를 최적화합니다.
- 금융: 금융 분야에서는 신용 카드 거래에서 부정 거래, 특히 결제 사기를 탐지하는 데 이상 탐지가 사용됩니다.
- 의료: 의료 분야에서는 환자의 건강 상태를 모니터링하고 이상 징후를 조기에 발견하여 질병의 조기 진단과 환자 모니터링에 사용됩니다.
- 환경 모니터링: 이상 탐지는 대기 오염, 수질 오염 및 자연재해와 같은 환경 변수에서 이상 사건을 감지하여 환경 보호에 사용됩니다.
- 네트워크 모니터링: 네트워크 이상 탐지는 네트워크 데이터 트래픽에서 불법적인 또는 악의적인 활동을 감지하고 네트워크 보안을 강화하는 데 사용됩니다.
Outlier와 Abnormal의 차이
Outlier
- Outlier는 주어진 데이터 집합에서 다른 데이터 포인트와 크게 다른 특성을 가지는 데이터 포인트를 나타냅니다.
- 이상치는 통계적으로나 도메인 지식을 기반으로 정의될 수 있으며, 주어진 데이터 분포에서 튀어나온 데이터 포인트로 간주됩니다.
- 이상치는 대개 정상 데이터와 비교하여 통계적으로 특이한 값으로 정의되며, 종종 노이즈, 오류, 희귀한 사건 또는 실제로 중요한 패턴을 나타낼 수 있습니다.
Abnormal
- Abnormal은 주어진 맥락 또는 도메인에서 예상치 못한 것 또는 정상 범주에서 벗어난 것을 나타냅니다.
- 이것은 넓은 의미로 사용되며, 특정 상황에서 정상이라고 간주되는 것을 기준으로 비정상을 정의합니다.
- 예를 들어, 의학에서 정상 범주에 속하지 않는 생체적 이상 현상을 비정상으로 간주합니다. 이때 이상치(이상치)는 그저 통계적으로 이상한 값을 가지는 것이 아니라, 실제로 비정상이라고 판단되는 것을 의미합니다.
Anomaly Detection 종류
Label 1 - Supervised Anomaly Detection
- 이진 분류 문제: 주어진 데이터는 이상(abnormal) 또는 정상(normal) 클래스 중 하나에 속해야 합니다. 이러한 문제는 이진 분류(binary classification) 문제로 간주됩니다.
- 다양한 이상(abnormal) 종류: 이상(abnormal) 데이터의 종류가 다양하다면, 이진 분류 문제에서 다중 클래스 분류(multi-class classification) 문제로 확장될 수 있습니다. 각 이상(abnormal) 유형에 대한 라벨이 필요하게 됩니다.
- 소수 클래스 문제 및 불균형 데이터: 이상(abnormal) 데이터는 정상(normal) 데이터에 비해 상대적으로 적을 수 있습니다. 따라서 이러한 상황은 소수 클래스 문제로 간주되며, 클래스 불균형(class imbalance) 문제가 발생할 수 있습니다. 이를 해결하기 위해 적절한 샘플링 전략 및 평가 메트릭이 필요합니다.
- 성능평가에서 Recall 관점: 이상(abnormal) 데이터가 매우 적기 때문에 정확도(Accuracy, ACC)를 주요 성능 평가 지표로 사용하는 것보다는 재현율(Recall)과 같은 지표를 고려해야 합니다. 이렇게 함으로써 모델이 이상 데이터를 놓치지 않고 잘 감지하는 더 중요한 목표를 달성할 수 있습니다.
Label 2 -Semi-Supervised Anomaly Detection
- 이상(abnormal) 라벨 없음: 이 방법은 정상(normal) 데이터에 대한 라벨이 주어지지만 이상(abnormal) 데이터에 대한 라벨이 주어지지 않은 상황에서 사용됩니다.
- 정상 데이터 패턴 학습: 주로 정상(normal) 데이터의 패턴을 학습하여 정상 데이터의 일반적인 특성을 파악합니다. 이러한 학습은 주로 정상 데이터의 분포를 모델링하는 데 집중됩니다.
- Discriminative Boundary 설정: Semi-Supervised Anomaly Detection은 정상 데이터를 둘러싸고 있는 경계(구분선 또는 경계)를 설정합니다. 이 경계는 정상 데이터의 영역을 정의하며, 이 경계를 가능한 한 좁게 설정하여 정상 데이터와 이상 데이터를 구별합니다.
- 이상(abnormal) 데이터 감지: 설정된 경계를 기반으로 새로운 데이터가 정상 데이터 영역 안에 있는지 또는 경계 바깥에 있는지를 확인하여 이상(abnormal) 데이터를 감지합니다. 경계 바깥에 있는 데이터는 이상 데이터로 분류됩니다.
- One-Class SVM: 이러한 Semi-Supervised Anomaly Detection 작업을 수행하는데 가장 일반적으로 사용되는 알고리즘 중 하나는 One-Class SVM입니다. One-Class SVM은 주로 하나의 클래스(정상 클래스)만을 모델링하고 다른 클래스(이상 클래스)의 데이터를 탐지하는 데 사용됩니다.
3-Sigma Rule와 Box Plot
3-Sigma Rule
- 데이터의 평균(Mean)과 표준 편차(Standard Deviation)를 계산합니다.
- 데이터가 정규 분포를 따른다고 가정하면, 대부분의 데이터 포인트는 평균 주변에 집중되어 있을 것입니다. 일반적으로 정규 분포에서 약 68%의 데이터는 평균에서 표준 편차의 범위 내에 있으며, 약 95%는 평균에서 두 배의 표준 편차 범위 내에 있고, 약 99.7%는 평균에서 세 배의 표준 편차 범위 내에 있습니다.
- 따라서 3-Sigma Rule에서는 평균에서 세 배의 표준 편차 범위를 벗어나는 데이터 포인트를 이상치로 간주합니다.
Box Plot
- 상자 (Box): 상자는 데이터의 중간 50%인 중앙값(Median)과 제 1사분위수(Q1)와 제 3사분위수(Q3)를 포함합니다. 중앙값은 데이터를 작은 값부터 큰 값으로 정렬했을 때 가운데에 있는 값으로, 데이터의 중심 경향을 나타냅니다. Q1은 데이터의 하위 25%를 나타내며, Q3은 데이터의 상위 25%를 나타냅니다. 상자의 길이는 데이터의 중간 50% 범위를 나타냅니다.
- 수염 (Whiskers): 상자 위와 아래에 위치한 수염은 상자의 크기를 벗어나는 데이터 포인트의 범위를 나타냅니다. 일반적으로 수염의 길이는 상자의 크기의 1.5배 정도로 설정되며, 범위를 벗어나는 데이터 포인트는 이상치로 표시될 수 있습니다.
- 이상치 (Outliers): 수염 밖에 위치한 데이터 포인트는 이상치로 간주됩니다. 이상치는 데이터의 분포에서 크게 벗어나는 값을 나타내며, 주목해야 할 수 있는 데이터 포인트입니다.
LOF
- LOF는 "Local Outlier Factor"의 약어로, 데이터 포인트의 이상치를 탐지하기 위한 통계적 방법 중 하나입니다. LOF는 데이터의 밀도를 기반으로 이상치를 식별하는 데 사용됩니다. 이것은 클러스터링과 이상치 탐지의 조합으로 볼 수 있으며, 데이터 포인트가 그 주변의 이웃 데이터 포인트와 비교하여 얼마나 "이상한"지를 측정합니다.
LOF의 원리
- 이웃 정의: LOF는 각 데이터 포인트에 대한 이상치를 계산하기 위해 이웃 데이터 포인트를 사용합니다. 이웃 데이터 포인트는 주어진 데이터 포인트와 가까운 데이터 포인트들로 정의됩니다. 일반적으로 유클리드 거리나 다른 거리 측정 방법을 사용하여 이웃을 정의합니다.
- k-거리(k-Distance): 각 데이터 포인트에서 가장 가까운 이웃을 찾습니다. 이것은 k-거리라고 불립니다. k-거리는 이상치를 판단하는 데 사용됩니다.
- k-거리 이웃 정의: k-거리 이내에 있는 데이터 포인트들을 이웃 데이터 포인트로 선택합니다. 이것이 LOF를 계산하기 위한 기본 단계입니다. k-거리 이내에 이웃이 적으면 데이터 포인트는 상대적으로 밀도가 낮다고 판단됩니다.
- 이웃 데이터 포인트 밀도 비교: 주어진 데이터 포인트와 그 이웃 데이터 포인트들의 밀도를 비교합니다. 데이터 포인트가 이웃들과 비교했을 때 밀도가 낮다면 LOF 값이 증가하게 됩니다. LOF 값이 증가하는 정도는 해당 데이터 포인트가 이상치로 판단되는 정도를 나타냅니다.
- LOF 계산: LOF는 주어진 데이터 포인트와 그 이웃 데이터 포인트들 간의 밀도 비교를 토대로 계산됩니다. LOF 값이 1보다 큰 경우, 해당 데이터 포인트는 주변 이웃들과 비교했을 때 이상치로 판단됩니다. LOF 값이 작거나 1에 가까울수록 해당 데이터 포인트는 일반적인 데이터 포인트로 판단됩니다.
- 임계값 설정: LOF 값을 사용하여 이상치를 판단할 때, 사용자는 어떤 LOF 값 이상을 이상치로 간주할지에 대한 임계값을 설정할 수 있습니다.
Isolation Forest
- -기본적으로 의사결정나무(Decision Tree) 형태로 표현해 정상 값을 분리하기 위해서는 의사결정나무를 깊숙하게 타고 내려가야 하고, 반대로 이상치인 경우 의사결정나무 상단부에서 분리할 수 있다는 것을 이용한 기법입니다. 이 알고리즘은 데이터 포인트를 고립시키는 과정을 통해 이상치를 탐지하는 방법을 사용합니다. Isolation Forest는 높은 차원의 데이터에서도 효과적으로 작동하며, 이상치를 빠르게 탐지하는 데 유용합니다.
Isolation Forest의 원리
- 고립된 트리 구축: Isolation Forest는 데이터 포인트를 고립된 트리로 나타냅니다. 이 트리는 랜덤 하게 선택한 특성을 사용하여 데이터를 반복적으로 분할합니다.
- 고립 트리의 높이 계산: 고립 트리를 구성하면 각 데이터 포인트는 이 트리에서 루트 노드에서부터 얼마나 높이 위에 있는지를 측정합니다. 이를 이용하여 이상치 점수를 계산합니다.
- 이상치 점수 계산: 이상치 포인트는 일반적으로 고립 트리의 높이가 낮은 포인트입니다. 즉, 이상치는 트리 구조에서 더 빨리 고립됩니다. 따라서 이상치 점수는 트리 높이에 반비례하게 계산됩니다.(이상치 점수 = 2^(-평균 깊이 / 평균 깊이의 최댓값))
- 이상치 탐지: 이상치 점수가 미리 정의된 임계값을 초과하는 데이터 포인트는 이상치로 판단됩니다. 임계값은 사용자가 설정하며, 일반적으로 이상치를 식별하는 데 사용됩니다.
Robust Random Cut Forest
- Robust Random Cut Forest (RRCF)는 이상치 탐지와 이상치 보정을 위한 효과적인 알고리즘 중 하나입니다. 이 알고리즘은 데이터의 이상치를 식별하고 다루는 데 사용됩니다. RRCF는 원래 Random Cut Forest (RCF) 알고리즘을 개선한 것으로, 더 강력하고 안정적인 결과를 제공합니다. 사실 Isolation Forest와 거의 차이가 없습니다. 차이점은 Feature를 Randomly Selection 한다는 것과 Score 계산방법 그리고 실시간 환경에서 분석이 가능하게 됐다는 것입니다.
Robust Random Cut Forest의 원리
- Random Cut Forest (RCF) 기반 : RRCF는 Random Cut Forest (RCF) 알고리즘을 기반으로 합니다. RCF는 데이터를 고립된 트리로 나타내고, 각 데이터 포인트의 이상치 점수를 계산하여 이상치를 탐지합니다.
- 앙상블 : RRCF는 여러 개의 RCF 모델을 앙상블 하여 사용합니다. 이렇게 함으로써 더 안정적이고 견고한 이상치 탐지가 가능해집니다.
- 이상치 보정 : RRCF는 이상치를 탐지하는 데만 그치지 않고, 이상치에 대한 보정을 수행하는 데도 사용됩니다. 즉, 이상치를 식별하고 해당 이상치를 대체하거나 보정할 수 있습니다.
- Robust 한 방식 : RRCF는 이상치에 대한 강건한 접근 방식을 사용하여 이상치에 대한 영향을 최소화하려고 합니다. 이를 통해 잘못된 이상치 식별을 줄이고 정확도를 향상시킵니다.
- 병렬 처리 가능 : RRCF는 병렬 처리에 적합하며, 대규모 데이터 세트에서도 효과적으로 작동합니다.
One-class SVM
- One-class Support Vector Machine (One-class SVM)"은 이상치 탐지(Anomaly Detection)와 이상치 분류(Anomaly Classification)를 위한 머신 러닝 알고리즘 중 하나입니다. 이 알고리즘은 데이터가 주로 하나의 클래스에 속하는 경우, 다른 클래스(이상치)로부터 멀리 떨어져 있는 데이터를 감지하는 데 사용됩니다. 이를 통해 이상치나 특이한 패턴을 탐지하거나 분류할 수 있습니다.
One-class SVM의 원리
- 학습 데이터 선택 : One-class SVM을 사용하기 위해서는 정상 데이터(정상 클래스에 속하는 데이터)만 사용하여 모델을 학습합니다. 즉, 이상치 클래스는 모델 학습에 사용되지 않습니다.
- 고차원 특성 공간 : 주어진 데이터를 고차원 특성 공간으로 매핑합니다. 이를 위해 커널 기법을 사용합니다. 주로 사용되는 커널 중 하나는 RBF(Radial Basis Function) 커널입니다.
- 경계 정의(마진 찾기) : One-class SVM은 정상 데이터를 정의하는 경계(하나의 클래스를 둘러싸는 경계)를 학습합니다. 이 경계는 가능한 한 많은 정상 데이터 포인트를 포함하면서 이상치와의 거리를 최대화하려고 노력합니다. 이를 통해 정상 데이터 영역을 정의하게 됩니다.
- 서포트 벡터 찾기 : 경계와 가장 가까운 데이터 포인트들을 서포트 벡터라고 합니다. 이 서포트 벡터들은 경계를 정의하는 데 중요한 역할을 합니다.
- 이상치 탐지 : 새로운 데이터 포인트가 주어지면, One-class SVM 모델은 이 데이터 포인트가 정상 클래스 영역 내에 속하는지 아니면 경계를 넘어 이상치인지 판단합니다. 이 판단은 새로운 데이터 포인트와 경계까지의 거리를 측정하여 이루어집니다.(거리가 일정 임계값을 초과하는 경우, 해당 데이터 포인트는 이상치로 분류됩니다.)
Dimensionality Reduction 기법 활용한 이상치 탐지
- PCA(주성분분석)
- Autoencoder
- DBSCAN
- Clustering
[마무리]
오늘은 머신러닝의 과정 중에서 데이터의 이상치가 존재할 때 처리할 수 있는 알고리즘에 대해서 공부했습니다. 오늘을 마지막으로 1차적인 온라인 녹화 수업은 마무리되었는데 이번에 배운 개념적인 부분들을 잘 복기해서 실시간 수업을 할 때 잘 활용할 수 있으면 좋겠습니다. 분명 실습에서 여러 가지 라이브러리들을 사용하다 보면 생각 없이 사용하는 경우가 많을 거 같은데 꼭 복습해서 상황에 따라 왜 사용하는지를 잘 파악할 수 있도록 노력해야겠습니다.
'AI > 머신러닝' 카테고리의 다른 글
[AI 부트캠프] DAY 51 - 머신러닝 6 (0) | 2023.09.27 |
---|---|
[AI 부트캠프] DAY 50 - 머신러닝 5 (0) | 2023.09.26 |
[AI 부트캠프] DAY 48 - 머신러닝 3 (0) | 2023.09.22 |
[AI 부트캠프] DAY 47 - 머신러닝 2 (0) | 2023.09.21 |
[AI 부트캠프] DAY 46 - 머신러닝 1 (0) | 2023.09.20 |
댓글