kaggle 노트북 리뷰 04_
~ 이번주 파트인 5단원 서포트 벡터 머신 부분을 읽다보니 발견 한 부분,,
두둥,,!
이상치 탐지는 못참아~~! 하면서 이 주제를 선택하게 되었습니다,,,
~
**Hands On ML 5단원 리뷰와 함께 진행한 노트북 리뷰입니당
**책에서 언급된 scikit learn_Novelty and Outlier Detection 부터 리뷰 합니당
새로운 관측치와 기존 관측치와 동일한 분포에 속하는지(inlier), 다르다고 간주해야하는지(outlier)에 대한 결정
-
Outlier detection (unsupervised anomaly detection)
: training data는 다른 관측치와 멀리 떨어진 outlier를 포함. 이에 outlier detection setimator는 비정상적인 관측치를 무시하고 training data가 집중된 지역에 fitting
→ estimator는 이상치가 저밀도 영역에 있다고 가정하기떄문에 밀도있는 클러스터를 형성할 수 없다. -
Novelty detection (semi-supervised anomaly detection)
: training data는 오염되지 않은 상태. 새로운 관측치가 들어왔을때 outlier인지 탐지를 하는데 초점. (여기서 outlier = novelty)
→ training data의 저밀도 영역에 데이터가 있는 경우 밀도있는 클러스터를 형성할 수 있다.
Outlier detection과 Novelty detection은 모두 비정상적인 관측치를 탐지한다는 점에서 Anomaly detection에 사용된다.
One class SVM: One class Classification을 사용하는 대표적인 방법론, 정상 sample들을 둘러싸는 discriminative boundary를 설정하고, 이 boundary를 최대한 좁혀 boundary밖에 있는 sample들을 비정상으로 간주.
(여기에서 확장되어 나온 DL기반 One class Classification방법론을 사용하는 Deep SVDD)
데이터들을 N차원의 좌표축으로 뿌린 후 , 원점과의 거리를 기준으로 선(Hyper Plane)을 그어 Classification하는 것
** 일반 SVM과는 분명한 차이를 가진다
Binary-Classification에 많이 쓰이는 SVM은 각 데이터들 속 Support Vector 간의 Margin을 기준으로 Hyper plane을 나누지만, OCSVM은 원점을 기준으로하기에, 조건에 따라 데이터가 아무리 많아도 Class가 1개일 수 있다!
** DeepSVDD
One class SVM은 원점으로부터의 거리에 존재하는 hyper plane, 즉 평면을 boundary로 두는 반면 SVDD는 hypersphere형태로 boundary를 나누는것
data = df[['value', 'hours', 'daylight', 'DayOfTheWeek', 'WeekDay']]
min_max_scaler = preprocessing.StandardScaler()
np_scaled = min_max_scaler.fit_transform(data)
# train one class SVM
model = OneClassSVM(nu=0.95 * outliers_fraction) #nu=0.95 * outliers_fraction + 0.05
data = pd.DataFrame(np_scaled)
model.fit(data)
# add the data to the main
df['anomaly26'] = pd.Series(model.predict(data))
df['anomaly26'] = df['anomaly26'].map( {1: 0, -1: 1} )
print(df['anomaly26'].value_counts())
Parameters
-
kernel : {‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’}, default=’rbf’
-
gamma : {‘scale’, ‘auto’} or float, default=’scale’
‘rbf’, ‘poly’ and ‘sigmoid’의 Kernel coefficient if gamma='scale' → uses 1 / (n_features * X.var()) as value of gamma, if ‘auto’ → uses 1 / n_features.
-
nu : default=0.5
(0,1]구간내에 있어야함 training errors 비율에 대한 상한과 support vectors 비율에 대한 하한을 의미
Author And Source
이 문제에 관하여(kaggle 노트북 리뷰 04_), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sujin_yun_/kaggle-노트북-리뷰-04저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)