개인공부/Machine Learning
[KHUDA ML 기초 딥다이브] Week 01
알파카유진정
2025. 2. 5. 19:04
1. 분류 모델
우리는 어떤 분류 모델을 사용한 것인지?
이번 3장을 통해 우리는 이진분류, 다중분류를 사용해보았다. 그러나 분류를 수행하는데에 있어 우리는 어떤 분류 모델을 사용한 것인가?
'''python
from sklearn.linear_model import SGDClassifier
sgd_clf = SGDClassifier(random_state=42)
from sklearn.svm import SVC
'''
이진분류, 다중분류에서 사용한 모델 라이브러리는 이러하다. 이진분류에서는 이후 별도의 loss 함수를 지정해주지 않고 바로 진행했기 때문에 default값인 “loss = hinge” 즉 SVM이 사용된 것이다. 다중분류에서도 마찬가지로 SVC, Support Vector Classification을 사용한 것으로 파악할 수 있다. 둘다 서포트 벡터 모델을 통한 분류가 진행 된 것이다. 그렇다면
분류 기능을 수행하는 모델에는 어떤것들이 더 있는가?
왜 loss 함수에 따라 분류 모델이 달라지는 것일까?
>
2. 분류 확률 출력
우리가 수행한 분류 모델의 output은 무엇이었는가?
이번 분류 모델들을 수행하면서 우리는 최종적으로 **“어떤 클래스로 분류됐는지”**에 대한 결과만을 살펴볼 수 있었다. 이에 대하여 얼마나 올바르게 분류 됐는지(개수)를 토대로 정밀도, 재현율 등을 다뤘던 것이다. 그러나 해당 모델은 각 클래스로 분류될 확률을 제공하지는 않았다.
모델이 확률적 해석을 제공한다는 것은 단순히 클래스 레이블만 반환하는 것보다는 더 많은 정보를 제공할 것이다. 확률값은 모델이 예측한 레이블에 대해 얼마나 확신하는지를 알려주기도 하며 다중분류의 경우 각 클래스에 대한 상대적 가능성을 의미하기도 한다. 그렇다면
왜 우리의 모델은 각 클래스에 대한 분류 확률을 제공할 수 없었는가?(힌트는 SVM에 있습니다…)
분류 확률을 제공받고 싶다면 우리는 어떤 모델을 사용해야하는가. 그 모델은 어떻게 분류 확률을 제공하는가?
3. 불균형 클래스
지표말고… 실질적인 해결 방안은 없나?
이진분류 혹은 다중분류(OvR)의 경우, 우리는 훈련데이터에 대한 불균형을 경험하게 될 것이다. 만약 개, 고양이, 토끼, 사자의 사진을 각각 25장씩 총 100장 가지고 있다면 우리의 이진분류기는 **“개냐 개가 아니냐”**라는 방식일 것이며 다중 분류기는 이러한 이진분류기가 4개 있는 상황일 것이다. 즉 정답 데이터의 비율이 1:3으로 비교적 적은 상태에 처하게 된다. 이러한 불균형 클래스 문제는 머신러닝 분류에서 매우 흔하게 접할 수 있는 이슈이며 F1 score, Precision-recall, ROC-AUC 와 같은 지표들은 해결하기 위한 방법이 아니라 평가할 때 좀 더 적합한 “척도”일 뿐이다. 그렇다면
데이터 불균형 문제를 직접적으로 해결할 수 있는 방법론들은 어떤것이 있는지?
각각의 방법론들은 어떤 상황에서 적합하며 장단점은 무엇인지?
4. 블랙박스 문제
블랙박스 문제 그리고 XAI…?
혹시 블랙박스 문제에 대해 들어보았는가? 의사결정트리, 로지스틱 회귀 등 비교적 간단한 머신러닝 기법을 통해 특정 작업을 수행한다면 우리는 어떠한 근거에 기반하여 output이 이렇게 나왔는지를 파악할 수 있다. 하지만 점점 더 높은 성능의 모델(앙상블, 딥러닝…)들을 활용 할수록 모델이 내부적으로 어떻게 작동하는 지 관찰하거나 이해하기 어려운 문제들이 발생한다.
그리고 이를 해결하기 위해 나온 것이 설명 가능한 인공지능, XAI 이다. 인공지능 모델이 어떤 예측이나 의사결정을 내릴 때, 사람에게 이해할 수 있는 방식으로 그 이유나 과정을 설명해 주는 것은 매우 중요할 것이다. 인간의 입장에서는 그것을 바탕으로 누군가를 설득하기도 하며 합리적이라고 판단하여 모델의 결정을 따르게 될 것이다. 그렇다면
XAI 관련 기법은 어떤 것들이 있는지? (XAI는 무엇인가? 특정 모델을 말하는 건가? 아니면?)
각각의 방법론들은 어떤 상황에서 적합하며 장단점은 무엇인지?
5. 페어(Fair) 분류 & 바이어스 제거
아마존 AI 채용 시스템 사례
많이들 알고 계시는 사례일 것 같다. 아마존은 채용 과정을 자동화 하기 위해 내부적으로 머신러닝 기반 이력서 평가 시스템을 개발했었다. 하지만 실제 채용에서는 여성 관련 단어나 이력을 가진 지원자를 낮게 평가하거나 불이익을 주는 식의 바이어스가 형성되었고 이는 훈련 데이터 자체가 남성 지원자 중심으로 편향되었기 때문이다. 이는 편향된 데이터로 모델을 학습했을 때 어떤 문제가 생기는지를 극명하게 보여준 사례이며 우리는 모델이 부당하게 편향되지 않도록 공정성을 확보해야한다. 그렇다면
바이어스 제거는 어떻게 하는 것인지?
1번을 통해 방법론을 습득한다고 해서 바이어스 문제가 무조건 해결되는 것은 아니다. 그렇다면 우리가 앞으로 데이터 분석을 할때 있어서 가져야할 자세는 무엇인지?