逻辑回归、正则化、感知机
逻辑回归、正则化、感知机
正则化
为避免过拟合,增强模型的泛化能力,可以使用正则化的方法。
-
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\)范数。
-
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)
print(ridge.coef_) #打印模型参数
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.append(clf.coef_)#将参数保存
\(\alpha\)越大,那么正则项惩罚越厉害,得到的回归系数\(\theta\)就越小,最终趋近于0;
\(\alpha\)越小,那么正则项惩罚越小,得到的回归系数\(\theta\)就越接近普通的线性回归系数。
逻辑回归
-
逻辑回归是一个分类的算法。
对于离散型的数据,如何进行分类,对于输入向量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}} \] -
逻辑回归的损失函数
逻辑回归的损失函数经常使用极大似然函数表示,并对其取对数。
\[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)) \] -
逻辑回归优化方法
\[\theta=\theta-\alpha X^T(h_\theta(X)-Y) \] -
推广到多元逻辑回归
某种类型为正值,其他为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逻辑回归库使用
-
常用的类
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\theta_ix_i=0\),能够将数据完全分开,定义为:\(y=sign(\theta\cdot x)\)其中:
\[sing(x)= \begin{cases} -1\quad x\lt0\\ 1\quad x\ge0 \end{cases} \] -
损失函数
期望所有的样本到超平面的距离之和最小,点到超平面的距离为\(\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)} \] -
损失函数的优化方法
一般采用梯度下降法进行优化
-
感知机模型是支持向量机、神经网络等算法的鼻祖

浙公网安备 33010602011771号