當前位置:首頁 » 操作系統 » 低密度演算法

低密度演算法

發布時間: 2023-09-13 06:37:56

⑴ 聚類演算法--DBSCAN

       DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有雜訊的基於密度的聚類方法)是一種很典型的密度聚類演算法,和K-Means,BIRCH這些一般只適用於凸樣本集的聚類相比,DBSCAN既可以適用於凸樣本集,也可以適用於非凸樣本集。 基於密度的帶有雜訊的空間聚類,可用於異常值監測,通俗來說就是基於密度的聚類演算法 !

        聚類就是對大量未知標注的數據集,按數據的內在相似性將數據集劃分為多個類別,使類別內的數據相似度較大而類別間的數據相似度較小。聚類演算法是無監督的演算法。

DBSCAN演算法的目的: 是基於密度尋找被低密度區域分離的高密度樣本分為三類: 

稠密區域內部的點(核心點): 在半徑Eps內含有超過MinPts數目的點 

稠密區域邊緣上的點(邊緣點): 在半徑Eps內點的數量小於MinPts(即不是核心點),但是其鄰域內至少包含一個核心點 

稀疏區域中的點(雜訊或者背景點): 任何不是核心點或者邊界點的點

特點 : 發現任意形狀的簇、對雜訊數據不敏感、一次掃描、需要密度參數作為停止條件,計算量大和復雜度高 。

    DBSCAN是一種基於密度的聚類演算法,這類密度聚類演算法一般假定類別可以通過樣本分布的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本周圍不遠處一定有同類別的樣本存在。

    通過將緊密相連的樣本劃為一類,這樣就得到了一個聚類類別。通過將所有各組緊密相連的樣本劃為各個不同的類別,則我們就得到了最終的所有聚類類別結果。

    前面我們定性描述了密度聚類的基本思想,在這里我們就看看DBSCAN是如何描述密度聚類的。DBSCAN是基於一組鄰域來描述樣本集的緊密程度的,參數(ϵϵ, MinPts)用來描述鄰域的樣本分布緊密程度。其中,ϵϵ描述了某一樣本的鄰域距離閾值,MinPts描述了某一樣本的距離為ϵϵ的鄰域中樣本個數的閾值。

    假設我們的樣本集是D=(x1,x2,...,xm)(x1,x2,...,xm),則DBSCAN具體的密度描述定義如下:

        1) ϵϵ-鄰域:對於xj∈Dxj∈D,其ϵϵ-鄰域包含樣本集D中與xjxj的距離不大於ϵϵ的子樣本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 這個子樣本集的個數記為|Nϵ(xj)||Nϵ(xj)|

        2)核心對象:對於任一樣本xj∈Dxj∈D,如果其ϵϵ-鄰域對應的Nϵ(xj)Nϵ(xj)至少包含MinPts個樣本,即如果|Nϵ(xj)|≥MinPts|Nϵ(xj)|≥MinPts,則xjxj是核心對象。

        3)密度直達:如果xixi位於xjxj的ϵϵ-鄰域中,且xjxj是核心對象,則稱xixi由xjxj密度直達。注意反之不一定成立,即此時不能說xjxj由xixi密度直達, 除非且xixi也是核心對象。

        4)密度可達:對於xixi和xjxj,如果存在樣本樣本序列p1,p2,...,pTp1,p2,...,pT,滿p1=xi,pT=xjp1=xi,pT=xj, 且pt+1pt+1由ptpt密度直達,則稱xjxj由xixi密度可達。也就是說,密度可達滿足傳遞性。此時序列中的傳遞樣本p1,p2,...,pT−1p1,p2,...,pT−1均為核心對象,因為只有核心對象才能使其他樣本密度直達。注意密度可達也不滿足對稱性,這個可以由密度直達的不對稱性得出。

       5)密度相連:對於xixi和xjxj,如果存在核心對象樣本xkxk,使xixi和xjxj均由xkxk密度可達,則稱xixi和xjxj密度相連。注意密度相連關系是滿足對稱性的。

從下圖可以很容易看出理解上述定義,圖中MinPts=5,紅色的點都是核心對象,因為其ϵϵ-鄰域至少有5個樣本。黑色的樣本是非核心對象。所有核心對象密度直達的樣本在以紅色核心對象為中心的超球體內,如果不在超球體內,則不能密度直達。圖中用綠色箭頭連起來的核心對象組成了密度可達的樣本序列。在這些密度可達的樣本序列的ϵϵ-鄰域內所有的樣本相互都是密度相連的。

    DBSCAN的聚類定義很簡單: 由密度可達關系導出的最大密度相連的樣本集合,即為我們最終聚類的一個類別,或者說一個簇 。

    這個DBSCAN的簇裡面可以有一個或者多個核心對象。如果只有一個核心對象,則簇裡面其他的非核心對象樣本都在這個核心對象的ϵϵ-鄰域里;如果有多個核心對象,則簇里的任意一個核心對象的ϵϵ-鄰域中一定有一個其他的核心對象,否則這個核心對象無法密度可達。這些核心對象的ϵϵ-鄰域里所有的樣本的集合組成的一個DBSCAN聚類簇。

       那麼怎麼才能找到這樣的簇樣本集合呢?DBSCAN使用的方法很簡單,它任意選擇一個沒有類別的核心對象作為種子,然後找到所有這個核心對象能夠密度可達的樣本集合,即為一個聚類簇。接著繼續選擇另一個沒有類別的核心對象去尋找密度可達的樣本集合,這樣就得到另一個聚類簇。一直運行到所有核心對象都有類別為止。基本上這就是DBSCAN演算法的主要內容了,但是我們還有三個問題沒有考慮。

    1)一些異常樣本點或者說少量游離於簇外的樣本點,這些點不在任何一個核心對象的周圍,在DBSCAN中,我們一般將這些樣本點標記為噪音點。

    2)距離的度量問題,即如何計算某樣本和核心對象樣本的距離。在DBSCAN中,一般採用最近鄰思想,採用某一種距離度量來衡量樣本距離,比如歐式距離。這和KNN分類演算法的最近鄰思想完全相同。對應少量的樣本,尋找最近鄰可以直接去計算所有樣本的距離,比如樣本量較大,則一般採用KD樹或者球樹來快速的搜索最近鄰。

    3)某些樣本可能到兩個核心對象的距離都小於ϵϵ,但是這兩個核心對象由於不是密度直達,又不屬於同一個聚類簇,那麼如何界定這個樣本的類別呢?一般來說,此時DBSCAN採用先來後到,先進行聚類的類別簇會標記這個樣本為它的類別。也就是說DBSCAN的演算法不是完全穩定的演算法。

DBSCAN通過檢查數據集中的每個對象的ε-鄰域來尋找聚類,如果一個點p的ε-鄰域包含對於m個對象,則創建一個p作為核心對象的新簇。然後,DBSCAN反復地定址這些核心對象直接密度可達的對象,這個過程可能涉及密度可達簇的合並。當沒有新的點可以被添加到任何簇時,該過程結束。演算法中的ε和m是根據先驗只是來給出的。

DBSCAN聚類演算法原理的基本要點:

    1.DBSCAN演算法需要選擇一種距離度量,對於待聚類的數據集中,任意兩個點之間的距離,反應了點之間的密度,說明了點與點是否能夠聚到同一類中。由於DBSCAN演算法對高維數據定義密度很困難,所以對於二維空間中的點,可以使用歐幾里得距離來進行度量。

    2.DBSCAN演算法需要用戶輸入2個參數: 一個參數是半徑(Eps),表示以給定點P為中心的圓形鄰域的范圍;另一個參數是以點P為中心的鄰域內最少點的數量(MinPts)。如果滿足:以點P為中心、半徑為Eps的鄰域內的點的個數不少於MinPts,則稱點P為核心點 。

    3.DBSCAN聚類聚類使用到一個 k-距離 的概念,k-距離是指:給定數據集P={p(i); i=0,1,……n},對於任意點P(i),計算點P(i)到集合D的子集S={p(1), p(2), …, p(i-1), p(i+1), …, p(n)}中 所有點之間的距離 , 距離按照從小到大的順序排序 ,假設排序後的距離集合為D={d(1), d(2), …, d(k-1), d(k), d(k+1), …,d(n)}, 則d(k)就被稱為k-距離 。也就是說, k-距離是點p(i)到所有點(除了p(i)點)之間距離第K近的距離 。對待聚類集合中 每個點p(i)都計算k-距離,最後得到所有點的k-距離集合E={e(1), e(2), …, e(n)} 。

    4.根據經驗計算半徑Eps:根據得到的所有點的 k-距離集合E ,對集合E進行 升序排序 後得到k-距離集合 E' ,需要擬合一條排序後的E'集合中k-距離的變化曲線圖,然後繪出曲線,通過觀察, 將急劇發生變化的位置所對應的k-距離的值,確定為半徑Eps的值 。

    5.根據經驗計算最少點的數量MinPts: 確定MinPts的大小,實際上也是確定k-距離中k的值 ,DBSCAN演算法中取k=4,則MinPts=4。

    6.另外,如果覺得經驗值聚類的結果不滿意,可以適當調整Eps和MinPts的值,經過多次迭代計算對比,選擇最合適的參數值。可以看出,如果MinPts不變。Eps取得值過大,會導致大多數點都聚到同一個簇中,Eps過小,會導致一個簇的分裂;如果Eps不變,MinPts的值取得過大,會導致同一個簇中點被標記為離群點,MinPts過小,會導致發現大量的核心點。

我們需要知道的是,DBSCAN演算法,需要輸入2個參數,這兩個參數的計算都來自經驗知識。半徑Eps的計算依賴於計算k-距離,DBSCAN取k=4,也就是設置MinPts=4,然後需要根據k-距離曲線,根據經驗觀察找到合適的半徑Eps的值,下面的演算法實現過程中,我們會詳細說明。

對於演算法的實現,我們概要地描述一下實現的過程:

    1.解析樣本數據文件。

    2.計算每個點與其他所有點之間的歐幾里得距離。

    3.計算每個點的k-距離值,並對所有點的k-距離集合進行升序排序,輸出的排序後的k-距離值。

    4.將所有點的k-距離值,在Excel中用散點圖顯示k-距離變化趨勢

    5.根據散點圖確定半徑Eps的值

    6.根據給定MinPts=4,以及半徑Eps的值,計算所有核心點,並建立核心點與核心點距離小於半徑Eps的點映射。

    7.根據得到的核心點集合,以及半徑Eps的值,計算能夠連通的核心點,並得到離群點。

    8.將能夠連通的每一組核心點,以及到核心點距離小於半徑Eps的點,都放到一起,形成一個簇。

    9.選擇不同的半徑Eps,使用DBSCAN演算法聚類得到的一組簇及其離群點,使用散點圖對比聚類效果。

    和傳統的K-Means演算法相比,DBSCAN最大的不同就是不需要輸入類別數K,當然它最大的優勢是可以發現任意形狀的聚類簇,而不是像K-Means,一般僅僅使用於凸的樣本集聚類。同時它在聚類的同時還可以找出異常點,這點和BIRCH演算法類似。

    那麼我們什麼時候需要用DBSCAN來聚類呢?一般來說,如果數據集是稠密的,並且數據集不是凸的,那麼用DBSCAN會比K-Means聚類效果好很多。 如果數據集不是稠密的,則不推薦用DBSCAN來聚類 。

    優點:

        1)可以對任意形狀的稠密數據集進行聚類,相對的,K-Means之類的聚類演算法一般只適用於凸數據集。不用指明類別的數量,能靈活找到並分離各種形狀和大小的類。能很好地處理雜訊和離群點。

        2)可以在聚類的同時發現異常點,對數據集中的異常點不敏感。

        3)聚類結果沒有偏倚,相對的,K-Means之類的聚類演算法初始值對聚類結果有很大影響。

    缺點:

         1)在不同密度的類方面有一定難度。如果樣本集的密度不均勻、聚類間距差相差很大時,聚類質量較差,這時用DBSCAN聚類一般不適合( HDBSCAN適合密度不均勻問題 )。

        2)如果樣本集較大時,聚類收斂時間較長,此時可以對搜索最近鄰近時建立的KD樹或者球樹進行規模限制來改進。當數據量增大時,要求較大的內存支持I/O消耗也很大;演算法聚類效果依賴與距離公式選取,實際應用中常用歐式距離,對於高維數據,存在「維數災難」。

        3)調參相對於傳統的K-Means之類的聚類演算法稍復雜,主要需要對距離閾值ϵϵ,鄰域樣本數閾值MinPts聯合調參,不同的參數組合對最後的聚類效果有較大影響。

        4)對於從兩類均可達的邊界點,由於各個點是被隨機訪問的,因此DBSCAN不能保證每次都返回相同的聚類。

    DBSCAN類的重要參數分為兩類,一類是DBSCAN演算法本身的參數,一類是最近鄰度量的參數,下面我們對這些參數做一個總結。

    1) eps: DBSCAN演算法參數,即我們的ϵ-鄰域的距離閾值,和樣本距離超過ϵ的樣本點不在ϵ-鄰域內。 默認值是0.5 ,一般需要通過在多組值裡面選擇一個合適的閾值。eps過大,則更多的點會落在核心對象的ϵ-鄰域,此時我們的類別數可能會減少,本來不應該是一類的樣本也會被劃分為一類。反之則類別數可能會增大,本來是一類的樣本卻被劃分開。

   2) min_samples: DBSCAN演算法參數,即樣本點要成為核心對象所需要的ϵ-鄰域的樣本數閾值。默認值是5。一般需要通過在多組值裡面選擇一個合適的閾值。通常和eps一起調參。在eps一定的情況下,min_samples過大,則核心對象會過少,此時簇內部分本來是一類的樣本可能會被標為噪音點,類別數也會變多。反之min_samples過小的話,則會產生大量的核心對象,可能會導致類別數過少。

    3) metric: 最近鄰距離度量參數。可以使用的距離度量比較多,一般來說DBSCAN使用默認的歐式距離(即p=2的閔可夫斯基距離)就可以滿足我們的需求。可以使用的距離量度參數有:歐式距離、曼哈頓距離、切比雪夫距離、閔可夫斯基距離、帶權重閔可夫斯基距離、標准化歐式距離、馬氏距離。

還有一些其他不是實數的距離度量,一般在DBSCAN演算法用不上,這里也就不列了。

    4)algorithm:最近鄰搜索演算法參數,演算法一共有三種,第一種是蠻力實現,第二種是KD樹實現,第三種是球樹實現。這三種方法與K近鄰法(KNN)原理中演算法一致。對於這個參數,一共有4種可選輸入,"brute"對應第一種蠻力實現,"kd_tree"對應於第二種KD樹實現,"ball_tree"對應於第三種的球樹實現,"auto"則會在上面三種演算法中做權衡,選擇一個擬合最好的最優演算法。 需要注意的是,如果輸入樣本特徵是稀疏的時候,無論我們選擇哪種演算法,最後sklearn都會去用蠻力實現"brute" 。個人的經驗,一般情況使用默認的"auto"就夠了。如果數據量很大或者特徵也很多,用「auto」建樹時間可能會很長,效率不高,建議選擇KD樹實現「kd_tree」,此時如果發現"kd_tree"速度比較慢或者已經知道樣本分布不是很均勻時,可以嘗試用"ball_tree"。

    5) leaf_size :最近鄰搜索演算法參數,為使用KD樹或者球樹時,停止建子樹的葉子節點數量的閾值。這個值越小,則生成的KD樹或者球樹就越大,層數越深,建樹時間越長,反之,則生成的KD樹或者球樹會小,層數較淺,建樹時間較短。默認是30,因為這個值一般隻影響演算法是運行速度和使用內存大小,因此一般情況下可以不管它。

    6) p :最近鄰距離度量參數。只有用於閔可夫斯基距離和帶權重閔客服斯基距離中p值的選擇,p=1為曼哈頓距離,p=2為歐式距離。如果使用默認的歐式距離不需要管這個參數。

以上就是DBSCAN類的主要參數介紹,其實需要調參的就是兩個參數eps和min_samples,這兩個值的組合對最終的聚類效果有很大的影響。

⑵ 人工智慧演算法簡介

人工智慧的三大基石—演算法、數據和計算能力,演算法作為其中之一,是非常重要的,那麼人工智慧都會涉及哪些演算法呢?不同演算法適用於哪些場景呢?

一、按照模型訓練方式不同可以分為監督學習(Supervised Learning),無監督學習(Unsupervised Learning)、半監督學習(Semi-supervised Learning)和強化學習(Reinforcement Learning)四大類。

常見的監督學習演算法包含以下幾類:
(1)人工神經網路(Artificial Neural Network)類:反向傳播(Backpropagation)、波爾茲曼機(Boltzmann Machine)、卷積神經網路(Convolutional Neural Network)、Hopfield網路(hopfield Network)、多層感知器(Multilyer Perceptron)、徑向基函數網路(Radial Basis Function Network,RBFN)、受限波爾茲曼機(Restricted Boltzmann Machine)、回歸神經網路(Recurrent Neural Network,RNN)、自組織映射(Self-organizing Map,SOM)、尖峰神經網路(Spiking Neural Network)等。
(2)貝葉斯類(Bayesin):樸素貝葉斯(Naive Bayes)、高斯貝葉斯(Gaussian Naive Bayes)、多項樸素貝葉斯(Multinomial Naive Bayes)、平均-依賴性評估(Averaged One-Dependence Estimators,AODE)
貝葉斯信念網路(Bayesian Belief Network,BBN)、貝葉斯網路(Bayesian Network,BN)等。
(3)決策樹(Decision Tree)類:分類和回歸樹(Classification and Regression Tree,CART)、迭代Dichotomiser3(Iterative Dichotomiser 3, ID3),C4.5演算法(C4.5 Algorithm)、C5.0演算法(C5.0 Algorithm)、卡方自動交互檢測(Chi-squared Automatic Interaction Detection,CHAID)、決策殘端(Decision Stump)、ID3演算法(ID3 Algorithm)、隨機森林(Random Forest)、SLIQ(Supervised Learning in Quest)等。
(4)線性分類器(Linear Classifier)類:Fisher的線性判別(Fisher』s Linear Discriminant)
線性回歸(Linear Regression)、邏輯回歸(Logistic Regression)、多項邏輯回歸(Multionmial Logistic Regression)、樸素貝葉斯分類器(Naive Bayes Classifier)、感知(Perception)、支持向量機(Support Vector Machine)等。

常見的無監督學習類演算法包括:
(1) 人工神經網路(Artificial Neural Network)類:生成對抗網路(Generative Adversarial Networks,GAN),前饋神經網路(Feedforward Neural Network)、邏輯學習機(Logic Learning Machine)、自組織映射(Self-organizing Map)等。
(2) 關聯規則學習(Association Rule Learning)類:先驗演算法(Apriori Algorithm)、Eclat演算法(Eclat Algorithm)、FP-Growth演算法等。
(3)分層聚類演算法(Hierarchical Clustering):單連鎖聚類(Single-linkage Clustering),概念聚類(Conceptual Clustering)等。
(4)聚類分析(Cluster analysis):BIRCH演算法、DBSCAN演算法,期望最大化(Expectation-maximization,EM)、模糊聚類(Fuzzy Clustering)、K-means演算法、K均值聚類(K-means Clustering)、K-medians聚類、均值漂移演算法(Mean-shift)、OPTICS演算法等。
(5)異常檢測(Anomaly detection)類:K最鄰近(K-nearest Neighbor,KNN)演算法,局部異常因子演算法(Local Outlier Factor,LOF)等。

常見的半監督學習類演算法包含:生成模型(Generative Models)、低密度分離(Low-density Separation)、基於圖形的方法(Graph-based Methods)、聯合訓練(Co-training)等。

常見的強化學習類演算法包含:Q學習(Q-learning)、狀態-行動-獎勵-狀態-行動(State-Action-Reward-State-Action,SARSA)、DQN(Deep Q Network)、策略梯度演算法(Policy Gradients)、基於模型強化學習(Model Based RL)、時序差分學習(Temporal Different Learning)等。

常見的深度學習類演算法包含:深度信念網路(Deep Belief Machines)、深度卷積神經網路(Deep Convolutional Neural Networks)、深度遞歸神經網路(Deep Recurrent Neural Network)、分層時間記憶(Hierarchical Temporal Memory,HTM)、深度波爾茲曼機(Deep Boltzmann Machine,DBM)、棧式自動編碼器(Stacked Autoencoder)、生成對抗網路(Generative Adversarial Networks)等。

二、按照解決任務的不同來分類,粗略可以分為二分類演算法(Two-class Classification)、多分類演算法(Multi-class Classification)、回歸演算法(Regression)、聚類演算法(Clustering)和異常檢測(Anomaly Detection)五種。
1.二分類(Two-class Classification)
(1)二分類支持向量機(Two-class SVM):適用於數據特徵較多、線性模型的場景。
(2)二分類平均感知器(Two-class Average Perceptron):適用於訓練時間短、線性模型的場景。
(3)二分類邏輯回歸(Two-class Logistic Regression):適用於訓練時間短、線性模型的場景。
(4)二分類貝葉斯點機(Two-class Bayes Point Machine):適用於訓練時間短、線性模型的場景。(5)二分類決策森林(Two-class Decision Forest):適用於訓練時間短、精準的場景。
(6)二分類提升決策樹(Two-class Boosted Decision Tree):適用於訓練時間短、精準度高、內存佔用量大的場景
(7)二分類決策叢林(Two-class Decision Jungle):適用於訓練時間短、精確度高、內存佔用量小的場景。
(8)二分類局部深度支持向量機(Two-class Locally Deep SVM):適用於數據特徵較多的場景。
(9)二分類神經網路(Two-class Neural Network):適用於精準度高、訓練時間較長的場景。

解決多分類問題通常適用三種解決方案:第一種,從數據集和適用方法入手,利用二分類器解決多分類問題;第二種,直接使用具備多分類能力的多分類器;第三種,將二分類器改進成為多分類器今兒解決多分類問題。
常用的演算法:
(1)多分類邏輯回歸(Multiclass Logistic Regression):適用訓練時間短、線性模型的場景。
(2)多分類神經網路(Multiclass Neural Network):適用於精準度高、訓練時間較長的場景。
(3)多分類決策森林(Multiclass Decision Forest):適用於精準度高,訓練時間短的場景。
(4)多分類決策叢林(Multiclass Decision Jungle):適用於精準度高,內存佔用較小的場景。
(5)「一對多」多分類(One-vs-all Multiclass):取決於二分類器效果。

回歸
回歸問題通常被用來預測具體的數值而非分類。除了返回的結果不同,其他方法與分類問題類似。我們將定量輸出,或者連續變數預測稱為回歸;將定性輸出,或者離散變數預測稱為分類。長巾的演算法有:
(1)排序回歸(Ordinal Regression):適用於對數據進行分類排序的場景。
(2)泊松回歸(Poission Regression):適用於預測事件次數的場景。
(3)快速森林分位數回歸(Fast Forest Quantile Regression):適用於預測分布的場景。
(4)線性回歸(Linear Regression):適用於訓練時間短、線性模型的場景。
(5)貝葉斯線性回歸(Bayesian Linear Regression):適用於線性模型,訓練數據量較少的場景。
(6)神經網路回歸(Neural Network Regression):適用於精準度高、訓練時間較長的場景。
(7)決策森林回歸(Decision Forest Regression):適用於精準度高、訓練時間短的場景。
(8)提升決策樹回歸(Boosted Decision Tree Regression):適用於精確度高、訓練時間短、內存佔用較大的場景。

聚類
聚類的目標是發現數據的潛在規律和結構。聚類通常被用做描述和衡量不同數據源間的相似性,並把數據源分類到不同的簇中。
(1)層次聚類(Hierarchical Clustering):適用於訓練時間短、大數據量的場景。
(2)K-means演算法:適用於精準度高、訓練時間短的場景。
(3)模糊聚類FCM演算法(Fuzzy C-means,FCM):適用於精確度高、訓練時間短的場景。
(4)SOM神經網路(Self-organizing Feature Map,SOM):適用於運行時間較長的場景。
異常檢測
異常檢測是指對數據中存在的不正常或非典型的分體進行檢測和標志,有時也稱為偏差檢測。
異常檢測看起來和監督學習問題非常相似,都是分類問題。都是對樣本的標簽進行預測和判斷,但是實際上兩者的區別非常大,因為異常檢測中的正樣本(異常點)非常小。常用的演算法有:
(1)一分類支持向量機(One-class SVM):適用於數據特徵較多的場景。
(2)基於PCA的異常檢測(PCA-based Anomaly Detection):適用於訓練時間短的場景。

常見的遷移學習類演算法包含:歸納式遷移學習(Inctive Transfer Learning) 、直推式遷移學習(Transctive Transfer Learning)、無監督式遷移學習(Unsupervised Transfer Learning)、傳遞式遷移學習(Transitive Transfer Learning)等。

演算法的適用場景:
需要考慮的因素有:
(1)數據量的大小、數據質量和數據本身的特點
(2)機器學習要解決的具體業務場景中問題的本質是什麼?
(3)可以接受的計算時間是什麼?
(4)演算法精度要求有多高?
————————————————

原文鏈接: https://blog.csdn.net/nfzhlk/article/details/82725769

⑶ 公式演算法

DHL的費用計算方法

空運的費用主要是運費和雜費,運費是按照重量等級來計算單價的,一般有這么幾個等級:+100KG (100KG以上的貨物)+300KG,+500KG,+1000KG
有些航空公司對+45KG也有運價,一般沒相應級別運價的話就按照TACT價格來計算貨物運費,貨物的計費重量也是個重要的地方,貨物的重量在空運上分體積重量和毛重兩個方面。當體積重量大於毛重是,體積重量就是貨物的計費重量,當體積重量小於毛重是,實際毛重就是計費重量。
雜費包括的方面就比較多點,一般來說包括倉儲費用,燃油附加費用,戰爭險等等
燃油附加費和戰爭險是特定情況下的產物,一般現在公司的報價都是包含在運費內的
DHL等快件類的運費計算是按照0.5KG為單位的,一般都是第一個0.5公斤有一個價格,然後就是續重價格
比如說一票快件,重量是3KGS 報價是起重

100RMB,續重 50RMB
那這個快件的運費就是100+(3*2-1)*50=350RMB。

國際包裹運費計算方法

1.計費重量單位:
特快專遞行業一般以每0.5KG(0.5公斤)為一個計費重量單位。
2.首重與續重:
特快專遞貨品的寄遞以第一個0.5KG為首重(或起重),每增加0.5KG為一個續重。
通常起重的費用相對續重費用較高。

3.實重與材積:
是指需要運輸的一批物品包括包裝在內的實際總重量稱為實重;
當需寄遞物品體積較大而實重較輕時,因運輸工具(飛機、火車、船、汽車等)承載能力及能裝載物品體積所限,需採取量取物品體積折算成重量的辦法做為計算運費的重量,稱為體積重量或材積。
體積重量大於實際重量的物品又常稱為輕拋物。

4.計費重量:
按實重與材積兩者的定義與國際航空貨運協會規定,貨物運輸過程中計收運費的重量是按整批貨物的實際重量和體積重量兩者之中較高的計算。

5.包裝費
一般情況下,快遞公司是免費包裝,提供紙箱、氣泡等包裝材料,但很多物品如衣物,不用特別細的包裝就可以,但一些貴重、易碎物品,快遞公司還是要收取一定的包裝費用的。包裝費用一般不計入折扣。

6.通用運費計算公式:
A) 當需寄遞物品實重大於材積時,運費計算方法為:
首重運費+(重量(公斤)×2-1)×續重運費
例如:7KG貨品按首重20元、續重9元計算,則運費總額為:
20+(7×2-1)*9=137 (元)
B) 當需寄遞物品實際重量小而體積較大,運費需按材積標准收取,然後再按上列公式計算運費總額。求取材積公式如下:
規則物品: 長(cm)×寬(cm)×高(cm)÷6000=重量(KG)
不規則物品: 最長(cm)×最寬(cm)×最高(cm) ÷6000=重量(KG)
C) 國際快件有時還會加上燃油附加費
比如此時的燃油附加費為9%,還需要在公式(A)的結果加上:運費×9%
燃油附加費計一般會同運費一起打折

7.總費用:
總費用=(運費+燃油附加費)×折扣+包裝費用+其它不確定費用

自2008年11月1日起,DHL將逐步更新對貨物體積的計算方法,努力使低密度貨物體積重量的計算方法標准化。同時,DHL快遞的「當日送達」,「限時專遞」和「限日快遞」服務的容積除數將改為5000。按下列公式計算:

長*寬*高/5000

⑷ 鐵的重量演算法

鐵板:(毫米厚)x(平方米數)x7.86=( )公斤

圓鋼:(毫米直徑)x(毫米直徑)x(圓鋼長度米)x0.006165= ( )公斤

鋼材的比重為7.86噸/立方米=7.86公斤/立方分米=7.86克/立方厘米

鐵板重量=鐵板體積乘以鐵板密度。

鐵板密度是7.86克每立方厘米。

11*100*6*100*1.2*7.86/1000=6225.12

所以你家鐵板的重量大約為6225.12千克。

鐵在生活中分布較廣,佔地殼含量的4.75%,僅次於氧、硅、鋁,位居地殼含量第四。純鐵是柔韌而延展性較好的銀白色金屬,用於制發電機和電動機的鐵芯,鐵及其化合物還用於制磁鐵、葯物、墨水、顏料、磨料等。

工業上所說的「黑色金屬」之一(另外兩種是鉻和錳)(其實純凈的生鐵是銀白色的,鐵元素被稱之為「黑色金屬」是因為鐵表面常常覆蓋著一層主要成分為黑色四氧化三鐵的保護膜)

(4)低密度演算法擴展閱讀:

用途

1.用於制葯、農葯、粉末冶金、熱氫發生器、凝膠推進劑、燃燒活性劑、催化劑、水清潔吸附劑、燒結活性劑、粉末冶金製品、各種機械零部件製品、硬質合金材料製品等。

2..純鐵用於制發電機和電動機的鐵芯,還原鐵粉用於粉末冶金,鋼鐵用於製造機器和工具。此外,鐵及其化合物還用於制磁鐵、葯物、墨水、顏料、磨料等。

3.用作還原劑。用於鐵鹽制備。還用於制備電子元器件。

4.用作營養增補劑(鐵質強化劑)。

5.在膠黏劑中用作環氧膠黏劑的填料,配製鑄件修補膠。常作為還原劑使用。在電子工業、粉末冶金、機械工業中具有廣泛的用途。FHY80.23主要用於含油軸承。FHY100.25主要用於中、低密度的機械零件。HFY100.27主要用於高密度的機械零件。

⑸ 八:聚類演算法K-means(20191223-29)

學習內容:無監督聚類演算法K-Means

k-means:模型原理、收斂過程、超參數的選擇

聚類分析是在數據中發現數據對象之間的關系,將數據進行分組,組內的相似性越大,組間的差別越大,則聚類效果越好。

不同的簇類型: 聚類旨在發現有用的對象簇,在現實中我們用到很多的簇的類型,使用不同的簇類型劃分數據的結果是不同的。

基於原型的: 簇是對象的集合,其中每個對象到定義該簇的 原型 的距離比其他簇的原型距離更近,如(b)所示的原型即為中心點,在一個簇中的數據到其中心點比到另一個簇的中心點更近。這是一種常見的 基於中心的簇 ,最常用的K-Means就是這樣的一種簇類型。 這樣的簇趨向於球形。

基於密度的 :簇是對象的密度區域,(d)所示的是基於密度的簇,當簇不規則或相互盤繞,並且有早上和離群點事,常常使用基於密度的簇定義。

關於更多的簇介紹參考《數據挖掘導論》。

基本的聚類分析演算法

     1. K均值: 基於原型的、劃分的距離技術,它試圖發現用戶指定個數(K)的簇。

     2. 凝聚的層次距離: 思想是開始時,每個點都作為一個單點簇,然後,重復的合並兩個最靠近的簇,直到嘗試單個、包含所有點的簇。

     3. DBSCAN: 一種基於密度的劃分距離的演算法,簇的個數有演算法自動的確定,低密度中的點被視為雜訊而忽略,因此其不產生完全聚類。

不同的距離量度會對距離的結果產生影響,常見的距離量度如下所示:

優點:易於實現 

缺點:可能收斂於局部最小值,在大規模數據收斂慢

演算法思想:

選擇K個點作為初始質心 

repeat

    將每個點指派到最近的質心,形成K個簇 

    重新計算每個簇的質心  

until 簇不發生變化或達到最大迭代次數

這里的「重新計算每個簇的質心」,是根據目標函數來計算的,因此在開始時要考慮 距離度量和目標函數。

考慮歐幾里得距離的數據,使用 誤差平方和(Sum of the Squared Error,SSE) 作為聚類的目標函數,兩次運行K均值產生的兩個不同的簇集,使用SSE最小的那個。

k表示k個聚類中心,ci表示第幾個中心,dist表示的是歐幾里得距離。 

這里有一個問題就是為什麼,我們更新質心是讓所有的點的平均值,這里就是SSE所決定的。

k均值演算法非常簡單且使用廣泛,但是其有主要的兩個缺陷:

1. K值需要預先給定 ,屬於預先知識,很多情況下K值的估計是非常困難的,對於像計算全部微信用戶的交往圈這樣的場景就完全的沒辦法用K-Means進行。對於可以確定K值不會太大但不明確精確的K值的場景,可以進行迭代運算,然後找出Cost Function最小時所對應的K值,這個值往往能較好的描述有多少個簇類。

2. K-Means演算法對初始選取的聚類中心點是敏感的 ,不同的隨機種子點得到的聚類結果完全不同

3. K均值演算法並不是很所有的數據類型。 它不能處理非球形簇、不同尺寸和不同密度的簇,銀冠指定足夠大的簇的個數是他通常可以發現純子簇。

4. 對離群點的數據進行聚類時,K均值也有問題 ,這種情況下,離群點檢測和刪除有很大的幫助。

下面對初始質心的選擇進行討論:

當初始質心是隨機的進行初始化的時候,K均值的每次運行將會產生不同的SSE,而且隨機的選擇初始質心結果可能很糟糕,可能只能得到局部的最優解,而無法得到全局的最優解。

多次運行,每次使用一組不同的隨機初始質心,然後選擇一個具有最小的SSE的簇集。該策略非常的簡單,但是效果可能不是很好,這取決於數據集合尋找的簇的個數。

關於更多,參考《數據挖掘導論》

為了克服K-Means演算法收斂於局部最小值的問題,提出了一種 二分K-均值(bisecting K-means)

將所有的點看成是一個簇

當簇小於數目k時

    對於每一個簇

        計算總誤差

        在給定的簇上進行K-均值聚類,k值為2        計算將該簇劃分成兩個簇後總誤差

    選擇是的誤差最小的那個簇進行劃分

在原始的K-means演算法中,每一次的劃分所有的樣本都要參與運算,如果數據量非常大的話,這個時間是非常高的,因此有了一種分批處理的改進演算法。

使用Mini Batch(分批處理)的方法對數據點之間的距離進行計算。

Mini Batch的好處:不必使用所有的數據樣本,而是從不同類別的樣本中抽取一部分樣本來代表各自類型進行計算。n 由於計算樣本量少,所以會相應的減少運行時間n 但另一方面抽樣也必然會帶來准確度的下降。

聚類試圖將數據集中的樣本劃分為若干個通常是不相交的子集,每個子集成為一個「簇」。通過這樣的劃分,每個簇可能對應於一些潛在的概念(也就是類別);需說明的是,這些概念對聚類演算法而言事先是未知的,聚類過程僅能自動形成簇結構,簇對應的概念語義由使用者來把握和命名。

聚類是無監督的學習演算法,分類是有監督的學習演算法。所謂有監督就是有已知標簽的訓練集(也就是說提前知道訓練集里的數據屬於哪個類別),機器學習演算法在訓練集上學習到相應的參數,構建模型,然後應用到測試集上。而聚類演算法是沒有標簽的,聚類的時候,需要實現的目標只是把相似的東西聚到一起。

聚類的目的是把相似的樣本聚到一起,而將不相似的樣本分開,類似於「物以類聚」,很直觀的想法是同一個簇中的相似度要盡可能高,而簇與簇之間的相似度要盡可能的低。

性能度量大概可分為兩類: 一是外部指標, 二是內部指標 。

外部指標:將聚類結果和某個「參考模型」進行比較。

內部指標:不利用任何參考模型,直接考察聚類結果。

對於給定的樣本集,按照樣本之間的距離大小,將樣本集劃分為K個簇。讓簇內的點盡量緊密的連在一起,而讓簇間的距離盡量的大

初學者會很容易就把K-Means和KNN搞混,其實兩者的差別還是很大的。

K-Means是無監督學習的聚類演算法,沒有樣本輸出;而KNN是監督學習的分類演算法,有對應的類別輸出。KNN基本不需要訓練,對測試集裡面的點,只需要找到在訓練集中最近的k個點,用這最近的k個點的類別來決定測試點的類別。而K-Means則有明顯的訓練過程,找到k個類別的最佳質心,從而決定樣本的簇類別。

當然,兩者也有一些相似點,兩個演算法都包含一個過程,即找出和某一個點最近的點。兩者都利用了最近鄰(nearest neighbors)的思想。

優點:

簡單, 易於理解和實現 ;收斂快,一般僅需5-10次迭代即可,高效

缺點:

    1,對K值得選取把握不同對結果有很大的不同

    2,對於初始點的選取敏感,不同的隨機初始點得到的聚類結果可能完全不同

    3,對於不是凸的數據集比較難收斂

    4,對噪點過於敏感,因為演算法是根據基於均值的

    5,結果不一定是全局最優,只能保證局部最優

    6,對球形簇的分組效果較好,對非球型簇、不同尺寸、不同密度的簇分組效果不好。

K-means演算法簡單理解,易於實現(局部最優),卻會有對初始點、雜訊點敏感等問題;還容易和監督學習的分類演算法KNN混淆。

參考閱讀:

1.《 深入理解K-Means聚類演算法 》

2.《 K-Means 》

熱點內容
荒島求生安卓怎麼下載 發布:2025-01-25 09:09:31 瀏覽:209
java中io流 發布:2025-01-25 09:02:54 瀏覽:878
華為高斯資料庫 發布:2025-01-25 08:55:38 瀏覽:30
php是動態語言 發布:2025-01-25 08:45:44 瀏覽:67
伺服器關閉了電腦網路還能用 發布:2025-01-25 08:22:28 瀏覽:587
熱血航線的登錄密碼在哪裡可以看 發布:2025-01-25 08:22:27 瀏覽:769
5系怎麼選擇配置 發布:2025-01-25 08:22:18 瀏覽:842
pythonscipy 發布:2025-01-25 08:18:52 瀏覽:419
恕瑞瑪伺服器地址 發布:2025-01-25 08:18:51 瀏覽:801
oa源碼php 發布:2025-01-25 08:11:31 瀏覽:735