首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lasso回归结果的解释

Lasso回归结果的解释
EN

Stack Overflow用户
提问于 2018-05-29 14:28:36
回答 2查看 4.2K关注 0票数 2

我有一个问题,与一个惩罚回归模型与拉索和解释返回值。我有文本内容,并希望找到每一个最有预见性的单词为一堂课。

码与数据

代码语言:javascript
复制
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

from nltk.corpus import stopwords
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import Lasso

# Import test data
data = pd.read_csv('https://pastebin.com/raw/rXr4kd8S')

# Make ngrams
vectorizer = CountVectorizer(min_df=0.00, max_df=1.0, max_features=1000, stop_words='english', binary=True, lowercase=True, ngram_range=(1, 1))
grams = vectorizer.fit_transform(data['text'])

# Show features (words)
vectorizer.get_feature_names()

# Show Lasso coefficients
def lassoRegression(para1, para2):
    lasso = Lasso(alpha = 0, fit_intercept=True, normalize=True, max_iter=1000)
    lasso.fit(para1, para2)
    return lasso.coef_

model_lasso = lassoRegression(grams, data['label'])

# Sort coefficients
lasso_coef = pd.DataFrame(np.round_(model_lasso, decimals=2), vectorizer.get_feature_names(), columns = ["penalized_regression_coefficients"])
lasso_coef = lasso_coef[lasso_coef['penalized_regression_coefficients'] != 0]
lasso_coef = lasso_coef.sort_values(by = 'penalized_regression_coefficients', ascending = False)
lasso_coef

# Top/Low 10 values
lasso_coef = pd.concat([lasso_coef.head(10),lasso_coef.tail(10)], axis=0)

# Plot
ax = sns.barplot(x = 'penalized_regression_coefficients', y= lasso_coef.index , data=lasso_coef)
ax.set(xlabel='Penalized Regression Coeff.')
plt.show()

更改alpha会导致以下问题:

Out: For Lasso(alpha = 0,.)

代码语言:javascript
复制
ConvergenceWarning: Objective did not converge. You might want to increase the number of iterations. Fitting data with very small alpha may cause precision problems.

    penalized_regression_coefficients
data    0.62
awesome 0.33
content 0.31
performs    0.05
enter   0.02
great   -0.01

Out: For Lasso(alpha = 0.001,.)

代码语言:javascript
复制
penalized_regression_coefficients
great   -0.93

Out: For Lasso(alpha = 1,.)

代码语言:javascript
复制
penalized_regression_coefficients
empty

问题:

  • alpha = 0返回一个错误(但值),任何其他alpha设置几乎什么也不返回。考虑到输入的数据,即使在删除停止字之后,我也会期望有更多的单词具有相应的正负权重。这里出什么问题了吗?注意,数据输入有故意重复的元素,因为我希望这样测试模型的可靠性。
  • 如何正确地解释这些值?data=0.62是什么意思?
  • 我是否正确地假定所有负值都是标签"0“的预测器,而所有正值都是标签"1”的预测值?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-05-29 15:07:25

alpha是指弹性网上的惩罚。名为lambdaalphaalpha=0等价于普通的最小二乘。拉索回归和力系数向0。它解释说,系数越小,其重要性就越小或方差越小。这里的实际值将不那么重要,因为它将用于logistic回归,因为它最终将以指数形式使用。因此,最后一个假设是正确的,如果coeffienct是可能的,那么这个变量表示一个更高的probability of label 1,这个单词的每一个出现。

至于为什么你的拉索回归不收敛,你可以读这里

我建议在使用这些方法之前多读一遍它们。这门课说了很多关于统计,并解释了为什么和何时使用拉索回归。如果您熟悉OLS,那么您可以理解系数的解释。如果所有其他变量保持不变,那么对于1单位变量数据中的每增加一次,您都可以期望响应变量Y平均增加0.62。但正如我先前所说,这将导致在逻辑方程中使用的百分比变化。

有关统计数据的更多帮助,请参见交叉验证

票数 1
EN

Stack Overflow用户

发布于 2018-05-29 15:14:24

好吧,这里有几件事。

我看到您有逻辑回归,这在您的脚本中没有使用。您可能需要考虑使用线性的v/s logistic回归。

代码试图告诉你,接近alpha=0的拉索回归结果是不可靠的。为什么是这种情况?那么,如果你去编码套索,你最终会到达- fast.pyx线516,那里有一个浮动比较进行。

当你的阿尔法慢慢地走向0是什么意思?这意味着你的回归类似于OLS回归。如果你的系数正在迅速消失,这就意味着你的系数在解释结果时很弱。

您的TODO列表- 1。尝试OLS和Logistic以确定哪一个更合适。2.查看t-统计数据,看看是否有任何结果是有效的。如果没有什么重要的,那么也许看看您如何设置回归,代码中可能会有错误。4.如有任何概念不清楚,可选择@lwileczek所述的课程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50586912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档