
데이터 형식 변경
- 더미변수는 변수의 값이 최소 2개를 초과할 경우 수행. 아니면 단순 category 타입으로.
다중선형회귀 단계별 설명
model.add(activation='relu')
model.add(activation='relu')
model.add(activation = 'linear')
model.compile(optimizer = 'adam', loss = 'mse', metrics = ['mae'])
탐색적 데이터 분석
산점도 그래프와 추세선 확인
이상 징후를 식별
한 변수가 다른 변수에 어떤 영향을 미치는지 확인
상관 관계, 패턴, 추세 또는 관계 보기
명목형 처리
명목형으로 의심되면 일단 value_counts()로 확인
type, shape, info 등을 사용해 객체 형태 및 정보를 확인 가능
데이터 표준화
차후 학습 결과 적용에서 스케일링 데이터를 사용해야하기 때문에 독립/종속 변수를 따로 스케일링
- 통계에서는 종속변수 표준화를 권장하지 않음
- 예측 값을 역 표준화 해야하지 때문
- 단, 머신러닝 선능을 위해서 종속변수 표준화 권장
- 표준화를 거치면 numpy 배열 형태(1차원 데이터 배열) -> [0]로 열 길이 출력 가능
- 표준화를 진행하지 않으면 DF 형태(2차원 형태) -> iloc[0]로 열 길이 출력 가능
- type, shape, info 등을 사용해 객체 형태 및 정보를 확인 가능
데이터셋 분할
독립변수를 다항식으로 변환
PolynomialFeatures클래스를 사용하여 y=ax+b 라는 회귀식을 y=ax2+bx+c 형태로 바꾼다.
- degree : 변환할 차수 (기본값=2) 또는 생성할 다항식의 차수
- 1 : [a,b] = ax+b, 2 : [a,b,c] = ax2+bx+c, 3 : [a,b,c,d] = ax3+bx2+cx+d
- include_bias : True인 경우 0차항(1)도 함께 생성한다. (기본값=True)
모델 개발
모델 정의
[relu], sigmoid, rmsporp, binary_crossentropy, acc
- input_shape은 독립변수 수
- Dense(출력 수) 신경망 개수의 수에 따라서 모델의 성능에 차이가 발생
- 직감으로 맞춤(다른 방법 없음) 보통 16 또는 32 이상
- 최적의 값을 직접 탐색(너무 많으면 컴퓨터 다운)
- activation은 모델과 분석 종류에 따라서 다름
- 보통 시작은 relu, 분류는 sigmoid, 회귀는 linear
- optimizer은 모르면 Adam
- epochs는 많아도 크게 상관이 없음
- 2차항을 하고 싶다면 sklearn으로 2차항 생성 후 Sequential에 입력
학습하기
- epochs는 많아도 크게 상관이 없음(단, 너무 크면 오래 걸리고 오차가 증가)
- callback을 사용해 모델의 학습 방향, 저장 시점, 학습 정지 시점 등에 관한 상황을 모니터링
- EarlyStopping 콜백과 같이 patience 인자를 지정하여, 지정된 기간 동안
평가지표에서 성능 향상이 일어나지 않으면 학습률을 조정하는 콜백
- ReduceLROnPlateau EarlyStopping 콜백과 같이 patience 인자를 지정하여, 지정된 기간 동안
평가지표에서 성능 향상이 일어나지 않으면 학습률을 조정하는 콜백
- ModelCheckpoint 지정한 평가지표를 기준으로 가장 뛰어난 성능을 보여주는 모델을 저장 할 때 사용
연습문제 풀이
표준화 진행 후 독립변수를 다항식으로 변환한 경우 성능면에서 개선.
통계에서는 종속변수 표준화를 권장하지 않음.
예측 값을 역 표준화 해야하지 때문.
단, 머신러닝 성능을 위해서는 권장.(epochs 차이가 발생)
from sklearn.preprocessing import PolynomialFeatures
- 다항식으로 변환하는 scikit-learn 모듈
기본(기초)통계
describe
산점도, 추세선 확인 이유
- 단순선형, 다항식으로 갈지 여부를 결정 -> 곡선인 경우 다항식으로 분석
- 이상 징후를 식별
- 한 변수가 다른 변수에 어떤 영향을 미치는지 확인
- 상관 관계, 패턴, 추세 또는 관계 보기
type, shape, info 등을 사용해 객체 형태 및 정보를 확인 가능
표준화를 거치면 numpy 배열 형태(2차원 데이터 배열) -> [0]로 열 길이 출력 가능
표준화를 진행하지 않으면 DF 형태(1차원 형태) -> iloc[0]로 열 길이 출력 가능
09-다중선형회귀(보스턴집값예측)
명목형 변수 처리
더미화가 아닌 단순 category화
명목형으로 의심되면 일단 value_counts()로 확인
type, shape, info 등을 사용해 객체 형태 및 정보를 확인 가능
표준화 결정
기본(기초)통계량, boxplot을 통해 결정
각 변수의 분포가 너무 상이할 경우 표준화 진행
독립변수 처리
독립변수를 다항식으로 변환
PolynomialFeatures클래스를 사용하여 y=ax+b 라는 회귀식을 y=ax2+bx+c 형태로 바꾼다.
- degree : 변환할 차수 (기본값=2)
- 1 : [a,b] = ax+b, 2 : [a,b,c] = ax2+bx+c, 3 : [a,b,c,d] = ax3+bx2+cx+d
- include_bias : True인 경우 0차항(1)도 함께 생성한다. (기본값=True)
독립변수 처리
산점도 그래프, 상관계수, 히트맵을 통한 확인
상관계수의 절대값이 0.7이상인 항목을 순차적으로 제거하여 회귀분석에 사용할 요인을 선정
상관성은 절댓값 0.2, 0.5, 0.7을 기준 - 데이터마다 상이하긴 함
상관관계가 높다고 무조건 제외하는 것이 아닌 인과 관계를 파악 후 제외/존속 여부를 결정
로지스틱은 산점도행렬 확인이 필수가 아님.
데이터 표준화 후 다항식 변환 진행
표준화 후 다항식 변환을 진행 - 성능 차이 발생
분류의 경우
model.add(activation = 'relu')
model.add(activation = 'sigmoid')
model.compile(optimizer='rmsprop', loss = 'binary_crossentropy', metrics = ['acc'])