机器学习(Coursera吴恩达)(八 其他)
标签(空格分隔): 机器学习
异常检测(anomaly detection)
异常检测问题:假设有一个新飞机,引擎有特征变量
xtest
x
t
e
s
t
,异常检测就是我们希望制导这个新的飞机引擎是否有某种异常。
给定数据集
x(1),x(2),x(3),...,x(m)
x
(
1
)
,
x
(
2
)
,
x
(
3
)
,
.
.
.
,
x
(
m
)
,假设数据集是正常的,我们希望制导新的数据
xtest
x
t
e
s
t
是不是异常的,即测试数据不属于该组数据的几率。
这种方式称为密度估计,表达式如下:
if p(x)<ϵ anomaly;p(x)>ϵ normal
i
f
p
(
x
)
<
ϵ
a
n
o
m
a
l
y
;
p
(
x
)
>
ϵ
n
o
r
m
a
l
欺诈检测:
x(i)=用户的第i个活动特征
x
(
i
)
=
用
户
的
第
i
个
活
动
特
征
模型
p(x)
p
(
x
)
是其属于一组数据的可能性,通过
p(x)<ϵ
p
(
x
)
<
ϵ
检测非正常用户。
异常检测主要是用来识别欺骗。
算法
对于给定的数据集
x(1),x(2),x(3),...,x(m)
x
(
1
)
,
x
(
2
)
,
x
(
3
)
,
.
.
.
,
x
(
m
)
,我们要针对每一个特征计算
μ
μ
和
δ2
δ
2
的估计值。
一旦我们获得了均值和方差的估计值,给定新的一个训练实例,根据模型计算
p(x)
p
(
x
)
.
当
p(x)<ϵ
p
(
x
)
<
ϵ
为异常。
数据集选择
还是要用F1选择阈值。判断查准率和查重率。
与监督学习对比
选择特征
对于异常检测算法,我们使用的特征是至关重要的.
异常检测假设特征服从高斯分布,例如使用对数函数:
x=log(x+c)
x
=
l
o
g
(
x
+
c
)
,其中
c
c
为非负数,或者, c为0-1之间的一个分数。
目的是让数据特征更接近高斯分布。
推荐系统
引入标记:
*
nu
n
u
代表用户数
*
nm
n
m
代表电影书
*
r(i,j)
r
(
i
,
j
)
如果用户j给电影i评分,则为1
*
yi,j
y
i
,
j
用户j给电影i的评分
*
mj
m
j
用户j评分过电影的综述
基于内容
- θ(j) θ ( j ) 表示用户j的参数。( ∈Rn+1 ∈ R n + 1 )
- x(i) x ( i ) 电影i的特征
- 用户j和电影i,我们预测的评分为 (θ(j))Tx(i) ( θ ( j ) ) T x ( i )
- 代价函数针对用户j:
为了学习所有用户,要对所有用户的代价函数求和:
然后对这个总的代价函数使用梯度下降法求最优解。
协同过滤
现在,我们如果没有对每一个电影都有评价,也就是没有电影的特征。因为我们很难对每一个电影都设计合适的特征,所以在我们拥有用户评价的情况下,需要对每个电影学习特征。
*协同过滤:是电影特征与用户参数协同学习。前提是我们不知道用户的参数
θ
θ
也不知道电影的特征
x
x
。我们拥有的只有用户对电影的评分。
修改优化目标:
对代价函数求偏导数:(对和
x
x
同时最小化)
算法步骤:
1. 初始
2. 使用梯度下降法最小化代价函数
3. 在训练完之后,我们预测
(θ(j))Tx(i)
(
θ
(
j
)
)
T
x
(
i
)
为用户j对电影i的预测评分。
大规模学习算法
- 用学习曲线确定是否我们需要打大训练集。
随机梯度下降法
直接用梯度下降,对大规模系统来说每一次迭代都需要对所有数据进行误差进行累加,那么一次的计算量就会特别大。所以要找更快捷的方法,适用于大规模学习。
小批量梯度下降(Mini-batch)
随机梯度下降收敛