機器學習常用六大演算法

2021-10-02 08:28:55 字數 1915 閱讀 1924

機器學習是人工智慧行業的乙個創新且重要的領域。我們為機器學習程式選擇的演算法型別,取決於我們想要實現的目標。現在,機器學習有很多演算法。可能對於初學者來說,這是相當不堪重負的。此前,educative.io 聯合創始人法希姆烏爾哈克(fahim ul haq)發文簡要介紹了幾種流行的機器學習演算法,幫助初學者進入機器學習的世界。

1. 線性回歸

線性回歸(linear regression)可能是最流行的機器學習演算法。線性回歸就是要找一條直線,並且讓這條直線盡可能地擬合散點圖中的資料點。它試圖通過將直線方程與該資料擬合來表示自變數(x 值)和數值結果(y 值)。然後就可以用這條線來**未來的值。

這種演算法最常用的技術是最小二乘法(least of squares)。這個方法計算出最佳擬合線,以使得與直線上每個資料點的垂直距離最小,總距離是所有資料點的垂直距離的平方和。其思想是通過最小化這個平方誤差或距離來擬合模型。

2. 邏輯回歸

邏輯回歸(logistic regression)與線性回歸類似,但它是用於輸出為二進位制的情況(即,當結果只能有兩個可能的值)。對最終輸出的**是乙個非線性的 s 型函式(稱為 logistic function, g())。

這個邏輯函式將中間結果值對映到結果變數 y,其值範圍從 0 到 1。然後,這些值可以解釋為 y 出現的概率。s 型邏輯函式的性質使得邏輯回歸更適合用於分類任務。

3. 決策樹

決策樹(decision trees)可用於回歸和分類任務。在這一演算法中,訓練模型通過學習樹表示(tree representation)的決策規則來學習**目標變數的值。樹是由具有相應屬性的節點組成的。

在每個節點上,人們根據可用的特徵詢問有關資料的問題。左右分支代表可能的答案,最終節點(即葉節點)對應於乙個**值。每個特徵的重要性是通過自頂向下方法確定的。節點越高,其屬性就越重要。

4. 支援向量機(svm)

支援向量機(support vector machine)是一種用於分類問題的監督演算法。支援向量機試圖在資料點之間繪製兩條線,它們之間的邊距最大。為此,要將資料項繪製為 n 維空間中的點,其中,n 是輸入特徵的數量。在此基礎上,支援向量機找到乙個最優邊界,稱為超平面(hyperplane),它通過類標籤將可能的輸出進行最佳分離。

超平面與最近的類點之間的距離稱為邊距。最優超平面具有最大的邊界,可以對點進行分類,從而使最近的資料點與這兩個類之間的距離最大化。

5. k- 均值

k- 均值(k-means)是通過對資料集進行分類來聚類的。例如,這個演算法可用於根據購買歷史將使用者分組。它在資料集中找到 k 個聚類。k- 均值用於無監督學習,因此,你只需使用訓練資料 x,以及你想要識別的聚類數量 k。

該演算法根據每個資料點的特徵,將每個資料點迭代地分配給 k 個組中的乙個組。它為每個 k- 聚類選擇 k 個點。 k- 聚類又稱為質心,基於相似度,將新的資料點新增到具有最近質心的聚類中,這個過程一直持續到質心停止變化為止。

6. 降維

隨著人們捕獲的資料量越來越大,機器學習問題也變得更加複雜。這就意味著訓練極其緩慢,而且很難找到乙個好的解決方案。這一問題,通常被稱為「維數災難」(curse of dimensionality)。

降維(dimensionality reduction)試圖在不丟失最重要資訊的情況下,通過將特定的特徵組合成更高層次的特徵來解決這個問題。主成分分析(principal component analysis,pca)是最流行的降維技術。

主成分分析通過將資料集壓縮到低維線或超平面 / 子空間來降低資料集的維數。這盡可能地保留了原始資料的顯著特徵。

以上就是當下流行的幾種機器學習演算法,除此以外,還有樸素貝葉斯、k- 最近鄰演算法(knn)、 隨機森林、人工神經網路(ann)等也是有名的機器學習演算法。

機器學習常見的六大錯誤

現乙個key value的資料庫,那麼有很多種模式都可以實現,但是他們最終所達到的效果卻是千差萬別的。同樣,在機器學習領域,如果我想實現乙個分類器,也有很多種演算法,但是每種演算法都對資料做了不同的前提假設。曾經當我們處理少量資料的時候,我們往往可以先設計若干種演算法,然後每種都測試一下,選擇一種最...

機器學習常見的六大錯誤

現乙個key value的資料庫,那麼有很多種模式都可以實現,但是他們最終所達到的效果卻是千差萬別的。同樣,在機器學習領域,如果我想實現乙個分類器,也有很多種演算法,但是每種演算法都對資料做了不同的前提假設。曾經當我們處理少量資料的時候,我們往往可以先設計若干種演算法,然後每種都測試一下,選擇一種最...

Golang實現常用六大排序演算法

使用golang實現了以下排序演算法 package main import fmt math rand sort time const num 10000 測試陣列的長度 rangenum 100000 陣列元素大小範圍 func main 生成隨機數組 func generaterand int...