代码和作业说明下载
这次作业我们需要实现 Anomaly Detection and Recommender
Systems。
需要完成下列代码文件:
- estimateGaussian.m
- selectThreshold.m
- cofiCostFunc.m
estimateGaussian.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function [mu sigma2] = estimateGaussian(X) [m, n] = size(X); mu = zeros(n, 1); sigma2 = zeros(n, 1); mu = sum(X) ./ m; sigma2 = sum((X - mu) .* (X - mu)) ./ m; end
|
selectThreshold.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| function [bestEpsilon bestF1] = selectThreshold(yval, pval) bestEpsilon = 0; bestF1 = 0; F1 = 0; stepsize = (max(pval) - min(pval)) / 1000; for epsilon = min(pval):stepsize:max(pval) rec = sum(yval .* (pval < epsilon)) / (sum(pval < epsilon)); prec = sum(yval .* (pval < epsilon)) / sum(yval); F1 = 2 * rec * prec / (rec + prec); if F1 > bestF1 bestF1 = F1; bestEpsilon = epsilon; end end end
|
cofiCostFunc.m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| function [J, grad] = cofiCostFunc(params, Y, R, num_users, num_movies, ... num_features, lambda) X = reshape(params(1:num_movies*num_features), num_movies, num_features); Theta = reshape(params(num_movies*num_features+1:end), ... num_users, num_features); J = 0; X_grad = zeros(size(X)); Theta_grad = zeros(size(Theta)); J = sum(sum((X * Theta' .* R - Y) .^ 2)) / 2 + ... (lambda / 2) * sum(sum(Theta .^2)) + (lambda / 2) * sum(sum(X .^2)); Theta_grad = (X * Theta' .* R - Y)' * X + lambda .* Theta; X_grad = (X * Theta' .* R - Y) * Theta + lambda .* X; grad = [X_grad(:); Theta_grad(:)]; end
|