逻辑回归框架
Posted
技术标签:
【中文标题】逻辑回归框架【英文标题】:Logistic Regression Framework 【发布时间】:2016-01-05 07:09:35 【问题描述】:我正在编译带有分类器的。有人可以帮我验证它并建议主要的库(例如 sklearn)功能吗?这是我想出的:
从 sklearn 对 N 个观察值和 M 个变量 (M
训练集 - 约占总数据集的 80% 测试集——剩下的 20%
问:有没有一个函数可以选择测试集作为训练集的外推,而不是使用随机选择? (train_test_split 不这样做)
问:有没有一个函数可以通过正则化运行逻辑回归? StandardScaler 可能吗?
当 Logistic 回归完成后,我们如何使用结果:
我们是否只使用决策边界图并根据它是在图中的 IN 还是 OUT 来决定我们的新数据点?
我可以得到系数,但计算目标的公式是什么?是 sigmoid 伞下的线性 polinom 吗?这是一条路吗?
是否有一个函数可以计算我们的决定是正确的概率(是或否)?我可以使用 score 属性(KNeighborsClassifier)得到错误。还有 predict.proba 属性,但我不确定如何解释它。还有一个混淆矩阵,可以使用它的数字计算概率。什么是正确的方法?
除了 Logistic Regression 之外,还使用了其他函数,例如:
KNeighborsClassifier LDA等
与逻辑回归相比,它们扮演什么角色?必须如何使用它们?
谢谢
【问题讨论】:
哥们,问题太多了! @farhawa - 我将不胜感激地接受部分答案!:) 【参考方案1】:您的大部分问题都可以通过阅读sklearn linear model's Logistic Regression page 来解决。你没有提到任何数量的类,所以我将假设两个类(二进制)来回答你的问题。
以下是我的建议:
有人可以帮我验证它并建议主要的库(例如 sklearn)功能吗?
sklearn
在逻辑回归方面有几个选择。既然您提到您使用逻辑回归进行分类,我将把我的建议限制在以下几点:
-
sklearn.linear_model.LogisticRegression
sklearn.linear_model.SGDClassifier
我假设您了解逻辑回归的基础知识。 LogisticRegression
和 SGDClasisfier
之间的区别在于用于估计回归器系数的求解器。 LogisticRegression
使用 ‘newton-cg’
、'lbfgs’
、‘liblinear’
或 ‘sag’
估计回归量。默认设置为'liblinear'
,但您可以通过更改solver
参数来更改此设置。 SGDClassifier
使用随机梯度下降求解器。有关差异的更详细说明,请参阅提供的链接。
是否有一个函数可以运行逻辑回归 正则化?
以上三个建议都使用参数penalty
来设置正则化类型。
当 Logistic 回归完成后,我们如何使用结果?
逻辑回归完成后,predict_proba(X)
可用于确定 X 的每个观察值的“属于某个类别的概率”(其中样本按行存储)。 predict_proba(X)
将返回一个 Nx2 数组,其中第一列被解释为“属于负类的概率”,第二列被解释为“属于正类的概率”。例如,如果您只对属于正类的概率感兴趣,则只需查看第二列。
predict_proba(X)
的第二列等价于sigmoid(coef_*X+intercept_)
,其中sigmoid
只是sigmoid 函数。
还有一个混淆矩阵,可以使用它的数字计算概率。什么是正确的方法?
混淆矩阵是一种错误度量,可用于确定有多少观察被正确和错误地分类(以及它们以何种方式不正确或正确;真阳性/真阴性/假阳性/假阴性)。由于逻辑回归的结果是概率,因此您需要对您的值设置阈值(即 0.5)以“分配”每个观察值所属的类别。完成此操作后,您可以使用混淆矩阵。没有“正确”的方法来计算误差。有许多可以使用的错误度量。 Damien Françios' error cheatsheet 的第一页为您提供了用于二进制分类的错误度量的各种选项。您最终选择的那个取决于几个因素,例如每个错误的成本、每个类中是否有相同数量的训练观察等。
【讨论】:
以上是关于逻辑回归框架的主要内容,如果未能解决你的问题,请参考以下文章