机器学习入门
一、认识机器学习
1. 定义
- 机器学习(Machine Learning)简称ML,是为了解决任务T,而设计一段程序,从经验E中学习,达到性能度量值P,当且仅当有了经验E后,经过P评测,程序在处理T时的性能得到提升。
- 是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸优化、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
2. 分类
- 有监督学习:提供数据并提供数据对应结果的机器学习过程。
- 无监督学习:提供数据并且不提供数据对应结果的机器学习过程。
- 强 化 学 习 :通过与环境交互并获取延迟返回进而改进行为的学习过程。
2.1 有监督学习
2.1.1 分类问题
-
当输出被限制为有限的一组值(离散数值)时使用分类算法
-
样本标签属于离散变量,比如判断垃圾邮件、肿瘤预测。
-
模型有生成模型(概率模型)和辨别模型(非概率模型):
- 生成方法用数据学习联合概率分布:
假设有随机变量X、Y,此时P(X=a,Y=b)用于表示X=a且Y=b的概率。 - 判别方法用直接学习条件概率:
- 直接预测、准确率高;
- 可以对数据进行抽象,定义特征并且使用特征,因此可简化学习问题。
- 生成方法用数据学习联合概率分布:
-
分类问题可以用很多学习方法来解决,比如:k近邻、决策树、感知机、逻辑斯谛回归、支撑向量机、朴素贝叶斯法、神经网络等…
关于贝叶斯(Bayes):
后 验 − − > P ( A ∣ B ) = 似 然 − − > P ( B ∣ A ) ∗ P ( A ) < − − 先 验 P ( B ) < − − 证 据 后验-->P(A|B) = \frac{似然--> P(B|A)*P(A) <--先验}{P(B) <--证据} 后验−−>P(A∣B)=P(B)<−−证据似然−−>P(B∣A)∗P(A)<−−先验
2.1.2 回归问题
-
当输出可以具有范围内的任何数值(连续数值)时使用回归算法
-
样本标签属于连续变量,比如预测房价、预测销售额。
-
回归问题的分类:
- 按照输入变量的个数:单变量回归和多变量线性回归。
- 按照模型类型:线性回归和非线性回归。
- 如果选取平方损失函数作为损失函数,回归问题可以用著名的最小二乘法来求解。
-
单变量线性回归:
- 损失函数:
J ( θ 0 , θ 1 ) = 1 2 m ∑ i = 1 m [ h θ ( x i − y i ) ] 2 J(\theta_0,\theta_1) = \frac{1}{2m} \sum_{i=1}^m [h_\theta(x^i-y^i)]^2 J(θ0,θ1)=2m1i=1∑m[hθ(xi−yi)]2 - 其中:
h θ ( x ) = θ 0 + θ 1 x h_\theta(x)=\theta_0+\theta_1{x} hθ(x)=θ0+θ1x
- 损失函数:
-
多变量线性回归:
- 损失函数:
J ( θ 0 , θ 1 . . . θ n ) = 1 2 m ∑ i = 1 m [ h θ ( x i ) − y i ] 2 J(\theta_0,\theta_1...\theta_n) = \frac{1}{2m} \sum_{i=1}^m [h_\theta(x^i)-y^i]^2 J(θ0,θ1...θn)=2m1i=1∑m[hθ(xi)−yi]2 - 其中:
h θ ( x ) = θ T X = θ 0 + θ 1 x 1 + θ 2 x 2 . . . + θ n x n h_\theta(x)=\theta^TX=\theta_0+\theta_1x_1+\theta_2x_2...+\theta_nx_n hθ(x)=θTX=θ0+θ1x1+θ2x2...+θnxn
- 损失函数:
2.2 无监督学习
- 样本中不包含任何标签
- 聚类:用户分群、朋友分组、细分市场、异常流量检测。
- 降维:维度(线索)越多,越能帮助我们判断,但是线索太多可能干扰判断,造成判断速度和准确度降低。
二、机器学习基本流程
机器学习三要素:
1. 模型:
1)就是要学习的概率分布或决策函数;
2)所有可能的条件概率分布或者决策函数构成的集合就是模型的假设空间。
2. 策略:
1)从假设空间中学习最优模型的方法;
2)衡量模型好与不好需要一些指标,这时引入损失函数和风险函数来衡量;
3)预测值和真实值通常是不相等的,我们用损失函数或代价函数来度量预测错误的程度,记作L(Y,f(x))。
损失函数:
R
=
1
N
∑
i
=
1
n
L
(
y
i
,
f
(
x
i
)
)
⏞
经
验
风
险
+
λ
J
(
f
)
⏟
结构风险
R = \frac{1}{N} \sum_{i=1}^n \overbrace{L(y_i,f(x_i))}^{经验风险}+\underbrace{\lambda J(f)}_{\text{ 结构风险}}
R=N1i=1∑nL(yi,f(xi))
经验风险+ 结构风险
λJ(f)
经验风险最小化(ERM):
- 这一策略认为,经验风险最小的模型就是最优的模型
- 样本足够大时,ERM有很好的学习效果,因为有足够的经验
- 样本较小时,ERM就会出现一些问题
3. 算法:
算法是指学习模型时的具体计算方法,求解最优模型归结为一个最优化问题,统计学习的算法等价于求解最优化问题的算法,也就是求解析解或者数值解。
梯度下降算法(GD):
- 随机选择一个参数的组合(θ1,θ2…θn),计算代价函数
- 然后我们寻找下一个能让代价函数值最低的参数组合
- 持续这么做直到找到一个局部最小值
- 示例:
# 原函数
def f(x):
return x**2 - 4*x + 4
# 导数
def h(x):
return 2*x - 4
a = 16 # 初始点(初始横坐标)
step = 0.1 # 步长
count = 0 # 记录迭代次数
deta_a = 16 # a更新前后的差值
error_rate = 1e-10 # 给定的阈值
while deta_a > error_rate:
a = a - step*h(a)
deta_a = np.abs(deta_a - a)
count += 1
print('梯度下降迭代第{}次,原始值为{},极点值为{}'.format(count,a,f(a)))
print('迭代次数为%d'%count)
print('极值点为(%f,%f)'%(a,f(a)))
梯度:
- 在单变量的函数中,梯度就是函数的微分,代表函数在某个给定点的切线的斜率;
- 在多变量的函数中,梯度就是函数对每个变量的偏微分组成的向量,梯度的方向就是这个向量的方向,它是函数在给定点的上升或者下降最快的方向。
θ i = θ i − α δ J ( θ 0 , θ 1 ) δ θ i \theta_i=\theta_i-\alpha\frac{\delta J(\theta_0,\theta_1)}{\delta \theta_i} θi=θi−αδθiδJ(θ0,θ1) - 对θ赋值,使J(θ)按梯度下降的方向进行,一直迭代下去,最终得到的局部最小值;
- 其中α是学习率,它决定了代价函数下降的程度。
批量梯度下降BGD:
θ
0
=
θ
1
−
a
1
m
∑
i
=
1
m
[
h
θ
(
x
i
)
−
y
i
]
\theta_0 =\theta_1- a\frac{1}{m} \sum_{i=1}^m [h_\theta(x^i)-y^i]
θ0=θ1−am1i=1∑m[hθ(xi)−yi]
θ
0
=
θ
1
−
a
1
m
∑
i
=
1
m
[
h
θ
(
x
i
)
−
y
i
]
x
i
\theta_0 =\theta_1- a\frac{1}{m} \sum_{i=1}^m [h_\theta(x^i)-y^i]x^i
θ0=θ1−am1i=1∑m[hθ(xi)−yi]xi
- 在批量梯度下降的每一步中,我们用到了所有的训练样本。
随机梯度下降SGD:
θ 0 = θ 1 − a [ ( h θ ( x i ) − y i ) x i ] \theta_0 =\theta_1- a [(h_\theta(x^i)-y^i)x^i] θ0=θ1−a[(hθ(xi)−yi)xi]
- 与批量梯度下降是两个极端,每次用一个样本来梯度下降,训练速度快但是收敛速度慢。
小批量梯度下降MBGD:
θ 0 = θ 1 − a 1 t ∑ i = 1 m [ h θ ( x i ) − y i ] x i \theta_0 =\theta_1- a\frac{1}{t} \sum_{i=1}^m [h_\theta(x^i)-y^i]x^i θ0=θ1−at1i=1∑m[hθ(xi)−yi]xi
- 每次迭代使用一个以上但又不是全部样本。
梯度下降调优:
- 归一化:由于样本不同特征的取值范围不一样,可能导致迭代很慢,为了减少特征取值的影响,可以对特征数据标准化或归一化。
x − x s t d ( x ) 标准化 x − m i n m a x − m i n 归一化 \frac {x-\frac {}{x}}{std(x)} \text {标准化} \,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\,\, \frac {x-min}{max-min} \text {归一化} std(x)x−x标准化max−minx−min归一化
本次分享结束!!!谢谢观看