Pracowałem nad rozwiązaniem konkursu cen mieszkań na Kaggle (jądro Human Analog w cenach domów: techniki regresji z wyprzedzeniem ) i natknąłem się na tę część:
# Transform the skewed numeric features by taking log(feature + 1).
# This will make the features more normal.
from scipy.stats import skew
skewed = train_df_munged[numeric_features].apply(lambda x: skew(x.dropna().astype(float)))
skewed = skewed[skewed > 0.75]
skewed = skewed.index
train_df_munged[skewed] = np.log1p(train_df_munged[skewed])
test_df_munged[skewed] = np.log1p(test_df_munged[skewed])
Nie jestem pewien, jaka jest potrzeba przekształcenia przekrzywionego rozkładu w rozkład normalny. Czy ktoś może szczegółowo wyjaśnić:
- Dlaczego to się tutaj robi? lub Jak to jest pomocne?
- Czym różni się to od skalowania funkcji?
- Czy jest to niezbędny krok do opracowania funkcji? Co może się stać, jeśli pominę ten krok?