일반화 오차 = 분산 + 편향 ** 2 + 노이즈 편향(Bias) 일반화 오차 중 잘못된 가정으로 생긴 오차 데이터 또는 학습 모델이 정답으로부터 얼마나 특정 방향으로 치우쳐있는가를 의미함 학습모델의 예측값이 정답과 멀리 치우친 경향이 있을 때 고편향(high-bias)되어 있다고함(과소 적합) 분산(Variance) 훈련 데이터셋에 내재된 작은 변동에 의해 발생된 오차 데이터 또는 학습 모델이 얼마나 넓은 범위에 걸쳐 분포되어 있는가를 의미함 높은 분산값(high variance)은 학습 모델에서 예측값이 넓게 흩어져 있어 변동성이 높은 때를 말하며 과대 적합되는 경향이 있음 편향-분산 트레이드오프(Bias-variance tradeoff/dilemma) 지도 학습 알고리즘이 훈련 데이터셋의 범위를 넘..
다항회귀를 이용한 과적합 이해 좋은 모델이란? 과적합(과대적합, 과소적합) 모델의 적합성과 일반화 오차 훈련 데이터를 이용하여 학습한 모델이 아직 얻지 못한 데이터(검증 데이터)에 대한 결과값을 얼마나 정확하게 예측할 수 있는지 판단하기 위해 필요한 개념. 적합도: 가지고 있는 데이터(훈련 데이터)에 대해 모델을 적용했을 때 들어맞는 정도 예측 정확도: 아직 얻지 못한 데이터(검증 데이터)에 대해 모델을 적용했을 때 들어맞는 정도 일반화 오차: 아직 얻지 못한 데이터에 대한 예측 오차 ※ 훈련데이터(트레이닝 데이터) : 파라미터 추정에 사용하는 데이터 ※ 테스트 데이터: 일반화오차를 평가하기 위해 파라미터 추정에 사용하지 않고 남겨둔 데이터. 파라미터 추정에 사용하지 않은 테스트 데이터로 모델의 성능을 ..
다항회귀(Polynomial Regression) 독립 변수가 단순한 단 형식이 아닌 2,3,차 등으로 표현되는 것 데이터가 단순한 직선이 아닌 복잡한 형태인 경우, 산점도 산의 관측값을 통과하나는 추세선을 그렸을 때 개의 굴절이 과찰되면 이를 n차 향식으로 모델링 독립변수와 종속변수의 관계를 다차 다항식으로 표현 다중 선형회귀의 특별한 형태, 특성을 변환(차수의 변환)한 후 다중 선형회귀와 같은 방식으로 비선형 관계를 모델링함 차수가 증가하면 곡선 모델(비선형모델)이 될 때 다항회귀라고 함 장점 : 두 입력변수 사이의 관계성을 설명해서 데이터를 잘 설명한다. 사이킷런의 변환기(transformer) 변환기 : 특성을 만들거나 전처리하기위한 다양한 클래스를 제공 다향회귀를 위한 변환기: from skle..
Feature Scaling 데이터 변환 중 가장 중요한 변환 중 하나/ 대부분의 머신러닝 알고리즘은 입력 숫자 특성들의 스케일이 많이 다르면 잘 작동하지 않음(Decision Tree 예외) 정규화(Normalization) 모든 값이 0 ~ 1 사이에 들도록 범위를 조정(feature_range로 조정 가능) sklearn.preprocessing.MinMaxScaler 표준화(Standardization) 평균을 뺀 후 표준편차로 나누어 평균 0, 분산 1이 되는 분포로 전환 각 특성값이 0에서 표준 편차의 몇 배만큼 떨어져 있는가 Min-max 스케일링과 달리 표준화는 범위의 상한과 하한이 없음 신경망의 경우 입력값의 범위를 0~1로 기대함 표준화는 이상치에 영향을 덜 받음(vs.min-max 스..
경사하강법 여러 종류의 문제에서 최적의 해법을 찾을 수 있는 일반적인 최적화(Optimization) 알고리즘 손실(비용) 함수를 최소화 하기위해 반복해서 파라미터를 조정하는 것 선형 회귀의 경우 손실함수(MSE(평균오차제곱))을 최소화하는 파라미터 W1, W0에 대해 함수의 현재 기울기(그래디언트)를 계산한 후 기울기가 감소하는 방향으로 진행하고, 기울기가 0이 되면 최솟값에 도달한 것 비유 : 앞이 보이지 않는 안개가 낀 산을 내려올 때는 모든 방향으로 산을 더듬어 가면서 산의 높이가 가장 낮아지는 방향으로 한발 씩 내딛어 내려올 수 있다. 경사하강법의 장점 함수가 너무 복잡해 미분 계수를 구하기 어려운 경우 경사하강법을 구현하는게 미분 계수를 구하는 것보다 더 쉬운 경우 데이터 양이 너무 많아 효율..
다중선형회귀 단순 선형 회귀에서 독립변수의 개수만 늘어난 것이다. 따라서 단순 선형 회귀와 동일한 절차를 이용하여 분석을 수행할 수 있다. 단, 독립 변수의 수가 많아지므로 이로 인해 발생할 수 있는 경우들을(과적합) 고려해서 적절한 조치를 취해야한다 독립변수들의 최초 선택(feature_engineering > feature_selection) 회귀분석의 목적: 종속 변수를 가장 잘 설명하는 독립변수들의 성향/특징들을 찾아내어 이를 기반으로 기존의 자료를 설명하거나 새로운 결과를 예측하는 것 독립변수를 임의로 누락시키는 것은 해당 모델의 설명력이 낮아지는 문제 회귀 분석을 수행하는 경우, 관련 있는 독립변수는 일단 가급적 모두 고려 탐색적 데이터 분석(Exploratory Data Analysis) 수..
회귀(Regression) 시초: 19C 통계학자 프랜시스 골턴Francis Galton, 키가 큰 사람의 아이가 부모보다 더 크지 않다는 사실을 관찰하고, "평균으로 회귀한다"는 표현을 사용 데이터의 값은 평균과 같은 기존의 경향으로 돌아가려는 경향이 있다는 것 여러 변수들 간의 상관 관계를 파악하여 어떤 특정 변수의 값을 다른 변수들의 값을 이용하여 설명, 예측하는 수리식을 찾는 방법 회귀식을 찾는 것 회귀분석의 유형 변수의 개수 및 계수의 형태에 따라 구분한다 독립 변수의 개수에 따라 단순회귀분석: 독립변수가 1개인 경우, 단일 회귀분석이라고도 함. 다중회귀분석: 독립변수가 여러 개인 경우 회귀 계수의 형태에 따라 선형: 계수를 선형 결합으로 표현할 수 있는 경우 비선형: 계수를 선형 결합으로 표현..
conda에 wordcloud 설치하기 아나콘다 프롬프트를 켜고 다음의 명령어를 입력합니다. conda install -c conda-forge wordcloud 데이터 가공하기 DevType은 앞서 파악했듯 두개 이상의 값을 선택 할 수 있는 질문이었습니다. 복수 개의 값의 구분자는 세미콜론(;)입니다. 세미콜론을 공백으로, 또 콤마(,)도 공백으로 변경합니다. 즉 전체 문자열 내에 단어를 공백으로 구분하는 단 하나의 문자열을 만드려고 하고 있습니다. temp_words = survey_raw_df['DevType'].dropna() temp_words = temp_words.str.replace(';',' ').str.replace(',', &..
folium folum은 파이썬 라이브러리로 지도 데이터를 시각화하는데 아주 쉽게 도와줍니다 leaflet.js를 기반으로 만들어졌습니다. 지도에 마커를 표현하거나 범위를 나타내는 다양한 도형을 입력할 수 있습니다. conda에 folium 설치하기 아나콘다 프롬프트를 켜고 다음의 명령을 입력합니다. conda install -c conda-forge foloium folium 간단한 예제 우리가 현재 위치한 곳의 위도와 경도 정보입니다. 위도와 경도 각각을 latitude, longitude에 저장해봅시다. # 플레이데이터 독산 위도, 경도 latitude, longitude = (37.468251, 126.886212)해당 위도, 경도 정보를 바탕으로 지도에 표시해봅시다. 또 Marker를 달아 위치..
at 단 하나의 값에만 접근할 수 있게 설계된 인덱서 loc 다량의 자료에 접근하기 위해 설계된 인덱서 팁 단 하나의 자료에 접근할 때는 at을 쓰는 것이 속도가 훨씬 빠르다. 패스트 인덱싱이라고도 한다. 예제 #### at 사용하기 def split_multicolumn(Series): df = pd.DataFrame(False, columns = (Series.dropna().str.split(';').str[0].unique()), index = Series.index) for idx, rep in Series.str.split(';').items(): if isinstance(rep, list): for one in rep: df.at[idx, one.strip()] ..
np.nan 값이 섞인 Series 자료형에 대해 특정 문자 값이 포함되었는지 사용할 수 있는 메서드로 contains()가 있습니다. 첫 인자로 포함된 것을 찾을 문자열을 넣어줍니다. na 키워드 인수를 활용하면 NaN 값을 대신할 값을 넣을 수 있습니다. _공식문서_str.contains _공식문서 where 예제 survey_df.where(~survey_df['Gender'].str.contains(';', na = False), np.nan, inplace = True) 코드 설명 survey_df의 Gender 컬럼 중 ;를 포함하는 행 찾기(na의 경우에는 False 처리) 앞 선 메소드의 True로 반환된 값들을 False로 전환(비트 연산자 ~) where로 ..