Что такое мультиколлинеарность?

Мультиколлинеарность возникает, когда две или более независимых переменных (Функции) сильно коррелируют друг с другом. Давайте рассмотрим пример.

Предположим, у вас есть набор данных для прогнозирования заработной платы человека с независимыми переменными Возраст,год службы. Здесь обе независимые переменные сильно коррелированы и создают свои собственные отношения 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()

Вывод:-

Надеюсь, вам понравился этот блог, если у вас есть какие-либо сомнения и предложения, оставьте комментарий ниже, продолжайте изучать, продолжайте учиться.