逻辑回归正则化感知机
Posted guesswhy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑回归正则化感知机相关的知识,希望对你有一定的参考价值。
逻辑回归、正则化、感知机
正则化
为避免过拟合,增强模型的泛化能力,可以使用正则化的方法。
-
Lasso回归--L1正则化
[J( heta)=frac{1}{2n}(mathtt X heta-Y)^T(mathtt X heta-Y)+alphalVert heta Vert_1 ](alpha)为常数系数,需要进行调优,(lVert heta Vert_1为)(L_1)范数。
-
Ridge回归--L2正则化
[J( heta)=frac{1}{2}(mathtt X heta-Y)^T(mathtt X heta-Y)+frac{1}{2}alphalVert heta Vert_2^2 ](alpha)为常数系数,需要进行调优,(lVert heta Vert_2^2)为(L_2)范数。
使用scikit-learn运行Ridge回归
ridge = Ridge(alpha=1)
ridge.fit(X_train,y_train)
print(ridge.coef_) #打印模型参数
print(ridge.intercept_)
使用scikit-learn研究超参数(alpha)和回归系数( heta)的关系
alphas = np.logspace(-10,-2,200) #生成200个alpha在10的-10次方到-2次方之间
clf = linear_model.Ridge(fit_intercept=False)
coefs = []
for a in alphas:
clf.set_params(alpha=a)
clf.fit(X,y)
codefs.append(clf.coef_)#将参数保存
(alpha)越大,那么正则项惩罚越厉害,得到的回归系数( heta)就越小,最终趋近于0;
(alpha)越小,那么正则项惩罚越小,得到的回归系数( heta)就越接近普通的线性回归系数。
逻辑回归
-
逻辑回归是一个分类的算法。
对于离散型的数据,如何进行分类,对于输入向量X,构建函数(g(mathtt X))使得其值落于某个区间内的话就分为A类,否则分为B类,这就是最基本的用逻辑回归做二分类的思想。这个函数g我们经常使用sigmoid函数,具有较好的性质。
[g(z)=frac{1}{1+e^{-z}}h_ heta(x)=frac{1}{1+e^{-x heta}}h_ heta(mathtt X)=frac{1}{1+e^{-X heta}} ] -
逻辑回归的损失函数
逻辑回归的损失函数经常使用极大似然函数表示,并对其取对数。
[L( heta)=prod_{i=1}^{m}(h_ heta(x^{(i)}))^{y^{(i)}}(1-h_ heta(x^{(i)}))^{1-y^{(i)}}J( heta)=-lnL( heta)=-sum_{i=1}^{m}(y^{(i)}log(h_ heta(x^{(i)}))+(1-y^{(i)})log(1-h_ heta(x^{(i)})))J( heta)=-mathtt Y^Tlog h_ heta(mathtt X)-(mathtt E-mathtt Y)^Tlog(mathtt E-h_ heta(mathtt X)) ] -
逻辑回归优化方法
[ heta= heta-alpha X^T(h_ heta(X)-Y) ] -
推广到多元逻辑回归
某种类型为正值,其他为0,这种方法被称为one-vs-rest,简称OvR;
选择两部分的样本分别做逻辑回归,称为Many-vs-Many,简称MvM;
二元逻辑回归的概率表示如下:
[P(y=1|x, heta)=h_ heta(x)=frac{1}{1+e^{-x heta}}=frac{e^{x heta}}{1+e^{x heta}}P(y=0|x, heta)=1-h_ heta(x)=frac{1}{1+e^{x heta}}\]其中,y只能取0和1,推广到多分类问题,使用softmax函数
[P(y=k|x, heta)=frac{e^{x heta_k}}{1+sum_{t=1}^{K-1}e^{x heta_t}}quad k=1,2,...,K-1P(y=K|x, heta)=frac{1}{1+sum_{t=1}^{K-1}e^{x heta_t}}\]
scikit-learn逻辑回归库使用
-
常用的类
LogisticRegression
LogisticRegressionCV:使用了交叉验证来选择正则化参数C
logistic_regression_path:主要是为了选择模型时使用,确定回归系数和正则化参数。
-
正则化参数penalty
penalty的值可以是l1或者l2,分别对应L1和L2正则化,默认是L2。一般选择L2就够了,如果还是过拟合,即预测效果差的情况,可以选择L1。如果模型特征非常多,希望一些不重要的参数系数归零,从而使模型系数称稀疏化,也可使用L1正则化。
penalty会影响损失函数的优化算法,即solver选择,如果L2则solver可以选择以下四种:newtow-cg、lbfgs、linear、sag,如果是L1,只能选择linear,因为L1正则化loss函数不是连续可导的。
-
优化算法参数solver
newtow-cg、lbfgs、linear、sag
-
分类方法选择参数multi_class
ovr和multinomial
-
类型权重参数class_weight
用于标示分类模型各种类型的权重,解决“误分类代价很高”和“样本高度失衡”的问题。
-
样本权重参数sample_weight
解决样本失衡问题。
from sklearn.model_selection import GridSearchCV
from sklearn.linear_model import LogisticRegression
from sklearn.learning_curve import learning_curve
param_LR = {‘C‘: [0.1, 1, 2]}
gsearch_LR = GridSearchCV(estimator=LogisticRegression(penalty=‘l1‘,solver=‘liblinear‘),
param_grid=param_LR, cv=3)
感知机模型
-
模型概念
感知机模型是存在一个超平面(sum_{i=0}^m heta_ix_i=0),能够将数据完全分开,定义为:(y=sign( hetacdot x))其中:
[sing(x)= egin{cases} -1quad xlt01quad xge0 end{cases} ] -
损失函数
期望所有的样本到超平面的距离之和最小,点到超平面的距离为(frac{-y^{(i)} hetacdot x^{(i)}}{lVert heta Vert^2}),其中(lVert heta Vert_2)为L2范数。所有点到超平面的距离之和为(frac{-sum_{x_iin M}y^{(i)} hetacdot x^{(i)}}{lVert heta Vert_2}),可以简化为
[J( heta)=-sum_{x_iin M}y^{(i)} hetacdot x^{(i)} ] -
损失函数的优化方法
一般采用梯度下降法进行优化
-
感知机模型是支持向量机、神经网络等算法的鼻祖
以上是关于逻辑回归正则化感知机的主要内容,如果未能解决你的问题,请参考以下文章