成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習其實比你想的更簡單

開發 項目管理
很多人覺得機器學習高不可攀,認為這是一門只有少數專業學者才了解的神秘技術。

很多人覺得機器學習高不可攀,認為這是一門只有少數專業學者才了解的神秘技術。

畢竟,你是在讓運行在二進制世界里的機器得出它自己對現實世界的認識。你正在教它們如何思考。然而,本文幾乎不是你所認為的晦澀難懂、復雜而充滿數 學公式的文章。正如所有幫助我們認識世界的基本常識一樣(例如:牛頓運動定律、工作需要去完成、供需關系等等),機器學習***的方法和概念也應該是簡潔明 了的。可惜的是,絕大多數關于機器學習的文獻都充斥著復雜難懂的符號、艱澀晦暗的數學公式和不必要的廢話。正是這給機器學習簡單基礎的思想圍上了一堵厚厚 的墻。

​現在看一個實際的例子,我們需要在一篇文章的末尾增加一個“你可能喜歡”的推薦功能,那么我們該如何實現呢?

 

為了實現這個想法,我們有一個簡單的解決方案:

  • 1.獲得當前文章的標題并將其分割成獨立的單詞(譯者注:原文是英文,只需要依據空格分割即可,中文分詞需要用到分詞器)
  • 2.獲取除當前文章以外的所有文章
  • 3.將這些文章依據其內容與當前文章標題的重合程度進行排序
  1. def similar_posts(post) 
  2.   title_keywords = post.title.split(' ') 
  3.   Post.all.to_a.sort |post1, post2| 
  4.     post1post1_title_intersection = post1.body.split(' ') & title_keywords 
  5.     post2post2_title_intersection = post2.body.split(' ') & title_keywords 
  6.   
  7.     post2_title_intersection.length <=> post1_title_intersection.length 
  8.   end[0..9] 
  9. end 

采用這種方法去找出與博文“支持團隊如何提高產品質量”相似的文章,我們由此得到下列相關度前十的文章:

  • 如何著手實施一個經過驗證的方案
  • 了解你的客戶是如何做決策的
  • 設計***運行界面以取悅你的用戶
  • 如何招聘設計師
  • 圖標設計的探討
  • 對歌手Ryan的采訪
  • 通過內部交流對客戶進行積極支持
  • 為什么成為***并不重要
  • 對Joshua Porter的采訪
  • 客戶留存、群組分析與可視化

正如你所看到的,標桿文章是關于如何有效率地進行團隊支持,而這與客戶群組分析、討論設計的優點都沒有太大的關系,其實我們還可以采取更好的方法。

現在,我們嘗試用一種真正意義上的機器學習方法來解決這個問題。分兩步進行:

  1. 將文章用數學的形式表示;
  2. 用K均值(K-means)聚類算法對上述數據點進行聚類分析。

1.將文章用數學的形式表示

如果我們可以將文章以數學的形式展示,那么可以根據文章之前的相似程度作圖,并識別出不同簇群:

如上圖所示,將每篇文章映射成坐標系上的一個坐標點并不難,可以通過如下兩步實現:

  1. 找出每篇文章中的所有單詞;
  2. 為每篇文章建立一個數組,數組中的元素為0或者1,用于表示某單詞在該文章中是否出現了,每篇文章數組元素的順序都是一樣的,只是其值有差異。

Ruby代碼如下:

  1. @posts = Post.all 
  2.   
  3. @words = @posts.map do |p| 
  4.   p.body.split(' ') 
  5. end.flatten.uniq 
  6.   
  7. @vectors = @posts.map do |p| 
  8.   @words.map do |w| 
  9.     p.body.include?(w) ? 1 : 0 
  10.   end 
  11. end 

假設@words 的值為:

[“你好”,”內部”,”內部交流”,”讀者”,”博客”,”發布”]

如果某篇文章的內容是“你好 博客 發布 讀者”,那么其對應的數組即為:

[1,0,0,1,1,1]

當然,我們現在沒法使用簡單的工具像二維坐標系一樣展示這個六維度的坐標點,但是這其中涉及的基本概念,例如兩點之間的距離都是互通的,可以通過二維推廣到更高維度(因此使用二維的例子來說明問題還是行得通的)。

#p#

2.用K均值(K-means)聚類算法對數據點進行聚類分析

現在我們得到了一系列文章的坐標,可以嘗試找出相似文章的群簇。這里我們采用使用一個相當簡單聚類算法-K均值算法,概括起來有五個步驟:

  1. 設定一個數K,它表示群簇中對象的數目;
  2. 從所有數據對象中隨機選擇K個對象作為初始的K個群簇中心;
  3. 遍歷所有對象,分別將它們指派到離自己最近的一個群簇中;
  4. 更新群簇中心,即計算每個群簇中對象的均值,并將均值作為該群簇的新中心;
  5. 重復3、4步驟,直到每個群簇中心不再變化。

我們接下來用圖的形式形象化地展示這些步驟。首先我們從一系列文章坐標中隨機選擇兩個點(K=2):

我們將每篇文章指派到離它最近的群簇中:

我們計算各個群簇中所有對象的坐標均值,作為該群簇新的中心。

這樣我們就完成了***次的數據迭代,現在我們將文章根據新的群簇中心重新指派到對應的群簇中去。

至此,我們找到了每篇文章對應的群簇!很明顯,即使繼續進行迭代群簇中心不會改變,每篇文章對應的群簇也不會改變了。

上述過程的Ruby代碼如下:

  1. @cluster_centers = [rand_point(), rand_point()] 
  2.   
  3. 15.times do 
  4.   @clusters = [[], []] 
  5.   
  6.   @posts.each do |post| 
  7.     min_distance, min_point = nil, nil 
  8.   
  9.     @cluster_centers.each.with_index do |center, i| 
  10.       if distance(center, post) < min_distance 
  11.         min_distance = distance(center, post) 
  12.         min_point = i 
  13.       end 
  14.     end 
  15.   
  16.     @clusters[min_point] << post 
  17.   end 
  18.   
  19.   @cluster_centers = @clusters.map do |post| 
  20.     average(posts) 
  21.   end 
  22. end 

下面是由這個方法得到的與博文“支持團隊如何提高產品質量”相似性排在前十位的文章:

  • 你對此更了解了還是你更聰明了
  • 客戶反饋的三個準則
  • 從客戶獲取你所要的信息
  • 產品交付只是一個開始
  • 你覺得功能擴展看起來像什么
  • 了解你的用戶群
  • 在正確的信息和正確的時間下轉換客戶
  • 與你的客戶溝通
  • 你的應用有消息推送安排嗎
  • 你有試著與客戶溝通嗎
  • 結果不言自明。
  • 我們僅僅用了不到40行的代碼以及簡單的算法介紹就實現了這個想法,然而如果你看學術論文你永遠不會知道這本該有多簡單。下面是一篇介紹K均值算法論文的摘要(并不知道K均值算法是誰提出的,但這是***提出“K均值”這個術語的文章)。

如果你喜歡以數學符號去表達思想,毫無疑問學術論文是很有用處的。然而,其實有更多優質的資源可以替換掉這些繁雜數學公式,它們更實際、更平易近人。

  • Wiki百科(例如:潛在語義索引,聚類分析)
  • 開源機器學習庫的源代碼(例如: Scipy’s K-Means,Scikit’s DBSCAN)
  • 以程序員的角度編寫的書籍(例如:集體智慧編程,黑客機器學習)
  • 可汗學院

試一試

如何為你的項目管理應用推薦標簽?如何設計你的客戶支持工具?或者是社交網絡中用戶如何分組?這些都可以通過簡答的代碼、簡單的算法來實現,是練習的好機會!所以,如果你認為項目中面臨的問題可以通過機器學習來解決,那為什么還要猶豫呢?

機器學習其實比你想象得更簡單!

原文鏈接:http://blog.jobbole.com/53546/

責任編輯:陳四芳 來源: 伯樂在線
相關推薦

2019-04-04 13:33:17

2010-05-06 09:23:45

云計算

2017-08-25 14:46:43

OOMBitmap內存

2020-04-24 09:58:18

數據泄露黑客網絡攻擊

2022-09-25 11:46:52

瀏覽器擴展程序廣告攔截器

2022-09-28 07:19:35

瀏覽器安全保證惡意擴展

2014-02-10 17:48:00

Windows 8.1

2012-09-24 11:14:06

PHP編程語言Web開發

2012-09-20 09:28:26

PHP程序Web

2015-04-13 10:30:14

2018-05-11 09:39:35

2021-06-09 15:40:47

容器

2022-09-19 15:50:10

物聯網安全工業4.0

2023-02-10 08:13:56

Pythonf-strings

2017-04-06 10:40:49

機器學習開源Python庫

2018-04-10 16:24:03

算法分布式一致性

2023-09-25 14:48:24

Wi-Fi 6

2020-09-08 11:06:04

機器學習

2022-03-31 10:39:07

Linuxsudo命令

2019-01-11 10:00:44

微信騰訊改版
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人精品福利 | 亚洲毛片 | 国产视频久久 | 欧美一级二级三级视频 | 国产欧美日韩综合精品一 | 欧产日产国产精品视频 | 免费看片国产 | 99tv| 国产精品三级 | 免费一区二区 | 日韩在线精品 | 久久久久久久久99 | 亚洲综合国产 | 国产乱码精品一区二三赶尸艳谈 | 欧美在线观看一区 | 欧美日韩一区在线 | 国产激情精品一区二区三区 | 一区二区三区四区免费视频 | 亚洲日本乱码在线观看 | 亚洲成年在线 | 国产精品视频一二三区 | 午夜视频一区二区 | 欧美精品一区二区三区在线 | 伊人狠狠操 | 欧美一区二区三区高清视频 | 国产福利在线小视频 | 国产蜜臀97一区二区三区 | www.se91| 国产一区二区成人 | 亚洲免费三区 | 视频一区欧美 | 成人久久18免费网站 | 久久久久国产精品午夜一区 | 日韩一区二区在线观看视频 | 亚洲在线免费 | 国产视频第一页 | 玖玖国产精品视频 | 精品影院| 国产日韩欧美在线观看 | 国产综合精品一区二区三区 | 免费在线观看一区二区 |