1 Anomaly detection
1.1 Gaussian distribution
高斯分布函数为
其中,μ\muμ为平均值(控制中心位置),σ2\sigma^2σ2为方差(控制分布展宽)。
1.2 Estimating parameters for a Gaussian
高斯分布函数中的参数由下式计算:
任务:完成estimateGaussian.m
,实现高斯分布函数的参数计算。
输入:
- 数据矩阵
X
输出:
- 平均值
mu
- 方差
sigma2
思路:按照公式即可。需要注意的是,MATLAB内置方差函数中的系数为1m?1\frac{1}{m-1}m?11?,而非1m\frac{1}{m}m1?。
mu = mean(X);
sigma2 = var(X)*(m-1)/m;
完成后可见到下图所示的高斯函数等值线。
1.3 Selecting the threshold, ?\epsilon?
基于交叉验证数据集,我们可以选择合适的阈值?\epsilon?。
- F1值:F1=2×prec×recprec+recF_1=\frac{2×prec×rec}{prec+rec}F1?=prec+rec2×prec×rec?,该值可以有效地评价偏斜类数据的算法表现。
- 准确率:prec=tptp+fpprec = \frac{tp}{tp+fp}prec=tp+fptp?
- 召回率:rec=tptp+fnrec = \frac{tp}{tp+fn}rec=tp+fntp?
符号 | 表示 | 含义 |
---|---|---|
tptptp | 真阳(true positive) | 算法分类为1,数据标签为1 |
fpfpfp | 假阳(false positive) | 算法分类为1,数据标签为0 |
tntntn | 真阴(true negative) | 算法分类为0,数据标签为0 |
fnfnfn | 假阴(false negative) | 算法分类为0,数据标签为1 |
任务:完成selectThreshold.m
,实现阈值?\epsilon?的选择。
输入:
yval
,交叉验证数据集的标签pval
,交叉验证数据集的概率
输出:
bestEpsilon
,最优的阈值?\epsilon?bestF1
,最优的F1F_1F1?值
思路:
epsilon
以一定步长从pval
的最小值到最大值进行遍历。每次循环中,依次计算以epsilon
为阈值得到的cvPrediction
(小于?\epsilon?为1), prec
, rec
和F1
,保存最优的F1
和epsilon
分别为bestF1
和bestEpsilon
。
stepsize = (max(pval) - min(pval)) / 1000;
for epsilon = min(pval):stepsize:max(pval)% ====================== YOUR CODE HERE ======================%该部分为需要完成的代码cvPrediction = zeros(size(yval));cvPrediction(pval < epsilon) = 1;tp = sum(cvPrediction == 1 & yval == 1);fp = sum(cvPrediction == 1 & yval == 0);fn = sum(cvPrediction == 0 & yval == 1);prec = tp / (tp + fp);rec = tp / (tp + fn);F1 = 2*prec*rec / (prec + rec);% =============================================================if F1 > bestF1bestF1 = F1;bestEpsilon = epsilon;end
end
2 Recommender Systems
2.1 Movie ratings dataset
该数据集有 nu=943n_u=943nu?=943 个用户, nm=1682n_m=1682nm?=1682 个电影评分(5分制)。
矩阵 YYY(num_movies
×num_users
)的元素为评分 y(i,j)y^{(i,j)}y(i,j)。矩阵RRR为0-1矩阵,其中R(i,j)=1R(i,j)=1R(i,j)=1代表用户 jjj 对电影 iii 有过评分,R(i,j)=0R(i,j)=0R(i,j)=0 代表用户 jjj 对电影 iii 无评分。
协同过滤算法的目的是预测那些没有被某些用户评价的电影的评分,即 R(i,j)=0R(i,j)=0R(i,j)=0 的情况。
X
的第 iii 行表示第 iii 部电影的特征向量 x(i)x^{(i)}x(i) 。
Theta
的第 jjj 行表示第 jjj 个用户的参数向量 θ(j)\theta^{(j)}θ(j) 。
2.2 Collaborative filtering learning algorithm
2.2.1 Collaborative filtering cost function
协同过滤损失函数为:
任务:完成cofiCostFunc.m
,返回正确的损失J
。注意,应当累积 R(i,j)=1R(i,j)=1R(i,j)=1 时用户 jjj 和电影 iii 的损失函数。
输入:
params
,储存X
和Theta
矩阵的参数Y
,电影评分矩阵R
,是否评分矩阵num_movies
,电影数num_features
,特征数lambda
,正规化参数
输出:
J
,代价函数grad
,代价函数梯度
M = (X * Theta' - Y).^2;
J = sum(sum(R .* M)) / 2;
2.2.2 Collaborative filtering gradient
协同过滤损失函数梯度为:
任务:完成cofiCostFunc.m
,返回正确的损失函数偏导数X_grad
和Theta_grad
。
X_grad = R.*(X * Theta' - Y) * Theta;
Theta_grad = (R.*(X * Theta' - Y))' * X;
2.2.3 Regularized cost function
正规化的协同过滤损失函数为:
2.2.4 Regularized gradient
正规化的协同过滤损失函数梯度为: