美文网首页
Machine Learning (1): Linear Reg

Machine Learning (1): Linear Reg

作者: DejavuMoments | 来源:发表于2019-05-12 14:24 被阅读0次

[TOC]

了解什么是Machine learning
学习中心极限定理,学习正态分布,学习最大似然估计
推导回归 Loss function
学习损失函数与凸函数之间的关系
了解全局最优和局部最优
学习导数,泰勒展开
推导梯度下降公式
写出梯度下降的代码

学习L2-Norm,L1-Norm,L0-Norm

推导正则化公式

说明为什么用 L1-Norm 代替 L0-Norm

学习为什么只对w_Θ做限制,不对b做限制

1.什么是 Machine Learning?

Machine Learning 可以分为三种类型:

机器学习的涉及的知识比例分布:
35% 线性代数
25% 概率论和统计学
15% 微积分
15% 算法及其复杂性
10% 数据预处理知识

Regression
Classification
Deep Learning
Semi-supervised Learning
Transfer Learning
Unsupervised Learning
Reinforcement Learning

2.基础概念

2.1 正态分布

标准正态分布的图像,如下所示:

2.1 中心极限定理 Central Limit Theorem
2.1 最大似然估计(MLE)

核心思想:在给出数据样本集的情况下,找出最大可能产生该样本集的参数值。

MLE 提供了一种给定观测数据来评估模型参数的方法,即「模型已定,参数未知」的时候,通过最大似然估计找到能够使样本数据出现概率最大的参数值,这便是最大似然估计。需要注意的是,这里的参数有一定的值,并非随机变量,无概率可言,于是使用「似然」这个词。

3.Linear Regression

3.1 模型定义

「线性回归」是用于解决回归问题最为基础的模型。线性回归假设输入和输出为线性关系,其模型定义如下:

h(x) = w_1x_1 + w_2x_2 + w_3x_3 + ···+ w_n x_n + b \tag{1}

为了更直观一点,重写为向量的形式:

h(x) = \left[ \begin{array}{ccc} w_1 & w_2 & w_3 & ··· & w_n\end{array} \right] \left[ \begin{array}{ccc} w_1 \\ w_2 \\ w_3 \\ ··· \\ w_n\end{array} \right] + b = w^{T} x + b \tag{2}

进一步简化表示,可以在每个输入 x = \left[ \begin{array}{ccc} x_1 & x_2 & x_3 & ··· & x_n\end{array} \right]^T 中添加一项 x_0 = 1,得到:x = \left[ \begin{array}{ccc} x_0 & x_1 & x_2 & x_3 & ··· & x_n\end{array} \right]^T

同样的,令 w_0 = b 可以得到 w = \left[ \begin{array}{ccc} w_0 & w_1 & w_2 & w_3 & ··· & w_n\end{array} \right]^T ,这样模型就可以表示为:

h_w(x) = \sum_{i=0}^{d}{w_{i} x_{i}} = w^Tx

有些时候,会使用 \theta 来表示参数:

h_{\theta}(x) = \sum_{i=0}^{d}{\theta_{i} x_{i}} = \theta^Tx

3.2 模型推导

现在给定 N 个数据\{(x^{(1)}, y^{(1)}), (x_2, y_2), (x_3, y_3), ... ,(x_n, y_n)\}, 如何求得线性回归模型的参数 w 呢?

Cost Function

J(\theta) = \frac{1}{2m} \sum^{m}_{i=1} (h_\theta(x^{(i)}) - y^{(i)})^2

The Normal Equations

概率视角

y(\textbf{x}) = \textbf{w}^T\textbf{x} + \epsilon = \sum^D_{i=1}{w_ix_i} + \epsilon

其中,\textbf{w}^T\mathbf{x} 表示输入向量 \textbf{x} 与 模型权重向量 \mathbf{w} 的内积(又称数量积,点积 ),\epsilon 表示预测值和真实值之间的残差(Residual Error)。

在 Linear Regression 中,通常假设 \epsilon 服从正态分布(也叫高斯分布),即 ε ∼ N(μ,σ^2)μ 为均值,σ^2 为方差,在这里 μ=0σ^2 为定值。

当噪声符合正态分布N(0,\delta^2)时,因变量则符合正态分布N(ax(i)+b,\delta^2),其中预测函数 y=ax(i)+b。这个结论可以由正态分布的概率密度函数得到。也就是说当噪声符合正态分布时,其因变量必然也符合正态分布。

在用线性回归模型拟合数据之前,首先要求数据应符合或近似符合正态分布,否则得到的拟合函数不正确。

若本身样本不符合正态分布或不近似服从正态分布,则要采用其他的拟合方法,比如对于服从二项式分布的样本数据,可以采用 logistics 线性回归。

于是,可以将「线性回归」模型重写为:

p(y|x, θ) = N (y|μ(x), σ^{2}(x))

这表明「线性回归」模型属于一种条件概率分布。这里采用最简单的形式,假设 μ 是关于 \textbf{x} 的线性函数,即 μ = \textbf{w}^T\textbf{x},并且噪声是固定的 σ^2(\textbf{x}) = σ^2

In this case, θ = (w, σ^2) are the parameters of the model.

求解模型参数:
1.LMS

2.Norm Equations

3.MLE

「预测值」 与 「真实值」 之间存着误差

y(\textbf{x}) = \textbf{w}^T\textbf{x} + \epsilon = \sum^D_{i=1}{w_ix_i} + \epsilon

L(w) =

J(\theta) = \frac{1}{2} \sum^{m}_{i=1} (h_\theta(x^{(i)}) - y^{(i)})^2

Gradient Discent

\theta_j = \theta_j - \eta \frac{\partial{J(\theta)}}{\partial{\theta_j}}

按照最小二乘法,我们直接求出导数为0的点,但是有时候很难解出方程,就考虑使用迭代的方法,首先取一个随机数,然后每一次去想着目标结果逼近,而为了效率最高,我们向着梯度下降最快的方向,既θ在偏导数上的取值。而α是学习速率,是个很重要的参数,设置过大会导致超过最小值,过小则学习的太慢。

\frac{\partial{J(\theta)}}{\partial{\theta_j}} = \frac{\partial{}}{\partial{\theta_j}} \frac{1}{2} \sum^{m}_{i=1} (h_\theta(x^{(i)}) - y^{(i)})^2 = (yhat - y)x_j

动手实现Linear Regression

1.创建数据集

import random
import numpy as np

num_inputs = 2
num_examples = 1000

true_w = [2, -3.4]
true_b = 4.2

features = np.random.randn(num_examples, num_inputs)
print(features.shape)

labels = true_w[0] * features[:, 0] + true_w[1] * features[:, 1] + true_b
print(labels.shape[0])

# 给 y 加上随机噪声
labels +=  0.01 * np.random.randn(labels.shape[0])

print(features[0], labels[0])
print(np.dot(features[0],true_w)+true_b, labels[0])

2.可视化

from matplotlib import pyplot as plt
# 绘制数据的散点图 
plt.scatter(features[:, 1], labels)
plt.show()

3.数据读取

4.定义模型

Norm 范数

L0 范数指的是向量中非零元素的个数。
L1 范数是指向量中各个元素绝对值之和。
L2 范数指的是向量中各个元素的平方和的 \frac{1}{2} 次方。

L0 范数难以求解
L1 范数可以使得权值稀疏,方便进行特征提取。
L2 范数可以防止过拟合,提升模型泛化能力。

为了防止模型的过拟合,我们在建立线性模型的时候经常需要加入正则化项。一般有 「L1正则化」 和「L2正则化」。

推导正则化公式

J(\theta) = \frac{1}{2m} \left[ \sum^{m}_{i=1} (h_\theta(x^{(i)}) - y^{(i)})^2 + \alpha \sum_{j=1}^{n}{\theta_{j}^{2}} \right]

说明为什么用 L1-Norm 代替 L0-Norm

线性回归的 L1 正则化通常称为 Lasso回归,它和一般线性回归的区别是在损失函数上增加了一个 L1正则化的项,L1 正则化的项有一个常数系数 \alpha 来调节损失函数的均方差项和正则化项的权重,具体Lasso回归的损失函数表达式如下:

Lasso Regression

线性回归的L2正则化通常称为Ridge回归,它和一般线性回归的区别是在损失函数上增加了一个L2正则化的项,和Lasso回归的区别是Ridge回归的正则化项是L2范数,而Lasso回归的正则化项是L1范数。具体Ridge回归的损失函数表达式如下:

Ridge回归在不抛弃任何一个特征的情况下,缩小了回归系数,使得模型相对而言比较的稳定,但和Lasso回归比,这会使得模型的特征留的特别多,模型解释性差。

Ridge回归的求解比较简单,一般用最小二乘法。这里给出用最小二乘法的矩阵推导形式,和普通线性回归类似。

Ridge Regression

为什么正则化只对参数 w/\theta 做限制,而不对 b 做限制?
答:都可以做限制,但在实际问题中,w 往往是高维度的,而 b 只是单个数字,实际上不会起太大作用。

http://cs229.stanford.edu/notes-spring2019/cs229-notes1.pdf

相关文章

网友评论

      本文标题:Machine Learning (1): Linear Reg

      本文链接:https://www.haomeiwen.com/subject/ysrcaqtx.html