代码:https://github.com/LiuZhe6/AndrewNGMachineLearning
文章目录
测验一:Anomaly Detection
第一题
答案
AD
分析:
异常检测通常是在大部分数据是正常的情况下,发现少量不同寻常的数据。
第二题
答案
B
分析:当算法检测的结果丢掉了异常数据的时候,此时增加sigma可以减少丢失。
第三题
答案
A
第四题
答案
AD
分析:
A:当使用有标签的数据时,可以通过最终检测结果来与标签进行比对,从而确定出更好的sigma值。
B:监督学习通常使用大量的正向、负向数据,而异常检测通常使用极少量的正向数据。
C:与A相反
D:寻找那些极大或极小的值作为特征,正确。
第五题
答案
A
分析:从图中可以看出,中心点大致在-3,而如果画出高斯分布的话,宽度大致为2,即sigma的平方为4.
测验二:Recommender Systems
第一题
答案
BC
第二题
答案
AD
分析:
AD均为推荐系统,适合采用协同过滤算法。
C:一个人的喜好,用罗辑回归就好。
第三题
答案
D
分析:需要将三个不同数据库的数据进行归一化,然后才能作为样本数据。
第四题
答案
AB
分析:
C:协同过滤算法不需要手动选择特征,错误。
D:协同过滤算法初始化参数不可以为0,错误。
第五题
答案
AB
编程练习:Anomaly Detection and Recommender Systems
作业一:Estimate Gaussian Parameters
estimateGaussian.m
% 计算mu,向量化代码
% 对X矩阵每一列求和后,执行平均
mu = 1 / m * (sum(X))';
% 计算sigma2 向量化代码
% 将X转置后减去 - mu,然后平方后,求每一行的和,再执行平均
sigma2 = 1 / m * sum((X' - mu).^2 , 2);
作业二:Select Threshold
selectThreshold.m
% 自己的预测结果
mcv = size(pval ,1);
cvPredictions = zeros(mcv,1);
cvPredictions = (pval < epsilon);
% 计算TP,FP,FN,使用按位与操作
tp = sum((cvPredictions == 1) & (yval == 1));
fp = sum((cvPredictions == 1) & (yval == 0));
fn = sum((cvPredictions == 0) & (yval == 1));
% 计算查准率和查全率
prec = tp / (tp + fp);
rec = tp / (tp + fn);
F1 = 2 * prec * rec / (prec + rec);
作业三:Collaborative Filtering Cost
cofiCostFunction.m
% 计算代价函数时,只计算有评分的部分,故通过点乘R来得到有数据部分的值
J = 1 / 2 * sum(sum(( (X * Theta').*R - Y.*R).^2));
作业四:Collaborative Filtering Gradient
cofiCostFunction.m
% 向量化代码计算梯度
X_grad = ((X * Theta').* R - Y.*R) * Theta;
Theta_grad = ((X * Theta').*R - Y.*R)' * X;
作业五:Regularized Cost
cofiCostFunction.m
接着上面的代码写
% 正则化J
J += lambda / 2 * sum(sum(Theta.^2)) + lambda / 2 * sum(sum(X.^2));
作业六:Regularized Gradient
cofiCostFunction.m
接着上面的代码写
% 正则化梯度
X_grad += lambda * X;
Theta_grad += lambda * Theta;