當我們拿到資料進行建模時,如何選擇更合適的演算法?

2021-09-12 03:53:47 字數 2516 閱讀 7873

【每日一問】當我們拿到資料進行建模時,如何選擇更合適的演算法?

datawhale優秀回答者:mashagua,金小楗

目標導向

【每日一問】什麼是k-means演算法?

datawhale優秀回答者:金小楗、強

通俗解釋

聚類演算法有很多種,k-means 是聚類演算法中的最常用的一種,演算法最大的特點是簡單,好理解,運算速度快,但是只能應用於連續型的資料,並且一定要在聚類前需要手工指定要分成幾類。

k-means 聚類演算法的大致意思就是「物以類聚,人以群分」。

首先輸入 k 的值,即我們指定希望通過聚類得到 k 個分組;

從資料集中隨機選取 k 個資料點作為初始大佬(質心);

對集合中每乙個小弟,計算與每乙個大佬的距離,離哪個大佬距離近,就跟定哪個大佬。

這時每乙個大佬手下都聚集了一票小弟,這時候召開選舉大會,每一群選出新的大佬(即通過演算法選出新的質心)。

如果新大佬和老大佬之間的距離小於某乙個設定的閾值(表示重新計算的質心的位置變化不大,趨於穩定,或者說收斂),可以認為我們進行的聚類已經達到期望的結果,演算法終止。

如果新大佬和老大佬距離變化很大,需要迭代3~5步驟。

專業解釋

k-means演算法的基本思想是初始隨機給定k個簇中心,按照最鄰近原則把待分類樣本點分到各個簇。然後按平均法重新計算各個簇的質心,

從而確定新的簇心。一直迭代,直到簇心的移動距離小於某個給定的值。

k-means聚類演算法主要分為三個步驟:

(1)為待聚類的點尋找聚類中心;

(2)計算每個點到聚類中心的距離,將每個點聚類到離該點最近的聚類中去;

(3)計算每個聚類中所有點的座標平均值,並將這個平均值作為新的聚類中心;

反覆執行(2)、(3),直到聚類中心不再進行大範圍移動或者聚類次數達到要求為止。

使用k-means需要考慮的問題:

1.k如何確定

2.初始質心的選取

3.距離的度量

4.質心的計算

5.演算法停止條件

6.空聚類的處理

k-means的缺陷:

k-menas演算法試圖找到使平凡誤差準則函式最小的簇。當潛在的簇形狀是凸面的,簇與簇之間區別較明顯,且簇大小相近時,其聚類結果較理想。

該演算法除了要事先確定簇數k和對初始聚類中心敏感外,經常以區域性最優結束,同時對「雜訊」和孤立點敏感,並且該方法不適於發現非凸面形狀的簇或大小差別很大的簇。

k-means演算法的聚類中心的個數k 需要事先給定,但在實際中這個 k 值的選定是非常難以估計的,很多時候,事先並不知道給定的資料集應該分成多少個類別才最合適。

k-means需要人為地確定初始聚類中心,不同的初始聚類中心可能導致完全不同的聚類結果。

k-means ++ 演算法:

k-means++演算法選擇初始聚類中心的基本思想就是:初始的聚類中心之間的相互距離要盡可能的遠。

1.從輸入的資料點集合中隨機選擇乙個點作為第乙個聚類中心;

2.對於資料集中的每乙個點x,計算它與最近聚類中心(指已選擇的聚類中心)的距離d(x);

3.選擇乙個新的資料點作為新的聚類中心,選擇的原則是:d(x)較大的點,被選取作為聚類中心的概率較大;

4.重複2和3直到k個聚類中心被選出來;

5.利用這k個初始的聚類中心來執行標準的k-means演算法。

【每日一問】談談對分類(classification)和**(prediction)的理解,主要步驟有哪些,以及兩者的區別和聯絡。

datawhale優秀回答者:寧靜致遠

一、介紹

分類:輸入樣本資料,輸出對應的類別,將樣本中每個資料對應乙個已知屬性。

**:兩種或者兩種以上的變數之間相互依賴的函式模型,**給定自變數對應的因變數的值。

二、步驟

分類演算法分為兩步:

(1)學習步:通過訓練樣本資料集,建立分類規則

(2)分類步:用已知的測試樣本集評估分類規則的準確率,若準確率可接受,則是使用該規則對除樣本以外的資料(待測樣本集)進行**。

**演算法分兩步:

(1)我們先要基於一定數量的樣本來訓練出乙個訓練模型;

(2)為了判斷這個模型訓練的如何,我們還要對其進行檢測一下;

(3)如果測試的樣本資料與我們想象中的差別太大,那麼我們就要重新進行訓練這個**模型,但是如果我們的**模型符合我們的預先的期望,那麼我們就可以用這個模型進行**的操作.

三、區別

特徵

1.分類

2.回歸**

輸出型別

1.離散資料

2.連續資料

目的

1.尋找決策邊界

2.找到最優擬合線

評價方法

1.精度、混淆矩陣

2.see(sum of square errors)或擬合優度

四、聯絡

分類演算法可以**連續值,但是連續值是以類標籤的概率的形式。

**演算法可以**離散值,但離散值以整數形式表示。

當我們向伺服器post資料時,表單 or JSON

web前端開發中,以post方式向伺服器傳送請求的操作再平常不過。傳送post請求時,若需要傳遞資料,資料是包含在訊息主體中的。http 請求 訊息主體 傳遞資料的方式有兩種 表單和json。使用表單時,資料型別是普通的文字資料,或檔案 大型二進位制資料或者包含非ascii字元的資料 而json是指...

當資料庫變慢時,我們應如何入手

當資料庫變慢時,我們應如何入手 第一章 檢查系統的狀態 1.1 使用sar來檢查作業系統是否存在io問題 1.2 關注記憶體vmstat 1.3 找到使用資源特別大的oracle的session及其執行的語句 1.4 查詢前十條效能差的sql語句 第二章 檢查會話狀態 當應用管理員通告現在應用很慢 ...

資料建模 機器學習之如何進行特徵工程(上)

1 特徵選擇 當資料預處理完成後,我們需要選擇有意義的特徵輸入機器學習的演算法和模型進行訓練。通常來說,從兩個方面考慮來選擇特徵 特徵是否發散 如果乙個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異,這個特徵對於樣本的區分並沒有什麼用。根據特徵選擇的形式又可以將特徵選擇方法分為...