Andrew NG 機器學習 練習8-Anomaly Detection and Recommender Systems
1 Anomaly detection
實現一個異常檢測演算法檢測伺服器的異常行為
特徵是 每個伺服器的 吞吐量(throughput)(mb/s) 和 相應延遲(ms)
採集 m=307 臺執行中的伺服器的特徵,{
其中大部分是 normal 的伺服器特徵
你將使用 高斯模型 檢測資料集中的異常樣例
從 2D 資料集開始,以便視覺化演算法過程
在那個資料集中你將擬合一個高斯分佈,發現低可能性的值,從而找出異常樣例
之後,你將在一個大的多維資料集中應用異常檢測演算法
首先視覺化資料,如圖:
%% ================== Part 1: Load Example Dataset ===================
% We start this exercise by using a small dataset that is easy to
% visualize.
%
% Our example case consists of 2 network server statistics across
% several machines: the latency and throughput of each machine.
% This exercise will help us find possibly faulty (or very fast) machines.
%
fprintf('Visualizing example dataset for outlier detection.\n\n' );
% The following command loads the dataset. You should now have the
% variables X, Xval, yval in your environment
load('ex8data1.mat');
% Visualize the example dataset
plot(X(:, 1), X(:, 2), 'bx');
axis([0 30 0 30]);
xlabel('Latency (ms)');
ylabel('Throughput (mb/s)');
fprintf('Program paused. Press enter to continue.\n' );
pause
1.1 Gaussian distribution
為了實施異常檢測,你需要首先 根據資料分佈,擬合一個模型
給一個訓練集 {
需要對每一個特徵
對於每一個特徵,需要計算引數
通常如果我們認為變數 x 符合高斯分佈 x~N(μ,σ2) 則其概率密度函式為:
1.2 Estimating parameters for a Gaussian
通過下列公式計算每個特徵的
%% ================== Part 2: Estimate the dataset statistics ===================
% For this exercise, we assume a Gaussian distribution for the dataset.
%
% We first estimate the parameters of our assumed Gaussian distribution,
% then compute the probabilities for each of the points and then visualize
% both the overall distribution and where each of the points falls in
% terms of that distribution.
%
fprintf('Visualizing Gaussian fit.\n\n');
% Estimate my and sigma2
[mu sigma2] = estimateGaussian(X);
% Returns the density of the multivariate normal at each data point (row)
% of X
p = multivariateGaussian(X, mu, sigma2);
% Visualize the fit
visualizeFit(X, mu, sigma2);
xlabel('Latency (ms)');
ylabel('Throughput (mb/s)');
fprintf('Program paused. Press enter to continue.\n');
pause;
estimateGaussian.m
function [mu sigma2] = estimateGaussian(X)
%ESTIMATEGAUSSIAN This function estimates the parameters of a
%Gaussian distribution using the data in X
% [mu sigma2] = estimateGaussian(X),
% The input X is the dataset with each n-dimensional data point in one row
% The output is an n-dimensional vector mu, the mean of the data set
% and the variances sigma^2, an n x 1 vector
%
% Useful variables
[m, n] = size(X);
% You should return these values correctly
mu = zeros(n, 1);
sigma2 = zeros(n, 1);
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the mean of the data and the variances
% In particular, mu(i) should contain the mean of
% the data for the i-th feature and sigma2(i)
% should contain variance of the i-th feature.
%
mu=1/m*sum(X);
sigma2=1/m*sum((X-repmat(mu,m,1)).^2);
% =============================================================
end
1.3 Selecting the threshold, ε
現在我們有了高斯引數,我們就可以調查一下那些樣例根據這個分佈有高可能性,那些樣例有非常低的可能性。有低可能性的樣例更有可能是異常的。
決定那些是異常的,一種方法是 根據 交叉驗證集 選擇一個 閾值。
這部分,實現一個演算法選擇 ,在交叉驗證集中使用 F1 值 來選擇 閾值ε。
交叉驗證集 {
標籤 y=1 表示是異常樣例,y=0 表示是正常樣例
對於每一個交叉驗證集,計算 p(
所有的
- tp 是正確的積極判定(true positives)的數量:標籤表明是異常,演算法正確分類為異常
- fp 是錯誤的積極判定(false positives)的數量:標籤表明是正常,演算法錯誤的分類為異常
- fn 是錯誤的消極判定(false negatives)的數量:標籤表明是異常,演算法錯誤的分類為正常
%% ================== Part 3: Find Outliers ===================
% Now you will find a good epsilon threshold using a cross-validation set
% probabilities given the estimated Gaussian distribution
%
pval = multivariateGaussian(Xval, mu, sigma2);
[epsilon F1] = selectThreshold(yval, pval);
fprintf('Best epsilon found using cross-validation: %e\n', epsilon);
fprintf('Best F1 on Cross Validation Set: %f\n', F1);
fprintf(' (you should see a value epsilon of about 8.99e-05)\n');
fprintf(' (you should see a Best F1 value of 0.875000)\n\n');
% Find the outliers in the training set and plot the
outliers = find(p < epsilon);
% Draw a red circle around those outliers
hold on
plot(X(outliers, 1), X(outliers, 2), 'ro', 'LineWidth', 2, 'MarkerSize', 10);
hold off
fprintf('Program paused. Press enter to continue.\n');
pause;
selectThreshold.m
function [bestEpsilon bestF1] = selectThreshold(yval, pval)
%SELECTTHRESHOLD Find the best threshold (epsilon) to use for selecting
%outliers
% [bestEpsilon bestF1] = SELECTTHRESHOLD(yval, pval) finds the best
% threshold to use for selecting outliers based on the results from a
% validation set (pval) and the ground truth (yval).
%
bestEpsilon = 0;
bestF1 = 0;
F1 = 0;
stepsize = (max(pval) - min(pval)) / 1000;%計算步長
for epsilon = min(pval):stepsize:max(pval)
% ====================== YOUR CODE HERE ======================
% Instructions: Compute the F1 score of choosing epsilon as the
% threshold and place the value in F1. The code at the
% end of the loop will compare the F1 score for this
% choice of epsilon and set it to be the best epsilon if
% it is better than the current choice of epsilon.
%
% Note: You can use predictions = (pval < epsilon) to get a binary vector
% of 0's and 1's of the outlier predictions
predictions = (pval < epsilon);%概率小於閾值的數量,即預測為異常的數量
fp = sum((predictions == 1) & (yval == 0));%演算法錯誤的分類為異常,標籤表明是正常
fn = sum((predictions == 0) & (yval == 1));%演算法正確分類為正常,標籤表明是異常
tp = sum((predictions == 1) & (yval == 1));%演算法正確分類為異常,標籤表明是異常
prec = tp / (tp + fp);%準確率
rec = tp / (tp + fn);%召回率
F1 = 2 * prec * rec / (prec + rec);%F1值
% =============================================================
if F1 > bestF1
bestF1 = F1;
bestEpsilon = epsilon;
end
end
end
1.4 High dimensional dataset
將前面實現的異常檢測演算法應用在一個更現實、更難的資料集。
一個樣例有11個特徵,捕捉了伺服器更多的屬性。
%% ================== Part 4: Multidimensional Outliers ===================
% We will now use the code from the previous part and apply it to a
% harder problem in which more features describe each datapoint and only
% some features indicate whether a point is an outlier.
%
% Loads the second dataset. You should now have the
% variables X, Xval, yval in your environment
load('ex8data2.mat');
% Apply the same steps to the larger dataset
[mu sigma2] = estimateGaussian(X);
% Training set
p = multivariateGaussian(X, mu, sigma2);
% Cross-validation set
pval = multivariateGaussian(Xval, mu, sigma2);
% Find the best threshold
[epsilon F1] = selectThreshold(yval, pval);
fprintf('Best epsilon found using cross-validation: %e\n', epsilon);
fprintf('Best F1 on Cross Validation Set: %f\n', F1);
fprintf(' (you should see a value epsilon of about 1.38e-18)\n');
fprintf(' (you should see a Best F1 value of 0.615385)\n');
fprintf('# Outliers found: %d\n\n', sum(p < epsilon));
Best epsilon found using cross-validation: 1.377229e-18
Best F1 on Cross Validation Set: 0.615385
(you should see a value epsilon of about 1.38e-18)
(you should see a Best F1 value of 0.615385)
# Outliers found: 117
2 Recommender Systems
這部分,你將實現協同過濾學習演算法,並將其應用在一個電影評分資料集中。
評分範圍是1到5。
有
在練習的下一部分,你將實現 cofiCostFunc.m 方法,計算協同過濾目標函式和梯度。之後使用 vfmincg.m 學習協同過濾的引數。
2.1 Movie ratings dataset
從 ex8 movies.mat 讀取變數 Y 和 R 。
Y矩陣(num_movies × num_users) 儲存 評分
R矩陣是一個0-1標記矩陣,R(i,j)=1 表示 使用者 j 給電影 i 評過分;R(i,j)=0 相反。
協同過濾的目標是預測 沒有被評分,(即R(i,j)=0 )位置的評分。這樣就可以推薦預測使用者評分最高的電影給這個使用者了。
通過這部分練習,你將用 X 和 Theta 這兩個矩陣工作:
X矩陣的第 i 行 對應 第 i 個電影的特徵向量
Theta矩陣的 第 j 行對用 第 j 個使用者的引數向量
這個練習中 特徵數 n=100,相應的 X 是一個
1 Anomaly detection
實現一個異常檢測演算法檢測伺服器的異常行為
特徵是 每個伺服器的 吞吐量(throughput)(mb/s) 和 相應延遲(ms)
採集 m=307 臺執行中的伺服器的特徵,{x(1),...,x(m)}
其中大部 【1】無監督演算法
【2】聚類
【3】代價函式
【4】
【5】K的選擇
【6】降維
Answer:本來是 n 維,降維之後變成 k 維(k ≤ n)
【7】
【8】
Answer: 斜率-1
【9】
Answer: x 是一個向
Anomaly DetectionVS Supervised Learning
說到這裡我們肯定都有困惑,當我們有資料類標籤,為什麼我們不直接使用監督性學習而使用Anomaly detection,接下來就對兩者進行對比。
首先Anomaly detection 在資料集上特點是:很少量的posit
本次文章內容: Coursera吳恩達機器學習課程,第九周程式設計作業。程式語言是Matlab。
本文只是從程式碼結構上做的小筆記。
Anomaly Detection
part 0 Initialization
Part 1: Load Example Lecture 15 Anomaly Detection 異常檢測
15.1 異常檢測問題的動機 Problem Motivation
異常檢測(Anomaly detection)問題是機器學習演算法的一個常見應用。這種演算法雖然主要用於無監督學習問題,但從某些角度看,它又類似於一些監督學習問題。舉例: sans luci art 能夠 tro ron 便是 import grand
在分類問題中我們如果:
他們都是廣義線性模型中的一個樣例,在理解廣義線性模型之前須要先理解指數分布族。
指數分 優化問題 坐標 出了 變量 addclass fun ber 找到 線性
這篇博客主要解說了Ng的課第六、七個視頻,涉及到的內容包含,函數間隔和幾何間隔、最優間隔分類器 ( Optimal Margin
Classifier)、原始/對偶問題 ( Pr sca 優化 介紹 www 之間 output 現在 利用 href Andrew Ng機器學習課程筆記(四)之神經網絡
版權聲明:本文為博主原創文章,轉載請指明轉載地址
http://www.cnblogs.com/fydeblog/p/7365730.html
前言
表現 多次 無監督學習 答案 性能 分類 理想 通過 連續 機器學習的定義
計算機程序從經驗E中學習,解決某一任務T、進行某一性能度量P,通過P測定在T上的表現因E而提高。
簡而言之:程序通過多次執行之後獲得學習經驗,利用這些經驗可以使得程序的輸出結果更為理想,就是 梯度 tex 回歸 同步 常常 最好 可能 機器 http 監督學習算法工作流程
h代表假設函數,h是一個引導x得到y的函數
如何表示h函數是監督學習的關鍵問題
線性回歸:h函數是一個線性函數
代價函數
在線性回歸問題中,常常需要解決最小化問題。代 中學 修正 style tar 輸入 color 情況 html 知識 1.什麽是機器學習?
自動化:讓計算機處理繁瑣和重復的工作。
編程:設計一種算法,適用於解決特定的問題。
機器學習:可以解決更廣泛的而不是特定的問題。類比於人類從經驗中學習這種活動,從已有的數據中發現自
OCR的大概步驟
機器學習流水線(machine learning pipeline)
滑動窗體
上限分析
照片OCR是指照片光學字元識別(photo optical ch
隨機梯度下降
隨機梯度下降原理
小批量梯度下降
小批量梯度下降vs隨機梯度下降
隨機梯度下降的收
異常檢測問題
高斯分佈
高斯分佈中,μ和σ的關係
異常檢測的具體演算法
異常檢測演算法步驟總結
異常檢測 VS 監督學習
對不服從高斯分佈的資料進行
資料壓縮
二維降到一維
三維降到二維
視覺化資料
主成分分析(PCA)
PCA的執行過程2D -&
K均值 (K-means)演算法
K-Means的規範化描述
異常情況
K均值的代價函式
隨機初始化
肘部法則 (Elbow Method)
構建支援向量機
1.替換邏輯迴歸函式
2.去除多餘的常數項 1/m
3.正則化項係數的處理
大間距分類器
SVM決
評估假設函式
模型選擇
正則化引數λ對假設函式的影響
λ 在訓練集上的變化
λ在交叉驗證集上的變化
學習曲線(Lear
非線性假設
神經網路邏輯單元
激勵函式
輸入層,輸出層,隱藏層
前向傳播(forward propagation)的向量化實現
AND、OR、NOT、XNOR的實
數學運算
邏輯運算
賦值運算
矩陣的表示
繪製直方圖
獲取矩陣的尺寸
載入檔案
清空變數
擷取矩陣部分元素
相關推薦
Andrew NG 機器學習 練習8-Anomaly Detection and Recommender Systems
【原】Coursera—Andrew Ng機器學習—Week 8 習題—聚類 和 降維
斯坦福NG機器學習課程:Anomaly Detection筆記
Coursera-吳恩達-機器學習-第九周-程式設計作業-Anomaly Detection and Recommender Systems
【原】Coursera—Andrew Ng機器學習—課程筆記 Lecture 15—Anomaly Detection異常檢測
廣義線性模型 - Andrew Ng機器學習公開課筆記1.6
Andrew Ng機器學習筆記+Weka相關算法實現(四)SVM和原始對偶問題
Andrew Ng機器學習課程筆記(四)之神經網絡
Andrew Ng機器學習第一章——初識機器學習
Andrew Ng機器學習第一章——單變量線性回歸
Andrew Ng機器學習(零):什麽是機器學習
Andrew Ng 機器學習筆記 16 :照片OCR
Andrew Ng 機器學習筆記 15 :大資料集梯度下降
Andrew Ng 機器學習筆記 14 :異常檢測
Andrew Ng 機器學習筆記 13 :降維(dimensionality reduction)
Andrew Ng 機器學習筆記 12 :聚類
Andrew Ng 機器學習筆記 11 :支援向量機(Support Vector Machine)
Andrew Ng 機器學習筆記 10 :評價學習演算法
Andrew Ng 機器學習筆記 09 :神經網路
Andrew Ng 機器學習筆記 07 :Octave/Matlab 使用說明