逻辑回归、正则化、感知机
逻辑回归、正则化、感知机
正则化
为避免过拟合,增强模型的泛化能⼒,可以使⽤正则化的⽅法。
1. Lasso回归--L1正则化
\[J(\theta)=\frac{1}{2n}(\mathtt X\theta-Y)^T(\mathtt X\theta-Y)+\alpha\lVert \theta\rVert_1 \]
\(\alpha\)为常数系数,需要进⾏调优,\(\lVert\theta\rVert_1为\)\(L_1\)范数。
2. Ridge回归--L2正则化
\[J(\theta)=\frac{1}{2}(\mathtt X\theta-Y)^T(\mathtt X\theta-Y)+\frac{1}{2}\alpha\lVert \theta\rVert_2^2 \]
\(\alpha\)为常数系数,需要进⾏调优,\(\lVert\theta\rVert_2^2\)为\(L_2\)范数。
使⽤scikit-learn运⾏Ridge回归
ridge = Ridge(alpha=1)
ridge.fit(X_train,y_train)
f_) #打印模型参数
print(ridge.intercept_)
使⽤scikit-learn研究超参数\(\alpha\)和回归系数\(\theta\)的关系
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.f_)#将参数保存
\(\alpha\)越⼤,那么正则项惩罚越厉害,得到的回归系数\(\theta\)就越⼩,最终趋近于0;
\(\alpha\)越⼩,那么正则项惩罚越⼩,得到的回归系数\(\theta\)就越接近普通的线性回归系数。
逻辑回归
1. 逻辑回归是⼀个分类的算法。
对于离散型的数据,如何进⾏分类,对于输⼊向量X,构建函数\(g(\mathtt X)\)使得其值落于某个区间内的话就分为A类,否则分为B 类,这就是最基本的⽤逻辑回归做⼆分类的思想。这个函数g我们经常使⽤sigmoid函数,具有较好的性质。
\[g(z)=\frac{1}{1+e^{-z}}\\ h_\theta(x)=\frac{1}{1+e^{-x\theta}}\\ h_\theta(\mathtt X)=\frac{1}{1+e^{-X\theta}} \]
2. 逻辑回归的损失函数
逻辑回归的损失函数经常使⽤极⼤似然函数表⽰,并对其取对数。
\[L(\theta)=\prod_{i=1}^{m}(h_\theta(x^{(i)}))^{y^{(i)}}(1-h_\theta(x^{(i)}))^{1-y^{(i)}}\\ J(\theta)=-lnL(\theta)=-\sum_{i=1}^{m}
(y^{(i)}\log(h_\theta(x^{(i)}))+(1-y^{(i)})\log(1-h_\theta(x^{(i)})))\\ J(\theta)=-\mathtt Y^T\log h_\theta(\mathtt X)-(\mathtt E-\mathtt Y)^T\log(\mathtt E-h_\theta(\mathtt X)) \]
3. 逻辑回归优化⽅法
\[\theta=\theta-\alpha X^T(h_\theta(X)-Y) \]
4. 推⼴到多元逻辑回归
某种类型为正值,其他为0,这种⽅法被称为one-vs-rest,简称OvR;
选择两部分的样本分别做逻辑回归,称为Many-vs-Many,简称MvM;
⼆元逻辑回归的概率表⽰如下:
\[P(y=1|x,\theta)=h_\theta(x)=\frac{1}{1+e^{-x\theta}}=\frac{e^{x\theta}}{1+e^{x\theta}}\\ P(y=0|x,\theta)=1-h_\theta(x)=\frac{1}
{1+e^{x\theta}}\\ \]
其中,y只能取0和1,推⼴到多分类问题,使⽤softmax函数
\[P(y=k|x,\theta)=\frac{e^{x\theta_k}}{1+\sum_{t=1}^{K-1}e^{x\theta_t}}\quad k=1,2,...,K-1\\ P(y=K|x,\theta)=\frac{1}{1+\sum_{t=1}^{K-1}e^{x\theta_t}}\\ \]
scikit-learn逻辑回归库使⽤
1. 常⽤的类
LogisticRegression
LogisticRegressionCV:使⽤了交叉验证来选择正则化参数C
logistic_regression_path:主要是为了选择模型时使⽤,确定回归系数和正则化参数。
2. 正则化参数penalty
penalty的值可以是l1或者l2,分别对应L1和L2正则化,默认是L2。⼀般选择L2就够了,如果还是过拟合,即预测效果差的情况,可以选择L1。如果模型特征⾮常多,希望⼀些不重要的参数系数归零,从⽽
使模型系数称稀疏化,也可使⽤L1正则化。
penalty会影响损失函数的优化算法,即solver选择,如果L2则solver可以选择以下四种:newtow-cg、lbfgs、linear、sag,如果是L1,只能选择linear,因为L1正则化loss函数不是连续可导的。
3. 优化算法参数solver
newtow-cg、lbfgs、linear、sag
4. 分类⽅法选择参数multi_class
ovr和multinomial
5. 类型权重参数class_weight
⽤于标⽰分类模型各种类型的权重,解决“误分类代价很⾼”和“样本⾼度失衡”的问题。
6. 样本权重参数sample_weight
解决样本失衡问题。
del_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)
感知机模型
1. 模型概念
感知机模型是存在⼀个超平⾯\(\sum_{i=0}^m\theta_ix_i=0\),能够将数据完全分开,定义为:\(y=sign(\theta\cdot x)\)其中:
\[sing(x)= \begin{cases} -1\quad x\lt0\\ 1\quad x\ge0 \end{cases} \]
2. 损失函数
期望所有的样本到超平⾯的距离之和最⼩,点到超平⾯的距离为\(\frac{-y^{(i)}\theta\cdot x^{(i)}}{\lVert \theta\rVert^2}\),其中\
(\lVert\theta\rVert_2\)为L2范数。所有点到超平⾯的距离之和为\(\frac{-\sum_{x_i\in M}y^{(i)}\theta\cdot x^{(i)}}{\lVert\theta\rVert_2}\),可以简化为
\[J(\theta)=-\sum_{x_i\in M}y^{(i)}\theta\cdot x^{(i)} \]
3. 损失函数的优化⽅法
⼀般采⽤梯度下降法进⾏优化
正则化的回归分析4. 感知机模型是⽀持向量机、神经⽹络等算法的⿐祖
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论