Почему лассо возвращает нестабильные функции при использовании тех же данных? - PullRequest
0 голосов
/ 03 июня 2019

Я использую Scikit-Learn, чтобы сжать мой набор данных, имеющий около 800 функций. Это очень шумные данные (рыночные и экономические данные). Насколько я знаю, Лассо возвращает те же функции для того же набора данных. Тем не менее, я не наблюдаю это через мои пробежки. Вот моя функция:

def select_lasso_feat(self, train_data, features, target):
        if len(features) <= 60:
            print('LASSO feature selection step skipped. Too few features on your dataset!')
            return features
        print('Performing LASSO feature selection...')
        X_train = self._standardize(train_data[features])
        y = train_data[target]

        alpha = 0.0003
        feat_len = 0
        while feat_len < 60:
            estimator = Lasso(alpha=alpha, random_state=23)
            feature_selection = SelectFromModel(estimator, threshold=0.1)
            feature_selection.fit(X_train, y)

            selected_features = feature_selection.transform(X_train)

            selected_features = list(pd.DataFrame(X_train).columns[feature_selection.get_support()])
            feat_len = len(selected_features)
            alpha -= 0.00003
        return list(set(selected_features))

Как видно, я продолжаю примерять лассо до тех пор, пока не достигну нужного количества функций (в нашем случае 60). Я делаю свои испытания с Юпитером. И всякий раз, когда я выключаю свой сервер и повторно запускаю свой код с точно такими же данными, я получаю разные списки функций, возвращаемые lasso. Так в чем может быть причина?

...