機器學習:基於Knn算法的用戶屬性判斷方案設計

2021-01-07 人人都是產品經理

本文作者通過Knn算法進行了一次用戶判斷預測的流程,文章為作者根據自身經驗所做出的總結,希望通過此文能夠加深你對Knn算法的認識。

knn算法簡介

K最近鄰(k-Nearest Neighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。knn的基本思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

如下圖所示,如何判斷綠色圓應該屬於哪一類,是屬於紅色三角形還是屬於藍色四方形?

如果K=3,由於紅色三角形所佔比例為2/3,綠色圓將被判定為屬於紅色三角形那個類

如果K=5,由於藍色四方形比例為3/5,因此綠色圓將被判定為屬於藍色四方形類。

由於KNN最鄰近分類算法在分類決策時只依據最鄰近的一個或者幾個樣本的類別來決定待分類樣本所屬的類別,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更為適合。

因此,k值的選擇、距離度量以及分類決策規則是k近鄰算法的三個基本要素。

真實業務場景

某公司存在有一些數據樣本(500*5矩陣),是關於人群屬性的一些特徵,希望通過已知數據的特徵,推測出部分目標數據的性質,假如特徵向量包含:

平均每日遊戲時長-game time異性朋友數-female friends周末在家時長-stay-in time用戶接受類型-attr(attr是目標判斷屬性,同時也是標記屬性)

問題:我們需要根據已知的這些屬性,判斷最後一個樣本的屬性是「Y」還是「N」

數據特徵分析

我們所拿到的這批數據是500*5的矩陣,以平均每日遊戲時長,異性朋友數,周末在家時長為軸,將不同屬性的點用不同顏色區分,利用matplotlib繪製散點圖,最終效果如圖。

由於這些測試數據在空間的分布非常集中,所以對於需要驗證的點(紅,綠兩點),我們很容易區分出這些點的屬性 結合本次的業務場景,我們將通過前三種特徵的空間分布,對attr屬性進行預測

具體算法

在三維空間中,我們可以直觀判斷,那在具體的算法實現中,可以考慮使用

n維空間的歐氏距離:

通過以上公式,我們能對多維度數據進行分析,得到目標與各點的距離。

同時,細心的讀者肯定考慮到,我們已知的這些特徵,存在量級之間的差異,所以我們通常需要通過歸一化特徵值,對消除不同量級造成的影響。因此,我們選用0-1標準化(0-1 normalization)對原始數據的線性變換。

0-1標準化:

在通過以上兩步對數據預處理完成後,我們將所得的距離進行排序,並選取合適的K值對目標數據進行預測。

在此選擇k=10(僅舉例),可以發現,前10項中Y出現的次數最多,因此我們可以認為目標數據的值為Y。

knn算法總結

在數據分析團隊確定好數據特徵後,對相應數據進行收集及清洗,對各數據特徵進行歸一化處理(視具體業務場景定,或需特徵考慮權重),完成以上流程後,進行以下通用流程:

計算測試數據與各個訓練數據之間的距離;按照距離的遞增關係進行排序;選取距離最小的K個點;確定前K個點所在類別的出現頻率;返回前K個點中出現頻率最高的類別作為測試數據的預測分類。最後,我們簡單總結一下Knn的適用場景

數據已存在標記特徵,Knn是監督算法樣本數在100k以下,由於算法會對每個目標值進行多維度距離計算,所以樣本過大可能超負荷樣本非文本,或可轉化為數值以上便是通過Knn算法進行了一次用戶判斷預測的流程,文中所展示內容均為模擬數據,且選擇了其中最簡單的判斷屬性。如文中有遺漏及不足,請各位指出。

本文由 @Dave Fu 原創發布於人人都是產品經理。未經許可,禁止轉載。

題圖來自 unsplash,基於 CC0 協議

相關焦點

  • 機器學習之KNN分類算法介紹: Stata和R同步實現(附數據和代碼)
    在Stata和R(knn3函數)中,默認的距離指歐式距離(Euclidean Distance,記為L2)。近年來計量經濟學也已經把KNN納入,當成一種非參估計的方法。KNN可看成一種基於實例的學習算法,通過局部近似及推遲所有計算到分類之後,故也被稱為「惰性學習算法」。KNN分類通過最近的k個近鄰樣本的類別,來推測目標樣本的類別。
  • 數據驅動優化:如何利用 KNN 算法驅動產品優化?
    在網際網路行業中常常有利用數據分析或者數據挖掘的結論來應用到產品中,驅動產品的優化,提升產品的各項KPI 指標, 在數據挖掘和數據分析的背後會涉及到一些數據挖掘或者機器學習的算法。本文主要是knn算法原理的介紹,以及在它在網際網路行業中的具體應用,後續會介紹這個算法的具體實現(R 語言和python 語言)。
  • 聚類(三):KNN算法(R語言)
    k最臨近(KNN)算法是最簡單的分類算法之一,屬於有監督的機器學習算法。
  • KNN算法中的K有多重要
    K-最近鄰(KNN)是一種有監督的機器學習算法,可用於解決分類和回歸問題。它基於一個非常簡單的想法,數據點的值由它周圍的數據點決定。考慮的數據點數量由k值確定。因此,k值是算法的核心。KNN分類器根據多數表決原則確定數據點的類別。如果k設置為5,則檢查5個最近點的類別。也可以根據多數類進行回歸預測,同樣,KNN回歸取5個最近點的平均值。
  • CB算法:基於內容的推薦算法的基本原理
    推薦系統能有效幫助用戶快速發現感興趣和高質量的信息,增加用戶使用產品的時長。推薦系統越精準,用戶的使用體驗就越好,產品越容易留住用戶。近幾年,今日頭條、抖音等產品的誕生,也使得基於內容的推薦算法這一古老算法的崛起。本文將簡要闡述基於內容的推薦算法的基本原理,enjoy~基於內容的推薦算法是眾多推薦算法中的一種,是一種機器學習算法。
  • 9種常用的機器學習算法實現
    ,基於scikit-learn可以僅用幾行代碼就完成模型訓練、預測、評估和可視化。K-Nearest Neighbors這是用於分類和回歸的機器學習算法訓練模型knn_model = KNeighborsClassifier(n_neighbors=5)knn_model.fit(knn_X_train, knn_y_train)# 4. 預測數據knn_y_pred = knn_model.predict(knn_X_test)# 5.
  • Python機器學習實戰 —— KNN算法詳解
    這個系列按照機器學習實戰的章節來寫,由於市面上已經有很多同類的文章,一般以介紹算法,貼代碼,舉例子為主,個人讀下來,覺得對於實現的代碼還是不能有很好的理解,所有有了這個系列。鄰近算法,或者說K最近鄰(kNN,k-NearestNeighbor)分類算法是數據挖掘分類技術中最簡單的方法之一。所謂K最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。平常生活中我們都會下意識的運用到我們的判斷中,比如富人區和窮人區,判斷一個人是富人還是窮人根據他的朋友的判斷,就是運用了kNN的思想。
  • R語言--鄰近算法KNN
    ❝KNN(k鄰近算法)是機器學習算法中常見的用於分類或回歸的算法。它簡單,訓練數據快,對數據分布沒有要求,使它成為機器學習中使用頻率較高的算法,並且,在深度學習大行其道的今天,傳統可解釋的簡單模型在工業大數據領域的應用更為廣泛。本文介紹KNN算法的基本原理和用R代碼實現。
  • 機器學習實戰之KNN算法
    首先,講講寫本系列教程的原因:第一,《機器學習實戰》的代碼由Python2編寫,有些代碼在Python3上運行已會報錯,本教程基於Python3進行代碼的修訂;第二:之前看了一些機器學習的書籍,沒有進行記錄,很快就忘記掉了,通過編寫教程也是一種複習的過程;第三,機器學習相對於爬蟲和數據分析而言,學習難度更大,希望通過本系列文字教程,讓讀者在學習機器學習的路上少走彎路。
  • 機器學習之KNN檢測惡意流量
    近年來,隨著基礎設施的完善,海量大數據的積累,機器學習方法理論越來越成熟,算力的大幅度提升,網際網路企業也越來越願意增大在AI領域的投入,AI的優勢在於處理海量數據提取捕獲其中有用信息上發揮著非常重要的作用,如OCR領域圖片鑑黃、自然語言處理方面的惡意言論捕獲、風控領域畫像、推薦系統等。
  • 「人工智慧核心之機器學習(2)」——python 實現 KNN
    歡迎大家關注公眾號【哈希大數據】1、KNN算法基本介紹K-Nearest Neighbor(k最鄰近分類算法),簡稱KNN,是最簡單的一種有監督的機器學習算法。也是一種懶惰學習算法,即開始訓練僅僅是保存所有樣本集的信息,直到測試樣本到達才開始進行分類決策。
  • 機器學習(二)-------KNN算法的sklearn KNN實踐
    一.Skelarn KNN參數概述要使用sklearnKNN算法進行分類,我們需要先了解sklearnKNN算法的一些基本參數,那麼這節就先介紹這些內容吧。前面說到過,通過調整 K 值,算法會有不同的效果。- weights(權重):最普遍的 KNN 算法無論距離如何,權重都一樣,但有時候我們想搞點特殊化,比如距離更近的點讓它更加重要。這時候就需要 weight 這個參數了,這個參數有三個可選參數的值,決定了如何分配權重。參數選項如下: • 'uniform':不管遠近權重都一樣,就是最普通的 KNN 算法的形式。
  • R語言實現K最近鄰算法(KNN)
    文章目錄理解近鄰分類第一步收集數據第二步探索和準備數據第三步基於數據訓練模型第四步評估模型的性能
  • Sk-learn之KNN算法綜合實戰
    前面幾篇文章我們通過幾個小案例熟悉了在Python中使用sklearn模塊來用做機器學習項目的一般步驟,並通過機器學習中最簡單的KNN算法進行演示。本次機器學習的任務就是歸納各項檢測信息與標籤值M/B的對應關係建立模型來預測。2.
  • 共享·乾貨|機器學習之KNN鄰近算法
    機器學習的算法常常模擬人類的思考方式來對物體進行判斷。在人類進行學習和理解世界的過程中,常常採用一種將相似物體分到同一類別的方式進行對事物的判斷,也就是:「物以類聚,人以群分」的思維方式。機器學習中也有這樣的分類算法。以下的例子可以幫助我們更好的解釋這樣的算法。
  • Facebook利用最新的機器學習算法幫助用戶判斷新聞真假
    (原標題:Facebook利用最新的機器學習算法幫助用戶判斷新聞真假)
  • kNN算法量化交易初試
    這篇文章主要介紹一下kNN分類算法在Python3上的實現,根據自己的一些粗淺的想法做了一個探索性的實驗。本篇內容框架kNN算法簡介kNN與股票漲跌分類數據獲取基於Python的算法實現ConclusionkNN算法簡介kNN算法的基本原理其實就是將訓練集和測試集的標籤數據同時放到一個特徵空間當中,特徵空間的維度n也是我們數據集特徵的個數。
  • 基於KNN和Kmeans算法利用MNIST數據集實現手寫數字識別
    作者: 陳千鶴 來源:人工智慧學習圈 KNN算法發展狀況K-最近鄰法(K-Nearest Neighbor, KNN)最初由Cover和Hart於1968年提出,是一個在理論上比較成熟的分類算法。這是一種基於模板匹配思想的算法,雖然簡單,但很有效,至今仍在被使用。
  • 圖像識別之KNN算法的理解與應用
    KNN是最經典的機器學習算法之一。
  • 淺談機器學習分類算法
    目前隨著人工智慧的發展,機器學習的應用領域日益寬泛,各種機器學習適應不同的應用場景,而機器學習差別的關鍵點之一就在於所使用算法的不同,