代码编织梦想

1、线性回归:一种最基本的回归分析方法,有着广泛的应用,线性回归研究的是自变量和应变量之间的线性关系,对于特征x=\left ( x^1,x^2,.....,x^n \right )以及其对应的标签y,线性回归假设二者之间存在如下关系:

y\approx f(x)=x\left ( \omega_1 x^1+\omega_2 x^2+\omega_3 x^3+\cdot \cdot \cdot \cdot +\omega_n x^n\right )=\sum_{i=1}^{n}\omega_ix^i+b=\omega^Tx+b

omega和b分别表示待学习的权重和偏置,直观上,权重omega的各个分量反应了每个特征变量的重要程度,权重越大,对应的随机变量的重要程度越大,反之越小,线性回归的目标是求解权重向量omega和偏置值b,使得f(x)尽可能的接近y,最基本的方法是最小二乘法,最小二乘法是一种不带条件的最优化问题,其目标是让整个样本集合上的预测值和真实值之间的欧式距离之和最小。

首先,我们来看一看一元线性回归

y\approx f\left ( x \right )=\omega x+b

其实这个我之前有两篇利用实现教科书上线性回归的博文,一个用的是c++的eigen包,有些慢,另一个用的是python,用numpy来解决的,今天再简单写一下,完整的推导在eigen那篇文章里面:

图1:一元线性回归推导

 然后,我在这里把我的那两篇博客链接挂上,里面的代码是可以直接用的,eigen包的话,VS的nuget可以下载,include就行,或者你可以直接去Eigen官网上去下载,然后在VS的附加包里面给添加上就好,numpy的话,直接pip install numpy,这个我的关于numpy的博客:Python科学计算:numpy系列里面都有的,

(5条消息) numpy的一次小尝试:一元线性回归分析_鲁智深坐捻绣花针的博客-CSDN博客(5条消息) 利用Eigen完成一元线性回归_鲁智深坐捻绣花针的博客-CSDN博客

2、多元线性回归:

      同样的,可以把b看成是权重,这样就有了:

\left\{\begin{matrix} & \omega=(\omega_1,\omega_2,.....,\omega_n,b)) & \\ & x=(x^1,x^2,.....,x^n,1))& \end{matrix}\right.

  这个时候,等式就能够表示成   

  y \approx f(x)=\omega^Tx     

这个时候,我们给定空间中的一组样本点:D=\left \{ (x_1,y_1),(x_2,y_2),....(x_n,y_n) \right \}  ,优化目标就是:

minJ(\omega)=min(Y-X\omega)^T(Y-X\omega)   

其中,X是样本矩阵的增广矩阵:

                                        

X=\begin{bmatrix} x_{1}^{1}& x_{1}^{2} & x_{1}^{3} & \cdots & x_{1}^{m} & 1& \\ x_{2}^{1}& x_{2}^{2} & x_{2}^{3} & \cdots & x_{2}^{m} & 1 &\\ x_{3}^{1}& x_{3}^{2} & x_{3}^{3} & \cdots & x_{3}^{m} &1& \\ \vdots & \vdots& \vdots& \ddots & \vdots & \vdots&\\ x_{m}^{1}& x_{m}^{2} & x_{m}^{3} & \cdots & x_{m}^{m} & 1&\\ \end{bmatrix}

  Y对应的标签向量是:

 Y=(y_1,y_2,\cdots,y_n)^T             

求解就得:

\omega=(X^TX)^{-1}X^TY

可以看到:只要是\left | X^TX \right |\neq 0,也就是说,  X^TX可逆,那么线性回归模型存在唯一解,样本集合中的样本太少或者是存在大量线性相关的维度,就可能会出现多个解的情况,所以,可以在原始线性回归模型的基础上增加正则化项目来降低模型的复杂度,使得模型变简单,优化目标就可以写作:

minJ(\omega)=min(Y-X\omega)^T(Y-X\omega)+\lambda||\omega||_2

这时,线性回归又被称为岭回归,求解:

\omega=(X^TX+\lambda I)^{-1}X^TY

其中,\lambda I是一个扰动想,这下,我们就能够降低模型的复杂度,防止过拟合,而且能够使上式中(X^TX+\lambda I)可逆,\omega有唯一解。如果我们采用的是L1正则化,线性回归模型又被称为Lasso(Least Absolute Shrinkage and Selection Operator)回归,这时,优化目标又可以写作:

minJ(\omega)=min(Y-X\omega)^T(Y-X\omega)+\lambda||\omega||_1

L1正则化能够得到比L2正则化更加稀疏的解,即\omega会有存在多个0元素,从而起到特征选择的作用,如果使用的是L1范数,则J(\omega)是不能连续求导的,因为L1范数使用绝对值表示,这时,就不能再用最小二乘法来进行求解,可以只用近端梯度下降进行求解(PGD)。线性模型通常是其他模型的基本组成单元,堆叠成为若干个线性模型,同时引入非线性化激活函数,就可以实现对任意数据的建模。

二、广义线性回归:

如果,y和x并非简单的直接呈线性关系,那么我们在使用线性回归模型的时候就会有很大的误差举个例子:

y=x^2+2x+1

我们取x_0=0,用泰勒展开的前三项进行拟合:

f(x)=f(x_0)+f^{'}(x_0)(x-x_0)+f^{''}(x_0)(x-x_0)^2

f(x)=1+2x+2x^2

来看看误差怎么样:

import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,5,100)
y=np.square(x)+2*x+1
y_approx=2*np.square(x)+2*x+1
err=y_approx-y
fig=plt.figure()
ax=fig.add_subplot(1,2,1)
ax.plot(x,y,"b",label="y=x^2+2x+1")
ax.plot(x,y_approx,'g',label="1+2x+2x^2")
ax.legend(loc="best")
ax2=fig.add_subplot(1,2,2)
ax2.plot(x,err,"r-",label="error")
ax2.legend(loc="best")
plt.show()

 来看看误差:

图2:拟合效果和误差

 好家伙,拟合的,根没拟合一样,只有最开始那一点拟合的还行。

那么怎么解决呢,人们想到的最简朴的办法就是,寻找一个函数g(y)使得g(y)和x是线性关系,这个样子我们就可以进行线性回归,这样的回归叫做广义回归,实际场景中,就是这个函数关系G最难选择,其他的到都不怎么难。

1、逻辑回归:

通过回归对数几率的方式将线性回归应用于分类任务,对于一个二分类问题,令Y\in \left \{ 0,1 \right \}表示样本x对应的类别变量,设x属于类别一的概率是P(Y=1 |x )=p那么自然就有其对立面:P(Y=0|x)=1-p,比值\frac{p}{1-p}称作几率,几率的对数即为对数几率:

\ln \frac{p}{1-p}

逻辑回归通过回归上式来间接的得到p的值,即:

\ln \frac{p}{1-p}=\omega^Tx+b

解得:

p=\frac{1}{1+e^{-(\omega^Tx+b)}}

我们令\left\{\begin{matrix} & \omega=(\omega_1,\omega_2,.....,\omega_n,b)) & \\ & x=(x^1,x^2,.....,x^n,1))& \end{matrix}\right.,就有

p=\frac{1}{1+e^{-(\omega^Tx)}}

因为样本集合给定的样本属于概率非0即1的那种,所以就没法子用最小二乘法来求解,但是,可以用极大似然估计来求解:

L(\omega)=\prod_{i=1}^{m}p^{y_i}(1-p)^{1-y_i}

 他的对数似然函数就是:

L(\omega)=\sum_{i=1}^{m}(y_i\ln p+(1-y_i)\ln (1-p))=\sum_{i=1}^{m}(y_i\omega^Tx_i-\ln(1+e^{\omega^T x_i}))

然后,就可以用经典启发式最优化算法梯度下降法来求解上式。

同时,二分类也可以扩展到多分类问题:

\omega=\omega_1-\omega_0,代入p=\frac{1}{1+e^{-(\omega^Tx)}}则会得到:

\left\{\begin{matrix} P(Y=1|X)=p=\frac{1}{1+e^{-(\omega ^Tx)}}=\frac{e^{\omega_1 ^Tx}}{e^{\omega_0 ^Tx}+e^{\omega_1 ^Tx}}& \\ P(Y=1|X)=1-p=\frac{e^{\omega_0 ^Tx}}{e^{\omega_0 ^Tx}+e^{\omega_1 ^Tx}} & \end{matrix}\right.

如果说类别数目是K的话,有

P(Y=i|x)=\frac{e^{\omega_i^Tx}}{\sum_{k=0}^{K-1}e^{\omega_k^T x}},i=0,1,2\cdots,K-1

最后,得到的是

P(Y=i|x)=\frac{e^{(\omega_i^T-\omega_0^T)x}}{\sum_{k=1}^{K-1}1+e^{(\omega_k^T-\omega_0^T) x}},i=0,1,2\cdots,K-1

然后将上式用极大似然估计的方式转换成对数似然函数,通过梯度下降法求解就好。

交叉熵损失函数:

这时神经网络中常用的一种损失函数,K分类问题中,假设样本x_i属于每个类别的真实概率为p_i=\left \{ p_i^0, p_i^1,\cdots, p_i^K-1 \right \},其中只有样本所属的类被的位置值为1,其余位置都是0,假设分类模型的参数为\omega,其预测的样本x_i属于每个类别的概率q= \left \{q_i^0, q_i^1, \cdots,q_i^{K-1}\right \}满足:

q_i的和为1,样本x_i的交叉熵损失定义为:

J_i \left (\omega \right )=-\sum_{k=0}^{K-1}p_i^k \ln q_i^k

对所有样本有:

J_i \left (\omega \right )=\sum_{i=1}^{m}J_i(\omega)=-\sum_{i=1}^{m}\sum_{k=0}^{K-1}p_i^k \ln q_i^k

 K=2时,就是逻辑回归的第一个,所以,交叉熵损失函数和通过极大似然函数导出的对数似然函数相类似,可以通过梯度下降方法来求解。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/faltas/article/details/129809515

机器学习算法——逻辑斯谛回归模型&最大熵模型_小简铺子的博客-爱代码爱编程

1前言 本篇博客主要记录两个分类模型(逻辑斯谛回归模型和最大熵模型)原理及模型的代码实现,将这两个模型放一块的原因是这两个模型都是对数线性模型,都是由条件概率分布表示P(Y|X). 这两种机器学习的算法的实例都是基于

李航《统计学习方法》——第六章逻辑回归和最大熵模型笔记及理解+习题-爱代码爱编程

文章目录 1 模型1.1 二项逻辑回归模型1.1.1 逻辑斯蒂分布1.1.2 线性模型1.1.3 二项逻辑回归模型角度一角度二 1.1.4 多项逻辑回归1.1.5 逻辑回归形象化理解 1.2 最大熵

机器学习:逻辑回归(logistics regression)-爱代码爱编程

title: 机器学习:逻辑回归(logistics regression) date: 2019-11-30 20:55:06 mathjax: true categories: 机器学习 tags:机器学习第5章 Logistic回归 Logistic 回归 概述 Logistic 回归 或者叫逻辑回归 虽然名字有回归,但是它是用来做分类的。其主

【机器学习基础】数学推导+纯Python实现机器学习算法22:最大熵模型-爱代码爱编程

Python机器学习算法实现 Author:louwill Machine Learning Lab       最大熵原理(Maximum Entropy Principle)是一种基于信息熵理论的一般原理,在机器学习领域也有着广泛的应用价值。基于最大熵原理确定的分类模型也叫最大熵模型。所谓信息熵,即一种描述信息不确定程度的量。而最大熵方法

logit模型应用实例_第六章 逻辑斯谛回归与最大熵模型(第1节 逻辑斯谛回归模型)...-爱代码爱编程

逻辑斯谛回归(logistic regression)是经典的分类方法。 最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型(maximum entropy model)。 逻辑斯谛回归模型与最大熵模型都属于对数线性模型。 首先我们来弄清楚这两个模型,然后理解它们学习的算法。 一、逻辑斯谛回归模型 1.逻辑斯谛分布 先来看逻辑

最大熵阈值python_第六章-逻辑斯蒂回归和最大熵模型-爱代码爱编程

逻辑斯谛回归是统计学习中的经典分类方法,和最大熵模型相比,具有以下的共同点和区别:共同点都属于概率模型,该模型要寻找的是给定一个x,得到输出变量Y的概率分布P(Y|x),如果是二分类,Y取值为0或1,如果是多分类,Y有K个不同的类别。 都属于对数线性模型,对概率分布P(Y|x)取对数,可得lnP(Y|x)=w * x关于x的线性函数。 两个模型之前

python逻辑回归的主要参数_python机器学习(六)回归算法-逻辑回归-爱代码爱编程

逻辑回归 同步更新在个人网站:http://www.wangpengcufe.com/machinelearning/pythonml-pythonml6/ 一、概述 1.1、概念 是一种名为“回归”的线性分类器,是由线性回归变化而来的,一种广泛使用于分类问题中的广义回归算法。 1.2、按预测标签的数据类型分 连续型变量:通过线性回归方

机器学习 | 逻辑回归与最大熵模型理论知识(一)-爱代码爱编程

公众号后台回复“图书“,了解更多号主新书内容 作者:pandaww 来源:BBIT 机器学习 | 逻辑回归与最大熵模型理论知识(一) 今天,我们开始对逻辑回归与最大熵模型的学习。 逻辑回归是统计学习中的经典分类方法,最大熵是概率模型学习的一个准则,将其推广到分类问题得到最大熵模型。逻辑回归模型与最大熵模型都属于对数线性模型。今天,我

python逻辑回归训练预测_[Python] 机器学习笔记 基于逻辑回归的分类预测-爱代码爱编程

导学问题 什么是逻辑回归(一),逻辑回归的推导(二 3),损失函数的推导(二 4) 逻辑回归与SVM的异同 逻辑回归和SVM都用来做分类,都是基于回归的概念 SVM的处理方法是只考虑 support vectors,也就是和分类最相关的少数点,去学习分类器 逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关

机器学习-最全LR逻辑回归原理以及python代码实现-爱代码爱编程

简介 逻辑回归是一种分类模型,多用于二分类,以下讨论二分类情况。 逻辑回归是一种广义线性回归模型,它与传统线性回归的区别是,传统线性回归直接将 w x +

笔记|统计学习方法:逻辑斯蒂回归与最大熵-爱代码爱编程

基本介绍 逻辑斯蒂回归(Logistic Regression),虽然被称为回归,其实是一种解决分类问题的算法。 LR模型是在线性模型的基础上,使用sigmoid激励函数,将线性模型的结果压缩到 [ 0

机器学习-逻辑斯蒂回归与最大熵模型概述-数学推导及乳腺癌数据分类python实现_菜菜小硕的博客-爱代码爱编程

文章目录 1. 逻辑蒂斯回归1.1 二项逻辑斯蒂回归模型1.2 逻辑蒂斯回归模型的特点1.3 模型参数估计2. 最大熵模型2.1最大熵模型(Maximum Entropy Model)2.2 定义最大熵模型3. Python实现3.1 数据集3.2 代码及运行结果4. 总结 1. 逻辑蒂斯回归 逻辑蒂斯回归(logistic regressi

学习笔记:机器学习之逻辑回归_萌龙如我们的博客-爱代码爱编程

 活动地址:CSDN21天学习挑战赛 1 简介         逻辑回归不是用于回归任务而是分类任务 2 逻辑回归 2.1 逻辑斯蒂分布         设X是连续随机变量,X服从Logistic distribution。 分布函数为: 图像为:   2.2 二项逻辑回归模型         二项逻辑回归模型是用条件

各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、k 近邻、svm、逻辑回归最大熵模型)?..._小白学视觉的博客-爱代码爱编程

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 链接:https://www.zhihu.com/question/26726794 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 k近邻、贝叶斯、决策树、svm、逻辑斯蒂回归和最大熵模型、隐马尔科夫、条件随机场、adaboost、em 这些在一般工作中分别

机器学习 | 逻辑回归-爱代码爱编程

一.基本原理 面对一个分类问题,建立代价函数,通过优化方法迭代求解出最优的模型参数,然后测试验证我们这个求解的模型的好坏。逻辑回归是一种分类方法,主要用于二分类问题,应用于研究某些事件发生的概率 二.优缺点 优点 计算代价不高,易于理解和实现速度快,适合二分类问题简单易于理解,直接看到各个特征的权重能容易更新模型吸收新的数据不受多重共线性的影响(可

机器学习 笔记06:最大熵模型_最大熵模型积分边界的经验值是多少-爱代码爱编程

目录 1、最大熵原理 1.1 离散情形 1.2 连续情形 2、最大熵模型 3、拉格朗日乘子法 4、最大熵模型学习  5、极大似然估计 6、模型学习的最优化算法 1. 梯度下降法——经典 1.1 求极小值原理  1.2 梯度下降法求最大熵模型——求条件概率分布 2. 牛顿法、拟牛顿法 2.1 牛顿法求零点 2.2 牛顿法求极小值