An Algorithm Summary of Programming Collective Intelligence (3)

k-Nearest Neighbors kNN(不要問我叫什么)
PCI里面用kNN做了一個價格預測模型,還有一個簡單的電影喜好預測。簡單來說就是要對一個東西做數值預測,就要先有一堆已經有數值的東西,從里面找出和要預測的東西相似的,再通過計算這些相似東西的均值來作出預測。

kNN里面首先遇到的問題是如何定義“相似”。

把物品的各種屬性量化,這樣就構成了一個若干維度的向量空間。于是我們說相似就是離得近。這個量化的時候學問很大,畢竟各種不同的屬性用不同的量化方法算出來的數值千差百異。所以還要根據各自的重要性進行伸縮調整,不重要的干脆就乘以一個零直接去掉省心。這是一個非常費心的活兒。不同的問題伸縮系數肯定各異,如何來確定這些系數就要加上主觀判斷、反復調整、結果比較、cross validation。這個時候優化算法是個不錯的選擇。這個我們后面還會提到。

怎么計算離得近呢?方法很多,PCI給了幾個:歐式距離,Pearson相關度和Tanimoto分數。具體如何計算就不重復了,讓我重復也重復不出來。

當然只選擇一個最相似的來進行預測是不夠準確的,所以有了k——選k個最相似的來平均——這就是kNN的來歷。

如何計算平均也是一個很有意思的事情。直接把k個數值加起來一除可以,就是有點簡單粗暴,不像讀書人做的事情,雖然暴力美有時候也是很誘人的。更合理一點的方法是給不同的數值分配權值,離得近的權重大一點,遠的就小一點。突然想起來原來的萬有引力公式,牛老大也喜歡近的,不知道能不能改叭改叭拿過來用。

優點
即使在復雜數值預測問題中依然理解,對系數調整的經驗在處理類似問題時依然很有幫助。
伸縮系數的調整不僅可以改善預測的結果,也說明了對應屬性的重要性。
隨時可以增大數據集

缺點
計算量大
調整系數很煩人

Clustering 聚類

層次聚類和K-means聚類都不做預測,所以也就不需要訓練。PCI里面舉了一個給blog分類的例子。

層次聚類很簡單,第一步的工作也是先量化,構建向量空間,然后不斷尋找最接近的兩個向量并合并他們作為一個新的聚類向量,直到最后只剩下一個聚類為止。

K-means聚類(又是k?!)有所不同。它先任意在向量空間中挑出k個點,然后把所有向量按照和這k個點的遠近劃分成組,每個向量加入距離最近的點所代表的組。然后計算每組的重心,把代表小組的點的位置調整到這個重心上,再重復上面的計算,知道所有的向量分組不再變化為止。

K-means需要你來確定這個K和點的初始位置,這里面沒有什么好辦法。

轉載于:https://www.cnblogs.com/ysjxw/archive/2008/04/11/1148892.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/380081.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/380081.shtml
英文地址,請注明出處:http://en.pswp.cn/news/380081.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

遠控免殺專題(24)-CACTUSTORCH免殺

轉載:https://mp.weixin.qq.com/s/g0CYvFMsrV7bHIfTnSUJBw 免殺能力一覽表 幾點說明: 1、上表中標識 √ 說明相應殺毒軟件未檢測出病毒,也就是代表了Bypass。 2、為了更好的對比效果,大部分測試payload均使用msf的windows/mete…

DOM快捷鍵

DOM所有的命令(CMD) 步驟/方法 cmd命令大全(第一部分)winver---------檢查Windows版本 wmimgmt.msc----打開windows管理體系結構(WMI) wupdmgr--------windows更新程序 wscript--------windows腳本宿主設置 write----------寫字板 winmsd---------系統…

病毒的手工排除與分析(更新完畢)

作者簡介楊京濤    8年以上的IT行業經驗,理解企業需求,有企業ERP軟件部署規劃能力,有綜合布線網絡規劃和管理能力。熟悉軟件以及各類硬件,電話程控設備,各類網絡設備的管理維護。有編程基礎,熟悉VBA、腳本、批處理…

JavaScript中的String substring()方法和示例

JavaScript | 字符串substring()方法 (JavaScript | String substring() Method) The String.substring() method in JavaScript is used to return a part of the string. The substring() extracted is from the given start and end index of the string. JavaScript中的Str…

Java——方法(練習九九乘法表)

public static void(int,byte…) xxx(int a,int b) 修飾符 返回值類型 方法名(參數類型 參數名1,參數類型 參數名2…){ 方法體語句; return 返回值; } public class fangfa {public static void main(String[] ar…

UVA 10405-Longest Common Subsequence

最長公共子序列&#xff0c;值得注意的是這道題不能用scanf讀字符串。 #include<stdio.h>#include<string.h>#define MAXD 1005char s1[MAXD], s2[MAXD];int dp[MAXD][MAXD];int max( int a, int b){return a > b ? a : b;}void solve(){int len1 strlen(s1 …

對初學者的幾點建議

http://www.cnblogs.com/thcjp/archive/2007/06/14/783157.html 天轟穿vs2005入門.net2.0系列視頻教程推出已經有接近8個月了&#xff0c;這期間我收到非常多的反饋&#xff0c;我只能用非常來形容&#xff0c;呵呵&#xff0c;當然也了解了很多人的心理和學習方法。但是很遺憾…

系統固件升級_固件和操作系統之間的差異

系統固件升級固件 (Firmware) Firmware is somewhere similar to software but it is not a software. Somehow it is a modified form of software. 固件與軟件相似&#xff0c;但不是軟件。 不知何故&#xff0c;它是軟件的修改形式。 Firmware is fixed data or code that …

cobalt strick 4.0 系列教程 (5)--- 獲取立足點

https://blog.ateam.qianxin.com/CobaltStrike4.0%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C_%E4%B8%AD%E6%96%87%E7%BF%BB%E8%AF%91.pdf 0x01 客戶端 System Profiler [即探針] System Profiler 是一個為客戶端攻擊提供的偵察工具。這個工具啟動一個本地的 web 服務器&#xff0…

[轉]sql,N/$/#/@的含義和作用

declare sql nvarchar(4000)set sql Nselect TotalRecordscount(*) from N( sqlFullPopulate N) a EXEC sp_executesql sql,NTotalRecords int output, TotalRecords output 問題&#xff1a;sql 后面有個N, N 起什么作用? 答案&#xff1a; 加上 N 代表存入數據庫時…

Java——方法重載(overload)(比較兩個數據是否相等)

重載&#xff1a;方法名相同&#xff0c;參數列表不同&#xff0c;與返回值類型無關 重載的分類&#xff1a; 1&#xff0c;參數個數不同 ①&#xff0c;④&#xff0c;⑤&#xff0c;⑥&#xff1b; 2&#xff0c;參數類型不同 ①&#xff0c;②&#xff0c;③、 ⑤&#x…

scala怎么做冪運算_Scala冪(冪)函數示例

scala怎么做冪運算Scala programming language has a huge set of libraries to support different functionalities. Scala編程語言具有大量的庫來支持不同的功能。 scala.math.pow() (scala.math.pow()) The pow() function is used for the exponential mathematical opera…

frame--轉載

所謂框架便是網頁畫面分成幾個框窗&#xff0c;同時取得多個 URL。只 要 <FRAMESET> <FRAME> 即可&#xff0c;而所有框架標記 要放在一個總起的 html 檔&#xff0c;這個檔案只記錄了該框架 如何劃分&#xff0c;不會顯示任何資料&#xff0c;所以不必放入 <…

cobalt strick 4.0 系列教程(6)Payload Artifact 和反病毒規避

0x01 哲學 Strategic Cyber 責任有限公司會定期回答有關規避的問題。Cobalt Strike 是否能夠繞過 AV 產品&#xff1f;它能繞過哪些 AV 產品&#xff1f;它多久檢查一次&#xff1f; Cobalt Strike 默認的 Artifact 可能會被大多數終端安全解決方案攔截。規避不是 Cobalt Str…

【轉】企業開發的困境與變局

原文&#xff1a;企業開發的困境與變局 文 / 劉江 算起來&#xff0c;《程序員》已經有幾年時間沒有大篇幅討論企業軟件開發這個話題了。這其實挺奇怪的。要知道&#xff0c;按類別來分&#xff0c;國內從事企業軟件開發的技術人員是最多的&#xff0c;從CSDN和《程序員》聯合舉…

c# 類對象和實例對象_C#類和對象能力問題 套裝4

c# 類對象和實例對象1) What are the correct statements about given code snippets? using System;public class Example{virtual private int X;private int Y;static void Main(string[] args){Console.WriteLine("Hello World");}}Hello WorldHelloWorldSyntax…

linkBar組件學習--設置linkBar子項的豎直間距.

效果&#xff1a;代碼&#xff1a; <?xml version"1.0" encoding"utf-8"?><!--http://blog.flexexamples.com/2008/04/20/setting-the-vertical-spacing-between-items-in-a-linkbar-control-in-flex/ --><mx:Application xmlns:mx"…

AES算法

算法簡介 AES本質是一種對稱分組密碼體制&#xff0c;采用代替/置換網絡。每輪由三層組成&#xff1a;線性混合層確保多輪之上的高度擴散&#xff0c;非線性層由16個S盒并置起到混淆的作用&#xff0c;秘鑰加密層將子秘鑰異或到中間狀態。 AES加密數據塊和秘鑰長度可以是128比…

C——結構體

例題1&#xff1a;(使用結構體) 輸入兩個學生的學號、姓名和成績&#xff0c;輸出成績較高的學生的學號、姓名和成績 解題思路&#xff1a; (1)定義連個結構相同的結構體變量student1,student2; (2)分別輸入兩個學生的學號、姓名、和成績&#xff1b; (3)比較兩個學生的成…

web.config配置文件詳解

<?xml version"1.0"?> <!--注意: 除了手動編輯此文件以外&#xff0c;您還可以使用 Web 管理工具來配置應用程序的設置。可以使用 Visual Studio 中的“網站”->“Asp.Net 配置”選項。 設置和注釋的完整列表在 machine.config.comments 中&#xff0c…