Loading the catalog…
Loading the catalog…
오늘은 펄서 데이터의 KNN 분류를 다시 확인한 뒤, 이진 분류에 사용하는 로지스틱 회귀를 타이타닉과 소셜 광고 데이터에 적용했다. 선형 회귀와 로지스틱 회귀가 같은 0·1 데이터를 다룰 때 왜 다른 선택이 되는지도 비교했다. 펄서 데이터의 불균형 다시 보기 펄서 데이터는 우주 잡음 11,375개와 펄서 1,153개로 클래스 비율 차이가 컸다. 잡음 데이터에서 1,153개만 무작위로 뽑는 언더샘플링으로 두 클래스를 맞춘 뒤, 신호 평균과 표준편차 두 특성으로 KNN을 학습했다. 표준화 후 테스트 정확도는 약 0.892였다. 혼동 행렬에서는 잡음 211건, 펄서 201건을 맞췄고 잡음 20건과 펄서 30건을 반대로 분류했다. 정확도만 보지 않고 어떤 클래스를 틀렸는지 함께 봐야 하는 이유를 확인했다. 타이타닉 전처리와 다중공선성 타이타닉 데이터에서는 ID, 이름, 티켓, 객실 번호, 탑승 항구를 제외하고 Age 결측값을 중앙값으로 채웠다. 성별은 남성 0 , 여성 1 로 변환하고, 동승 가족 수를 합친 FamilySize 컬럼도 만들었다. titanic_df["Age"] = titanic_df["Age"].fillna(titanic_df["Age"].median()) titanic_df["Age"] = titanic_df["Age"].astype(int) titanic_df["Sex"] = titanic_df["Sex"].map({"male": 0, "female": 1}) titanic_df["FamilySize"] = titanic_df["SibSp"] + titanic_df["Parch"] + 1 처음에는 SibSp , Parch , FamilySize 를 모두 입력값으로 넣고 VIF를 계산했다. FamilySize 가 앞의 두 컬럼으로부터 만들어진 값이라 VIF가 매우 크게 나오고 행렬이 rank-deficient라는 경고가 발생했다. titanic_df = titanic_df.drop(["SibSp", "Parch"], axis=1) 원본 두 컬럼을 제거한 뒤에는 다섯 특성의 VIF가 약 1.08~1.68 범위로 내려갔다. 파생변수를 만들 때는 원본 변수와 동시에 넣어 중복된 정보를 만들지 않는지 확인해야 한다. 로지스틱 회귀의 확률 계산 정리한 타이타닉 특성을 8:2로 층화 분리하고 표준화한 뒤 로지스틱 회귀를 학습했다. 학습 정확도는 약 0.799, 테스트 정확도는 약 0.788이었다. lr = LogisticRegression() lr.fit(X_train_scaled, y_train) y_pred = lr.predict(X_test_scaled) proba = lr.predict_proba(X_test_scaled) predict_proba() 로 사망과 생존의 확률을 확인하고, 가중치와 절편으로 선형식 z 를 계산한 뒤 시그모이드 함수를 직접 적용해 봤다. 예시 승객은 생존 확률 약 0.476으로 계산됐고, scikit-learn의 predict_proba() 결과와 같았다. 경사하강법으로 가중치와 절편을 직접 갱신하는 코드도 작성했다. 10,000번 반복 후 테스트 정확도는 라이브러리 모델과 같은 약 0.788이 나왔다. 소셜 광고 데이터와 선형 회귀 비교 소셜 광고 데이터에서는 사용자 ID를 제외하고 성별을 원-핫 인코딩했다. 나이, 추정 연봉, 성별로 구매 여부를 예측한 로지스틱 회귀의 학습 정확도는 약 0.853, 테스트 정확도는 약 0.788이었다. 표준화된 특성의 가중치는 나이 2.39, 연봉 1.16, 성별 0.37 순으로 나왔다. 이번 모델에서는 나이의 가중치가 가장 컸지만, 이는 데이터에서 확인된 모델의 관계이며 구매 원인을 단정하는 결과는 아니다. 같은 구매 여부를 연봉 하나로 선형 회귀에 넣어 보니 학습 점수는 약 0.141이었다. 0·1 범주를 예측하는 문제에는 연속값을 예측하는 선형 회귀보다, 결과를 확률로 변환해 분류하는 로지스틱 회귀가 더 맞는다는 차이를 확인했다. 정리 오늘은 모델을 학습하기 전 변수의 관계를 점검하고, 분류 모델의 확률 계산을 직접 따라가 봤다. 다음에는 ROC 곡선과 혼동 행렬을 함께 보면서 임계값에 따라 분류 결과가 어떻게 달라지는지도 확인해 봐야겠다.
What RADAR observed and classified to build this opportunity. It is what the source published, not a verification that the offer is still active.
9/30 Logistic Regression. 오늘은 펄서 데이터의 KNN 분류를 다시 확인한 뒤, 이진 분류에 사용하는 로지스틱 회귀를 타이타닉과 소셜 광고 데이터에 적용했다. 선형 회귀와 로지스틱 회귀가 같은 0·1 데이터를 다룰 때 왜 다른 선택이 되는지도 비교했다. 펄서 데이터의 불균형 다시 보기 펄서 데이터는 우주 잡음 11,375개와 펄서 1,153개로 클래스 비율 차이가 컸다. 잡음 데이터에서 1,153개만 무작위로 뽑는 언더샘플링으로 두 클래스를 맞춘 뒤, 신호 평균과 표준편차 두 특성으로 KNN을 학습했다. 표준화 후 테스트 정확도는 약 0.892였다. 혼동 행렬에서는 잡음 211건, 펄서 201건을 맞췄고 잡음 20건과 펄서 30건을 반대로 분류했다. 정확도만 보지 않고 어떤 클래스를…
Open source