Что такое мультиколлинеарность?
Мультиколлинеарность возникает, когда две или более независимых переменных (Функции) сильно коррелируют друг с другом. Давайте рассмотрим пример.
Предположим, у вас есть набор данных для прогнозирования заработной платы человека с независимыми переменными Возраст,год службы. Здесь обе независимые переменные сильно коррелированы и создают свои собственные отношения x1=m*x2+ c. Из-за взаимной зависимости друг от друга эти независимые переменные будут меньше коррелировать с y.
Мультиколлинеарность не повлияет на производительность модели, но влияние независимых переменных (которые являются мультиколлинеарными) на выходную переменную будет меньше, что приведет к снижению интерпретируемости.
в чем причина мультиколлинеарности?
я. Ложная ловушка
Предположим, у нас есть набор данных, состоящий из столбцов Не замужем и Женаты. Нет необходимости брать Не замужем в качестве независимой переменной, если мы взяли столбец Женаты. как независимая переменная, что привело к избыточности в наборе данных, вызывающей мультиколлинеарность.
Важно удалить первый столбец, полученный в результате горячего кодирования, иначе он превратится в ловушку-пустышку.
II. Идентичная переменная в наборе данных
Предположим, мы взяли два разных столбца зарплат в наборе данных, один представляет зарплату в рупиях, другой представляет ту же зарплату в долларах.
III. Создание переменной, которая зависит от других переменных, присутствующих в наборе данных
Предположим, у вас уже есть столбец год рождения, и вы добавили еще один столбец с названием Возраст, который показывает высокую корреляцию друг с другом и уменьшает их индивидуальное влияние на зависимую переменную.
Коэффициент инфляции дисперсии
Коэффициент инфляции дисперсии проверяет, как одна независимая переменная коррелирует с другой независимой переменной. Математически это определяется как;
Код для V.I.F.
Я взял набор данных Admission Prediction для проверки V.I.F.
from sklearn.preprocessing import StandardScaler scaler=StandardScaler() from statsmodels.stats.outliers_influence import variance_inflation_factor scaler=StandardScaler() def cal_vif(x): x_scaled=scaler.fit_transform(df) vif_data=pd.DataFrame() vif_data["Features"]=df.columns vif_data["VIF"]=[variance_inflation_factor(x_scaled,i) for i in range(x_scaled.shape[1])] return(vif_data) cal_vif(df)
мы установим пороговое значение. Если какой-либо признак будет иметь значение, превышающее пороговое значение, он считается мультиколлинеарным.
Мы можем удалить мультиколлинеарность между функциями двумя процессами;
я. Исключение объектов с высоким V.I.F.
В приведенном выше выводе у нас есть две функции с высоким значением VIF, поэтому мы можем уменьшить его, удалив любую из этих двух функций.
df.drop("Chance of Admit",axis=1,inplace=True) df.head()
II. Объедините оба столбца в один, а затем удалите их оба
df["CGPA & Chance of Admit"]=df.apply(lambda df:df["CGPA"]- df["Chance of Admit"] ,axis=1) df.drop(["CGPA","Chance of Admit"],axis=1) df.head()
Вывод:-
Надеюсь, вам понравился этот блог, если у вас есть какие-либо сомнения и предложения, оставьте комментарий ниже, продолжайте изучать, продолжайте учиться.