机器学习week9 ex8 review
機器學習week9 ex8 review
這周學習異常監測, 第一部分完成對一個網絡中故障的服務器的監測。第二部分使用協同過濾來實現一個電影推薦系統。
?
1 Anomaly Detection
監測服務器工作狀態的指標:吞吐量(throughput)、延遲(latency)。
我們有 的無標簽數據集,這里認為其中絕大多數都是正常工作的服務器,其中少量是異常狀態。
先通過散點圖來直觀判斷。
1.1 Gaussian distribution
對數據的分布情況選擇一個模型。
高斯分布的公式如下:
其中 是平均值,是標準差。
1.2 Estimating parameters for Gaussian distribution
根據如下公式計算高斯分布的參數:
完成estimateGaussian.m如下:
完成之后,腳本文件會執行繪制等高線的操作,即得到如下圖像:
1.3 Selecting the threshold
以 為臨界值, 的情況被認為是異常狀況。
通過交叉驗證集來選擇這樣的 。
交叉驗證集中的數據是帶標簽的。根據之前學到的 來評價選擇的優劣。
其中 分別代表true positive,false positive, false negative。
按照選定的 ,判斷異常情況如下圖:
1.4 High dimensional Dataset
對上述函數,換用更高維的數據集。(11 features)
與之前2維的情況并沒有什么區別。
2 Recommender system
對關于電影評分的數據集使用協同過濾算法,實現推薦系統。
Datasets來源:MoiveLens 100k Datasets.
對矩陣可視化:
作為對比,四階單位矩陣可視化情況如下:
2.1 Movie rating dataset
矩陣 (大小為num_movies num_users);
矩陣 ( 表示電影 被用戶 評分過).
2.2 Collaborating filtering learning algorithm
整個2.2都是對cofiCostFunc.m的處理。
原文件中提供的代碼如下:
2.2.1 Collaborating filtering cost function
未經過regularization的代價函數如下:
故增加如下代碼:
2.2.2 Collaborating filtering gradient
公式如下:
按照文檔里的Tips進行向量化,加入如下代碼:
for i = 1: num_movies,X_grad(i,:) = sum(((diff(i,:).* R(i,:))'.* Theta)); end;for j = 1: num_users,Theta_grad(j,:) = sum(((diff(:,j).* R(:,j)) .* X)); end;想了一會,發現好像可以更徹底地向量化:
X_grad = diff.* R * Theta; Theta_grad = (diff.*R)' * X;2.2.3 Regularized cost function
2.2.4 Regularized gradient
只需要在上述代碼中加入regularization的部分即可。
如下:
2.3 Learning movie recommendations
2.3.1 Recommendations
在腳本文件中填入自己對movie_list.txt中部分電影的評分。
似乎提供的電影都是新世紀以前上映的,因此我沒有看過太多。我挑選了如下幾部評分:
推薦系統給我推薦了如下電影:
我沒有辦法判斷準不準,因為我一部也沒有看過。但隨便搜了其中的幾部,感覺我可能并不會喜歡。
也許是我提供的樣本太小了,也許是這個推薦系統太簡陋了吧。
轉載于:https://www.cnblogs.com/EtoDemerzel/p/7919953.html
總結
以上是生活随笔為你收集整理的机器学习week9 ex8 review的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微软历史最高市值是多少?
- 下一篇: 【296天】我爱刷题系列055(2017