文章目录

  • 线性回归建模
  • 线性回归损失函数、代价函数、目标函数
  • 线性回归模型的求解方法
    • 1. 梯度下降法
    • 2. 最小二乘法
  • 带有正则化项的回归模型
  • 回归任务的评价指标
    • 1. 平均绝对误差(MAE)
    • 2. 均方误差(MSE)
    • 3. 均方根误差(RMSE)
    • 4. 决定系数(R2R^2R2)

线性回归建模

首先考虑一个情景,假设我们希望用线性回归预测房屋的售价。一般网上公开的房价预测数据集都至少包含房屋的面积、厅室数量等特征以及房屋的售价:

面积(x1x_1x1​) 厅室数量(x2x_2x2​) 价格(万元)(y)
64 3 225
59 3 185
65 3 208
116 4 508
…… …… ……

对此数据,我们可以建立售价和特征属性之间的关系:
f(x)=w0+w1x1+w2x2f(x)=w_0+w_1x_1+w_2x_2 f(x)=w0​+w1​x1​+w2​x2​
更一般的,假如我们有数据集:
{(x(1),y(1),((x(2),y(2)),...,((x(n),y(n))}xi=(x1;x2;x3;...;xd),yi∈R\{(x^{(1)},y^{(1)},((x^{(2)},y^{(2)}),...,((x^{(n)},y^{(n)})\} \\ x_i = (x_{1};x_{2};x_{3};...;x_{d}),y_i\in R {(x(1),y(1),((x(2),y(2)),...,((x(n),y(n))}xi​=(x1​;x2​;x3​;...;xd​),yi​∈R
其中,n 表示样本的个数,d表示特征的个数。则y与样本x的特征之间的关系为:
f(x)=w0+w1x1+w2x2+...+wdxd=∑i=0dwixi\begin{aligned} f(x) &= w_0 + w_1x_1 + w_2x_2 + ... + w_dx_d \\ &= \sum_{i=0}^{d}w_ix_i \\ \end{aligned} f(x)​=w0​+w1​x1​+w2​x2​+...+wd​xd​=i=0∑d​wi​xi​​
其中,我们假设x0x_0x0​=1,下文都作此假设。

线性回归损失函数、代价函数、目标函数

  1. 损失函数:度量单个样本的错误程度。常用的损失函数有:0-1损失函数、平方损失函数、绝对损失函数、对数损失函数等。
  2. 代价函数:度量所有样本的平均错误程度,也就是所有样本损失函数的均值。常用的代价函数包括均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)等。
  3. 目标函数:代价函数与正则化函数的结合,也是最终要优化的函数。

我们的目标是找到一组合适的w,使得 f(x)≈yf(x)\approx yf(x)≈y 。对于回归问题,有许多性能度量方法,其中常用的一个是均方误差(MSE),即:
J(w)=12∑j=1n(fw(x(j))−y(j))2J(w)=\frac{1}{2}\sum_{j=1}^{n}(f_{w}(x^{(j)})-y^{(j)})^2 J(w)=21​j=1∑n​(fw​(x(j))−y(j))2
我们称J(w)J(w)J(w)为代价函数。注意到式子的系数不是1/n而是1/2,数是因为求导后的 J′(w)J'(w)J′(w) 系数为1,方便后续计算。为什么均方误差可以作为性能度量?可以从极大似然估计(概率角度)入手。

为了能够能精确的表达特征和目标值y的关系,引入了误差项ϵ,表示模型受到的未观测到的因素的影响。于是我们可以假设:
y(i)=wTx(i)+ϵ(i)y^{(i)} = w^T x^{(i)}+\epsilon^{(i)} y(i)=wTx(i)+ϵ(i)
使用回归模型需要满足许多前提假设,其中一个是要求ϵ独立同分布,且服从N(0,σ2)N(0, σ^2)N(0,σ2)的高斯分布(正态分布):
p(ϵ(i))=12πσexp(−(ϵ(i))22σ2)p(\epsilon^{(i)}) = \frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(\epsilon^{(i)})^2}{2\sigma^2}\right) p(ϵ(i))=2π​σ1​exp(−2σ2(ϵ(i))2​)
所以在给定w和x的前提下,y(i)y^{(i)}y(i) 服从N(wTx(i),σ2)N(w^T x^{(i)}, σ^2)N(wTx(i),σ2)的正态分布。
p(y(i)∣x(i);w)=12πσexp(−(y(i)−wTx(i))22σ2)p(y^{(i)}|x^{(i)};w) = \frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-w^T x^{(i)})^2}{2\sigma^2}\right) p(y(i)∣x(i);w)=2π​σ1​exp(−2σ2(y(i)−wTx(i))2​)
现在我们已经知道$y^{(i)} $的分布,但是我们不知道他的参数 wTx(i),σ2w^T x^{(i)}, σ^2wTx(i),σ2 ,极大似然估计法来正是用来解决此类问题的,假设样本独立同分布,最大化似然函数,来进行参数估计。最大化似然函数的原理说简单点就是在一次观测中,发生了的事件其概率应该大。概率大的事在观测中容易发生,所以我们希望让每一个p(y(i)∣x(i);w)p(y^{(i)}|x^{(i)};w)p(y(i)∣x(i);w)都最大化,这等效于他们的乘积最大化。于是不难得到似然函数:
L(w)=∏i=1n12πσexp(−(y(i)−wTx(i))22σ2)L(w) = \prod^n_{i=1}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-w^T x^{(i)})^2}{2\sigma^2}\right) L(w)=i=1∏n​2π​σ1​exp(−2σ2(y(i)−wTx(i))2​)
现在,目标转换为找到最佳的w,使得L(w)最大化,这就是极大似然估计的思想。我们通常对L(w)取对数,转换成加法的形式来方便计算:
L(w)=logL(w)=log∏i=1n12πσexp(−(y(i)−wTx(i))22σ2)=∑i=1nlog12πσexp(−(y(i)−wTx(i))22σ2)=nlog12πσ−1σ2⋅12∑i=1n((y(i)−wTx(i))2\begin{aligned} L(w) &= log L(w) \\ &= log \prod^n_{i=1}\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-w^T x^{(i)})^2} {2\sigma^2}\right) \\ & = \sum^n_{i=1}log\frac{1}{\sqrt{2\pi}\sigma}exp\left(-\frac{(y^{(i)}-w^T x^{(i)})^2}{2\sigma^2}\right) \\ & = nlog\frac{1}{{\sqrt{2\pi}\sigma}} - \frac{1}{\sigma^2} \cdot \frac{1}{2}\sum^n_{i=1}((y^{(i)}-w^T x^{(i)})^2 \end{aligned} L(w)​=logL(w)=logi=1∏n​2π​σ1​exp(−2σ2(y(i)−wTx(i))2​)=i=1∑n​log2π​σ1​exp(−2σ2(y(i)−wTx(i))2​)=nlog2π​σ1​−σ21​⋅21​i=1∑n​((y(i)−wTx(i))2​
因此,要最大化L(w)L(w)L(w)只需要最小化:
12∑i=1n((y(i)−wTx(i))2\frac{1}{2}\sum^n_{i=1}((y^{(i)}-w^T x^{(i)})^2 21​i=1∑n​((y(i)−wTx(i))2
这一结果即为均方误差的形式,因此使用J(w)J(w)J(w)作为代价函数是合理的。

线性回归模型的求解方法

1. 梯度下降法

随机初始化参数w,不端迭代,直到w达到收敛的状态,此时J(w)J(w)J(w)达到了最小值(有时候是局部最小值) :
wj=wj−α∂J(w)∂ww_j=w_j-\alpha\frac{\partial{J(w)}}{\partial w} wj​=wj​−α∂w∂J(w)​
上式中α为学习率,其中,
∂J(w)∂wj=∂∂wj12∑i=1n(fw(x)(i)−y(i))2=2∗12∑i=1n(fw(x)(i)−y(i))∗∂∂wj(fw(x)(i)−y(i))=∑i=1n(fw(x)(i)−y(i))∗∂∂wj(∑j=0dwjxj(i)−y(i)))=∑i=1n(fw(x)(i)−y(i))xj(i)\begin{aligned} \frac{\partial{J(w)}}{\partial w_j} &= \frac{\partial}{\partial w_j}\frac{1}{2}\sum_{i=1}^{n}(f_w(x)^{(i)}-y^{(i)})^2 \\ &= 2*\frac{1}{2}\sum_{i=1}^{n}(f_w(x)^{(i)}-y^{(i)})*\frac{\partial}{\partial w_j}(f_w(x)^{(i)}-y^{(i)}) \\ &= \sum_{i=1}^{n}(f_w(x)^{(i)}-y^{(i)})*\frac{\partial}{\partial w_j}(\sum_{j=0}^{d}w_jx_j^{(i)}-y^{(i)}))\\ &= \sum_{i=1}^{n}(f_w(x)^{(i)}-y^{(i)})x_j^{(i)} \\ \end{aligned} ∂wj​∂J(w)​​=∂wj​∂​21​i=1∑n​(fw​(x)(i)−y(i))2=2∗21​i=1∑n​(fw​(x)(i)−y(i))∗∂wj​∂​(fw​(x)(i)−y(i))=i=1∑n​(fw​(x)(i)−y(i))∗∂wj​∂​(j=0∑d​wj​xj(i)​−y(i)))=i=1∑n​(fw​(x)(i)−y(i))xj(i)​​
于是有:
wj=wj+α∑i=1n(y(i)−fw(x)(i))xj(i)w_j = w_j + \alpha\sum_{i=1}^{n}(y^{(i)}-f_w(x)^{(i)})x_j^{(i)} wj​=wj​+αi=1∑n​(y(i)−fw​(x)(i))xj(i)​
将上式向量化后得到:
w=w+α∑i=1n(y(i)−fw(x)(i))x(i)w = w + \alpha\sum_{i=1}^{n}(y^{(i)}-f_w(x)^{(i)})x^{(i)} w=w+αi=1∑n​(y(i)−fw​(x)(i))x(i)
可以看到上面的式子每次都迭代所有的样本,完成w的梯度下降,迭代过程如下图所示(越靠近内部,代价函数的值越小):

有时候我们不能将所有数据一次性加载到内存中,那么可以每次只用部分样本(例如16,32,64等)进行梯度下降,此时的梯度下降法又叫做批梯度下降法。

极端情况下,我们每次只对一个样本进行梯度下降,此时的梯度下降法又叫做随机梯度下降法(SGD)。好处是相对于使用多个样本的梯度下降法,SGD每次迭代计算量都比较小,因此迭代速度很快。缺点是容易受到噪声点的干扰,导致梯度下降的方向不稳定,如下图所示:

因此要结合实际场景选择合适的梯度下降算法。

2. 最小二乘法

令:
x(i)=[x0(i)x1(i)x2(i)…xd(i)]x^{(i)} = \left[ \begin{array} {cccc} x_0^{(i)}\\ x_1^{(i)}\\ x_2^{(i)}\\ \ldots \\ x_d^{(i)} \end{array} \right] x(i)=⎣⎢⎢⎢⎢⎢⎡​x0(i)​x1(i)​x2(i)​…xd(i)​​⎦⎥⎥⎥⎥⎥⎤​
X=[(x(0))T(x(1))T(x(2))T…(x(n))T]X = \left[ \begin{array} {cccc} (x^{(0)})^T\\ (x^{(1)})^T\\ (x^{(2)})^T\\ \ldots \\ (x^{(n)})^T \end{array} \right] X=⎣⎢⎢⎢⎢⎡​(x(0))T(x(1))T(x(2))T…(x(n))T​⎦⎥⎥⎥⎥⎤​
Y=[y(1)y(2)…y(n)]Y = \left[ \begin{array} {cccc} y^{(1)}\\ y^{(2)}\\ \ldots \\ y^{(n)} \end{array} \right] Y=⎣⎢⎢⎡​y(1)y(2)…y(n)​⎦⎥⎥⎤​
则有:
fw(x)=Xwf_w(x)=Xw fw​(x)=Xw
且每个样本的误差组成的矩阵为:
Xw−YXw -Y Xw−Y
进而有:
J(w)=12(Xw−Y)T(Xw−Y)J(w)=\frac{1}{2}(Xw-Y)^T(Xw-Y) J(w)=21​(Xw−Y)T(Xw−Y)
由于这是个存在最小值的凸函数,故对w求导可得:
∂J(w)∂w=∂∂w12(Xw−Y)T(Xw−Y)=12∂∂w(wTXTXw−YTXw−wTXTY−YTY)=12(∂(Xw)T∂wXw+∂(Xw)T∂wXw−XTY−XTY−0)=XTXw−XTY\begin{aligned} \frac{\partial{J(w)}}{\partial w} &= \frac{\partial}{\partial w} \frac{1}{2}(Xw-Y)^T(Xw-Y) \\ &= \frac{1}{2}\frac{\partial}{\partial w} (w^TX^TXw - Y^TXw-w^T X^TY - Y^TY) \\ &= \frac{1}{2}(\frac{\partial (Xw)^T}{\partial w}Xw + \frac{\partial (Xw)^T}{\partial w}Xw-X^TY -X^TY - 0) \\ &= X^TXw - X^TY \end{aligned}\\ ∂w∂J(w)​​=∂w∂​21​(Xw−Y)T(Xw−Y)=21​∂w∂​(wTXTXw−YTXw−wTXTY−YTY)=21​(∂w∂(Xw)T​Xw+∂w∂(Xw)T​Xw−XTY−XTY−0)=XTXw−XTY​

可能用到的向量和矩阵求导公式:
∂aTx∂x=∂xTa∂x=a∂xTAx∂x=(A+AT)x\cfrac{\partial\boldsymbol{a}^{\mathrm{T}}\boldsymbol{x}}{\partial\boldsymbol{x}}=\cfrac{\partial\boldsymbol{x}^{\mathrm{T}}\boldsymbol{a}}{\partial\boldsymbol{x}}=\boldsymbol{a} \\ \\ \cfrac{\partial\boldsymbol{x}^{\mathrm{T}}\mathbf{A}\boldsymbol{x}}{\partial\boldsymbol{x}}=(\mathbf{A}+\mathbf{A}^{\mathrm{T}})\boldsymbol{x} ∂x∂aTx​=∂x∂xTa​=a∂x∂xTAx​=(A+AT)x

令导数等于0,得到:
w=(XTX)−1XTYw = (X^TX)^{-1}X^TY w=(XTX)−1XTY

注意到上式存在矩阵的逆运算,一般样本数量大于维度的时候矩阵可逆,利用最小二乘法可以得到目标函数的闭式解。但是,当数据维度大于样本数时,X 非满秩,则XTXX^TXXTX的结果根据:
rank(AB)≤min⁡(rankA,rankB)rank(AB)\le \min{(rankA, rankB)} rank(AB)≤min(rankA,rankB)
可知XTXX^TXXTX也不是满秩的,故不可逆,此时会有无穷多个解。

带有正则化项的回归模型

为了简化模型复杂程度,缓解过拟合,可以引入正则化项。根据使用的正则项,回归模型又可以细分为:lasso回归、岭回归(ridge回归)、ElasticNet回归。

Lasso回归使用L1L_1L1​范数(向量中各个元素绝对值之和)来约束模型:
J(w)=12∑i=1n((y(i)−wTx(i))2+λ∥w∥1(1)J(w) = \frac{1}{2}\sum^n_{i=1}((y^{(i)}-w^T x^{(i)})^2 + \lambda \|w\|_1 \tag 1 J(w)=21​i=1∑n​((y(i)−wTx(i))2+λ∥w∥1​(1)
岭回归使用L2L_2L2​范数(向量各元素平方和的平方根)的平方来约束模型:
J(w)=12∑i=1n((y(i)−wTx(i))2+λ∥w∥22(2)J(w) = \frac{1}{2}\sum^n_{i=1}((y^{(i)}-w^T x^{(i)})^2 + \lambda \|w\|^2_2 \tag 2 J(w)=21​i=1∑n​((y(i)−wTx(i))2+λ∥w∥22​(2)

L1L_1L1​,L2L_2L2​都有助于减缓过拟合,但是前者可以使得部分不重要的特征xjx_jxj​对应的权重wjw_jwj​变为0,可以起到特征选择的作用。

为了更好的理解,我们假设模型只有两个参数x1,x2x_1, x_2x1​,x2​, 对应的权重为w1,w2w_1, w_2w1​,w2​,将公式(1),(2)等号右边的两项分别绘制图像可以得到:


公式(1),(2)的最优解应该是均方误差项和正则化项的折中,即出现在均方误差项和正则化项的交点处。从上图可以看到,采用L1L_1L1​范数时,交点出现在w2w_2w2​等于0的坐标轴上,意味着对于此模型特征x2x_2x2​并没有起到作用,可以舍去。而采用L2L_2L2​范数的话,交点更容易落在某个象限中,即$w_1, w_2 不等于0。总的来说,就是不等于0。总的来说,就是不等于0。总的来说,就是L_1范数比范数比范数比L_2$范数更容易得到稀疏的解。

ElasticNet回归则是同时使用了L1L_1L1​,L2L_2L2​来约束模型:
J(w)=12∑i=1n((y(i)−wTx(i))2+λ1∥w∥1+λ2∥w∥22J(w) = \frac{1}{2}\sum^n_{i=1}((y^{(i)}-w^T x^{(i)})^2 + \lambda_1 \left \| {w} \right \|_1 + \lambda_2\left \| {w} \right \|_2^2 J(w)=21​i=1∑n​((y(i)−wTx(i))2+λ1​∥w∥1​+λ2​∥w∥22​
ElasticNet回归在具有多个特征,并且在特征之间具有一定关联的数据中比较有用。

回归任务的评价指标

1. 平均绝对误差(MAE)

平均绝对误差也叫L1L_1L1​范数损失,公式为:
MAE=1n∑i=1n∣(y(i)−y^(i)∣MAE = \frac{1}{n}\sum^{n}_{i=1} | (y^{(i)} - \hat y^{(i)} | MAE=n1​i=1∑n​∣(y(i)−y^​(i)∣
其中n为样本的个数,y^(i)\hat y^{(i)}y^​(i) 表示第i个样本的预测值。MAE能很好的刻画预测值和真实值的偏差,因为偏差有正有负,为了防止正负误差抵消,MAE计算的是误差绝对值的平均值。MAE 也可以作为损失函数,但是有些模型(如XGboost)必须要求损失函数有二阶导数,所以不能使用MAE进行优化。

加权平均绝对误差(WMAE)是MAE的变形,比如考虑时间因素,离当前时间越久的样本权重越低。公式为:
WMAE=1n∑i=1nw(i)∣(y(i)−y^(i)∣WMAE = \frac{1}{n}\sum^{n}_{i=1} w^{(i)}| (y^{(i)} - \hat y^{(i)} | WMAE=n1​i=1∑n​w(i)∣(y(i)−y^​(i)∣
其中,w(i)w^{(i)}w(i)为第i个样本的权重。

2. 均方误差(MSE)

MSE 计算的是误差平方和的均值,公式如下:
MSE=1n∑i=1n(y(i)−y^(i))2MSE = \frac{1}{n}\sum^{n}_{i=1} (y^{(i)} - \hat y^{(i)} )^2 MSE=n1​i=1∑n​(y(i)−y^​(i))2
MSE 它对误差有着更大的惩罚,但是他也对离群点敏感,健壮性可能不如MAE。

3. 均方根误差(RMSE)

MSE公式有一个问题是会改变量纲。因为公式平方了,比如说 y 值的单位是万元,MSE 计算出来的是万元的平方,对于这个值难以解释它的含义。RMSE 其实就是对MSE开平方根,公式如下:
RMSE=1n∑i=1n(y(i)−y^(i))2RMSE=\sqrt{\frac{1}{n}\sum^{n}_{i=1} (y^{(i)} - \hat y^{(i)} )^2} RMSE=n1​i=1∑n​(y(i)−y^​(i))2​
可以看到 MSE 和 RMSE 二者是呈正相关的,MSE 值大,RMSE 值也大,所以在评价线性回归模型效果的时候,使用 RMSE 就可以了。

4. 决定系数(R2R^2R2)

当数据集不同时,或者说数据集预测目标的量纲不同时,上面三种评估方式的结果就不好比较了。R2R^2R2把预测目标的均值作为参照,例如房价数据集的房价均值,学生成绩的成绩均值。现在我们把这个均值当成一个基准参照模型,也叫 baseline model。这个均值模型对任何数据的预测值都是一样的,可以想象该模型效果自然很差。基于此我们才会想从数据集中寻找规律,建立更好的模型。

R2R^2R2公式如下:
R2=1−∑i=1n(y(i)−y^(i))2∑i=1n(yˉ−y^(i))2=1−1n∑i=1n(y(i)−y^(i))21n∑i=1n(yˉ−y^(i))2=1−MSEVARR^2 = 1- \frac{\sum^{n}_{i=1} (y^{(i)} - \hat y^{(i)} )^2}{\sum^{n}_{i=1} (\bar y - \hat y^{(i)} )^2} = 1-\frac{\frac{1}{n}\sum^{n}_{i=1}(y^{(i)} - \hat y^{(i)})^2}{\frac{1}{n}\sum^{n}_{i=1}(\bar y - \hat y^{(i)})^2} = 1-\frac{MSE}{VAR} R2=1−∑i=1n​(yˉ​−y^​(i))2∑i=1n​(y(i)−y^​(i))2​=1−n1​∑i=1n​(yˉ​−y^​(i))2n1​∑i=1n​(y(i)−y^​(i))2​=1−VARMSE​
R2R^2R2= 1,达到最大值。即分子为 0 ,意味着样本中预测值和真实值完全相等,没有任何误差。也就是说我们建立的模型完美拟合了所有真实数据,是效果最好的模型,R2R^2R2值也达到了最大。但通常模型不会这么完美,总会有误差存在,当误差很小的时候,分子小于分母,模型会趋近 1,仍然是好的模型,随着误差越来越大,$R^2 $也会离最大值 1 越来越远,直到出现下面的情况。

R2R^2R2= 0,此时分子等于分母,样本的每项预测值都等于均值。也就是说我们辛苦训练出来的模型和前面说的均值模型完全一样,还不如不训练,直接让模型的预测值全去均值。当误差越来越大的时候就出现了第三种情况。

R2R^2R2< 0 ,分子大于分母,训练模型产生的误差比使用均值产生的还要大,也就是训练模型反而不如直接去均值效果好。出现这种情况,通常是模型本身不是线性关系的,而我们误使用了线性模型,导致误差很大。

参考资料:

【机器学习12】线性回归算法评价指标:MSE、RMSE、R2_score
周志华 《机器学习》
李航 《统计学习方法 第二版》

【线性回归】面向新手的基础知识相关推荐

  1. 炒股票新手入门基础知识 跟桥博士炒股票入门课程认识MSCI和纳斯达克指数

    炒股票新手入门基础知识学习,跟着桥博士<股票入门基础知识>课程来认识MSCI和纳斯达克指数,新手炒股入门,从认识股票知识开始. 1.炒股新手入门基础知识--股票指数MSCI 炒股票新手入门 ...

  2. php连接mysqli面向过程,PHP基础知识总结:MySQLi 面向过程

    本文只针对 MySQLi 面向过程的函数使用方法. 1 数据库连接相关函数 mysqli_connect(host, user, pwd, db, port, socket), 全部参数都是可选的,默 ...

  3. [基础知识]Linux新手系列之三

    2019独角兽企业重金招聘Python工程师标准>>> [基础知识]Linux新手系列之三 给Linux新手 [系列之三] Linux相关资料由兄弟连分享 OK,从哪里得到Linux ...

  4. 面向特定专业领域的计算机,大学计算机文化基础考试题(本科)基础知识部分

    大学计算机文化基础考试题(本科)基础知识部分 大学计算机文化基础考试题 基础知识部分: 一.单项选择题(每小题1分) 1.采用一定的算法,将任务分交给网络中不同的计算机,以达到均衡使用网络资源的目的, ...

  5. python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...

    原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...

  6. 自学计算机键盘基础知识,刘坚强办公学《新手学五笔打字》1-2 功能键区,电脑键盘功能基础知识按键详解...

    原标题:刘坚强办公学<新手学五笔打字>1-2 功能键区,电脑键盘功能基础知识按键详解 下面我们来详细认识电脑键盘的各个按键,先从最上面的功能键区开始,一共有16个键(如图1-2-1所示). ...

  7. 对于一个网络营销新手,需要掌握哪些网络营销基础知识

    其实,说到网络营销,很多人的脑海里都是一个片面的了解,没有一个很全面,很明确的概念,只是知道一些网络营销技巧和方法,就大言不惭的说自己懂"网络营销"了,马找钱在这里就给一些网络营销 ...

  8. 新手上路:ADAMS 基础知识讲解(图文并茂)【转载仿真论坛】

    引用 Baker 的 新手上路:ADAMS 基础知识讲解(图文并茂)[转载仿真论坛] 经过不知道多少个日夜,终于出来一个雏形了,内容主要是版内的帖子总结,这个为1.0版本,由于时间的问题,内容还不全, ...

  9. 新手小白必须了解的数据相关基础知识(一)

    不管是做数据标注还是数据清洗.分析等等,大家是不是遇到过如下问题? 提示文件没有软件能打开. 用常用软件打开后乱码. 等等问题,特别是刚接触数据行业的小伙伴,有很多没有计算机背景知识,完全摸不到头脑到 ...

最新文章

  1. Ubuntu终端多窗口分屏Terminator
  2. python怎么检查数据库实例能否链接_python pymysql链接数据库查询结果转为Dataframe实例...
  3. C#静态类 转载:(原文:http://www.cnblogs.com/chenlulouis/ )
  4. 【NLP】如何清理文本数据?
  5. nginx与php-fpm通讯方式
  6. passwd命令提示: 鉴定令牌操作错误
  7. linux nginx 安装出错,Linux Nginx安装以及可能出现错误
  8. 慕课python第六周测验答案_中国大学慕课答案第八单元测试答案_Python语言程序设计考试测验答案...
  9. PowerShell 远程执行任务
  10. matlab与c 混合编程问题,MATLAB与C/C++混合编程的一些总结
  11. Oracle备份还原操作方法
  12. paip.cache 缓存架构以及性能提升总结
  13. Android内存优化12 内存泄漏常见情况3 注册泄漏
  14. microsoft sql server无法删除_分享一则生产数据库sql优化案例:从无法删除到耗时20秒
  15. C#winform之自定义按钮形状(初级版)
  16. linux 配置compoer
  17. linux-2.6.32在mini2440开发板上移植(15)之移植看门狗驱动
  18. 微博大V社交圈子分析
  19. Raid磁盘阵列重建后如何恢复原来的数据
  20. 前阿里P8甩我一份内部SpringCloud笔记手册,真香

热门文章

  1. 开普勒行星运动第二定律在电子与原子核运动中的应用
  2. sklearn中knn的各种用法总结
  3. mysql练习用的数据集下载(转载+自己补充步骤)
  4. 大话数据结构21 :关键路径
  5. Python学习笔记——os模块【文件、目录方法】
  6. SQL优化之列裁剪和投影消除
  7. JAVA自学笔记21
  8. Docker安装Python3.5
  9. 基于互联网大数据的管理创新
  10. docker supervisor进程管理