吴恩达机器学习ex8

第一部分 异常检测

这一部分实现异常检测算法,检测服务器的异常行为。

1.高斯分布

使用高斯模型来检测数据集中的异常数据。
公式:
在这里插入图片描述
μ:均值;σ^2:方差
在这里插入图片描述
在这里插入图片描述
实现代码计算上述两个参数,需要注意的是在octave中,计算方差时,分母使用m-1,而不是m

mu = sum(X) / m;
sigma2 = sum((X - mu) .^ 2) / (m-1);

2.选择阈值ε

确定哪些数据异常的一种方法是根据交叉验证集选择一个阈值。可以通过交叉验证集的F1分数实现算法来选择阈值。
F1分数由精确度(prec)和召回率(rec)计算得来:
在这里插入图片描述
精确度和召回率的计算公式:
在这里插入图片描述
tp:实际为正样本,分类结果为正样本(真正)
fp:实际为负样本,分类结果为正样本(假正)
fn:实际为正样本,分类结果为负样本(假负)
这里我们把异常数据标记为y=1,也就是正样本;正常的数据标记为y=0,为负样本。

bestEpsilon = 0;
bestF1 = 0;
F1 = 0;

stepsize = (max(pval) - 
### 吴恩达机器学习课程中的Ex8 MATLAB代码解析 #### 1. Ex8概述 在吴恩达教授的《机器学习》课程中,第八次编程作业(ex8)主要涉及异常检测和推荐系统的实现[^1]。 #### 2. 异常检测部分 该部分内容旨在通过高斯分布模型来识别数据集中的异常点。具体来说: - **参数估计**:计算训练集中每个特征的均值μ和方差σ²。 ```matlab function [mu sigma2] = estimateGaussian(X) %ESTIMATEGAUSSIAN This function estimates the parameters of a %Gaussian distribution using the data in X n = size(X, 2); for i = 1:n mu(i) = mean(X(:,i)); sigma2(i) = var(X(:,i), 1); % Use biased variance estimator end ``` - **概率密度函数**:基于上述参数计算给定样本属于此分布的概率p(x; μ, σ²). ```matlab function p = multivariateGaussian(X, mu, Sigma2) k = length(mu); if (size(Sigma2, 2) == 1) || (size(Sigma2, 1) == 1) p = (1 ./ sqrt((2*pi)^k * prod(Sigma2))) .* ... exp(-0.5*sum(((X-repmat(mu,size(X,1),1)).^2)./Sigma2',2)); else p = mvnpdf(X,mu,Sigma2); end ``` #### 3. 推荐系统部分 这部分介绍了如何构建协同过滤算法来进行电影评分预测: - **代价函数与梯度下降** 定义了用于评估模型性能的成本函数J(θ),并通过随机初始化参数后执行批量梯度下降法最小化它. ```matlab function [J, grad] = cofiCostFunc(params, Y, R, num_users, num_movies, ... num_features, lambda) % Unfold the U and W matrices from params 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); % You need to return the following values correctly. J = 0; X_grad = zeros(size(X)); Theta_grad = zeros(size(Theta)); % Compute cost J with regularization term added predictions = X * Theta'; errs = (predictions - Y).*R; J = sum(errs(:).^2)/2 + ... (lambda/2)*sum(sum(Theta.^2)) + ... (lambda/2)*sum(sum(X.^2)); % Compute gradients for both sets of parameters simultaneously, % then unroll back into single vector form expected by fmincg(). for t=1:num_features X_grad(:,t) = ((X(:,t)'*(errs*R))*ones(1,num_users))' + ... lambda*X(:,t); Theta_grad(:,t) = (((errs*R)*(Theta(:,t)'))'*ones(1,num_movies))' + ... lambda*Theta(:,t); end grad = [X_grad(:) ; Theta_grad(:)]; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值