码迷,mamicode.com
首页 > 其他好文 > 详细

逻辑回归、正则化、感知机

时间:2020-05-13 16:36:28      阅读:60      评论:0      收藏:0      [点我收藏+]

标签:lnl   保存   定义   case   效果   区间   mode   sci   sof   

逻辑回归、正则化、感知机

正则化

为避免过拟合,增强模型的泛化能力,可以使用正则化的方法。

  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)
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\)就越接近普通的线性回归系数。

逻辑回归

  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

    解决样本失衡问题。

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)

感知机模型

  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. 感知机模型是支持向量机、神经网络等算法的鼻祖

逻辑回归、正则化、感知机

标签:lnl   保存   定义   case   效果   区间   mode   sci   sof   

原文地址:https://www.cnblogs.com/guesswhy/p/12882850.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!