提高機器學習算力
1. 機器學習模型的泛化能力不足,有什麼改進思路
首先你要知道為什麼自己模型的泛化能力不足,一般來說有兩個方面吧:
1:在訓練集上效果不錯,然後在測試集上發現效果不好,這種很大的情況是過擬合問題,也就是說你的模型過多的去擬合訓練集去了,利用一些正則化思想可以比較好的解決這些問題。
2:在訓練集上效果不行,在測試集上效果更差。這時候你要考慮的是你選擇的機器學習演算法到底有沒有用,你選取的特徵到底有沒有用,換個演算法,換個特徵,也許才能提高。
2. 為何說人工智慧的發展得益於計算能力的高速增長
據報道,2017英特爾中國行業峰會昨日在蘇州舉行,會上,國際知名AI專家及技術創新企業家傑瑞·卡普蘭博士發表了演講,闡述了人工智慧的發展,以及人工智慧如何引領產業變革。
機器學習的興起,與當下的計算機的計算能力高速增長是分不開的,在過去的30年裡,計算機的速度翻了100萬倍。如果將30年前的計算機速度比做蝸牛,那麼現在就像是「火箭」的速度。
當計算機的速度越來越快,數據量大了之後,機器學習就成為了更好的匹配,尤其是我們即將進入到5G時代,這更加推動了演繹與推理、感知與真實世界互動,未來我們可以造出全新靈活的機器人,有很強的感知能力。
希望人工智慧技術可以取得更大的發展!
3. 機器學習,深度學習等人工智慧技術在工業界的應用狀況是怎樣的
你可以這樣理解,人工智慧是一個嬰兒的大腦,而深度學習就是讓這個嬰兒的大腦又能力看世界、聽世界、感受世界。直觀的說,深度學習只是服務於人工智慧一個工具(也許若干年後,一種全新的工具可以代替深度學習實現人工智慧),把這個工具用在語音識別領域,就能讓機器更會聽;把他用在了計算機視覺領域,就能讓機器更會看。
深度學習的本質就是各種神經網路,從最早最簡單的感知機,再到多層神經網路,再到現在很火的CNN、RNN,其目的都是構建一個合適的神經網路結構,讓機器有能力「自己思考」——我們也稱之為「智能」。
關於機器學習,它是比深度學習更為廣泛的概念,發展的也比較早。在人工智慧屆有一種說法:認為機器學習是人工智慧領域中最能夠體現智能的一個分支。從歷史上看,機器學習似乎也是人工智慧中發展最快的分支之一。機器學習發展早期,限於計算機計算能力、樣本量等因素,很多演算法無法實現。而近些年來,計算機的計算能力和存儲能力都有了很大的提高,數據發掘引領了大數據時代的到來,使得原來復雜度很高的演算法能夠實現,得到的結果也更為精細。理論上,只要計算機計算能力足夠強、樣本數據量足夠大,就可以不斷增加神經網路的層數以及改變神經網路的結構,這就是「深度學習」,在理論和技術上,並沒有太多的創新。只是深度學習代表了機器學習的新方向,同時也推動了機器學習的發展。
4. 如何提高機器學習結果
有一個或兩個演算法在問題上執行得相當好是一個好的開始,但有時候可能會激勵您獲得最佳結果,您可以獲得可用的時間和資源。
在這篇文章中,您將回顧可用於擠出額外性能的方法,並改進從機器學習演算法中獲得的結果。
在調整演算法時,您必須對測試工具提供的結果具有較高的置信度。 這意味著您應該使用減少用於評估演算法運行的性能度量的方差的技術。 我建議交叉驗證的折疊數量相當高(確切數量取決於您的數據集)。
你將在這篇文章中學到的三種策略是:
演算法調優
合奏
極限特徵工程
演算法調優
開始的地方是從你已經知道的演算法中獲得更好的結果,在你的問題上表現良好。您可以通過探索和微調這些演算法的配置來做到這一點。
機器學習演算法是參數化的,修改這些參數會影響學習過程的結果。將每個演算法參數視為圖上的一個維度,並將給定參數的值作為軸上的一個點。三個參數將是該演算法的可能配置的立方體,並且n參數將是該演算法的可能配置的n維超立方體。
演算法調優的目標是為您的問題找到該超立方體中的最佳點或多個點。您將針對您的測試工具進行優化,因此您再也不能低估花時間構建可信測試工具的重要性。
您可以通過使用自動方法來處理此搜索問題,這些方法會在可能性空間中強加一個網格,並在可能的優化演算法配置中進行采樣。然後,您可以在優化演算法中使用這些點來放大最佳性能。
您可以使用許多性能良好的方法重復此過程,並探索每個方法可以實現的最佳效果。我強烈建議這個過程是自動化的,並且是合理的粗粒度,因為您可以快速達到可能無法轉化為生產系統的收益遞減點(分數百分比性能提升)。
演算法參數越調整,演算法對訓練數據和測試工具的偏見就越大。這種策略可能是有效的,但它也可能導致更脆弱的模型過度使用測試工具,並且在實踐中表現不佳。
合奏
集合方法關注於結合多種方法的結果以獲得改進的結果。當您有多個專門針對問題的不同部分的「足夠好」模型時,集成方法可以很好地工作。
這可以通過許多方式來實現。您可以探索的三種整體策略是:
Bagging:更加正式地稱為Bootstrapped Aggregation,即通過訓練不同的訓練數據子集,相同的演算法對問題有不同的觀點。
提升:不同的演算法在相同的訓練數據上訓練。
混合:更為正式地稱為堆積聚合或堆疊,其中多種模型的預測被作為輸入到新模型中,以學習如何將預測結合到總體預測中。
在用完更傳統的方法後,進入整體方法是一個好主意。這有兩個很好的理由,它們通常比傳統方法更復雜,傳統方法為您提供了一個良好的基礎級別,您可以從中改進和創建您的合奏。
5. 機器學習能否提高數據中心效率
機器學習這個肯定不會提高中心效率,因為這樣的話還是需要去看自己的自製能力的。
6. 如何提高機器學習中的分類准確率
造成效果不好的原因可以有: 語料質量不好 特徵詞選取不好 特徵維度不夠 特徵權重不夠好 選擇的演算法學習能力弱 模型欠擬合 以上都不是,看看數據格式是不是有問題,排除不是低級錯誤導致的效果差 等等
7. 機器學習難嗎
1、機器學習是一種實現人工智慧的方法,深度學習是一種實現機器學習的技術。 2、深度學習本來並不是一種獨立的學習方法,其本身也會用到有監督和無監督的學習方法來訓練深度神經網路。但由於近幾年該領域發展迅猛,一些特有的學習手段相繼被提出(如殘差網路),因此越來越多的人將其單獨看作一種學習的方法。 3、機器學習最基本的做法,是使用演算法來解析數據、從中學習,然後對真實世界中的事件做出決策和預測。與傳統的為解決特定任務、硬編碼的軟體程序不同,機器學習是用大量的數據來「訓練」,通過各種演算法從數據中學習如何完成任務。 拓展資料: 1、機器學習直接來源於早期的人工智慧領域,傳統的演算法包括決策樹、聚類、貝葉斯分類、支持向量機、EM、Adaboost等等。從學習方法上來分,機器學習演算法可以分為監督學習(如分類問題)、無監督學習(如聚類問題)、半監督學習、集成學習、深度學習和強化學習。傳統的機器學習演算法在指紋識別、基於Haar的人臉檢測、基於HoG特徵的物體檢測等領域的應用基本達到了商業化的要求或者特定場景的商業化水平,但每前進一步都異常艱難,直到深度學習演算法的出現。 2、最初的深度學習是利用深度神經網路來解決特徵表達的一種學習過程。深度神經網路本身並不是一個全新的概念,可大致理解為包含多個隱含層的神經網路結構。為了提高深層神經網路的訓練效果,人們對神經元的連接方法和激活函數等方面做出相應的調整。其實有不少想法早年間也曾有過,但由於當時訓練數據量不足、計算能力落後,因此最終的效果不盡如人意。深度學習摧枯拉朽般地實現了各種任務,使得似乎所有的機器輔助功能都變為可能。無人駕駛汽車,預防性醫療保健,甚至是更好的電影推薦,都近在眼前,或者即將實現
8. 機器學習難嗎
好吧,我標題黨了,sklearn的簡單也是相對於機器學習原理本身,要學好也不容易!
人工智慧、機器學習,一聽就是高大上的東西,想學會肯定很難。這是當然的,要理解機器學習中的各種演算法模型,還是需要較強的數學功底的,這無形中提高了機器學習的門檻。但是只是要用它,卻並不困難,scikit-learn的出現給程序員帶來了福音,極大的降低了機器學習使用的門檻,即使你不求甚解,也能純熟的使用各種機器學習的演算法來完成自己的目
9. 如何提高機器學習演算法的召回率
最近在做文本分類,遇到了一些問題,想問問大家有沒有好的方法。為了節省時間,我只採取了部分數據來跑演算法(全部數據跑了之後的結果和這個差不多)
訓練集:4837 documents
測試集:2074 documents
樣本比例:正樣本:負樣本 = 1:3
預測結果中,有的演算法在正樣本中預測的精確率還行(0.95-1.00之間),但是召回率非常差,通常只有0.01和0.02左右,KNeighbors和DecisionTree的精確率和召回率都是0,只有NaiveBayes和BernoulliNB的PR和Recall比較平均,但是也沒有到0.8。
問題:我查了一下那些召回率較低(0.01)的演算法,475個樣本中(正樣本),實際上只有5個被預測正確了的,但是具體原因沒有查出來。
我想請問一下:1.召回率低是因為樣本極度不平衡造成的嗎?(雖然我認為1:3的比例不算極度不平衡。)2.在這種樣本不平衡的問題上,有沒有什麼好的方法可以提高召回率?我試過SMOTE方法(過采樣和欠采樣都有試過),但對於我的數據集並沒有什麼好的效果,不止到有沒有有什麼好的方法可以解決這個問題?謝謝!
添加評論
分享
查看全部 11 個回答
0贊同反對,不會顯示你的姓名
Elvin 全是細枝末節,做一個樂於分享的人
兩個問題一並回答一下,根據你的描述,我覺得問題應該不是出在正負樣本比上,1比3這個比例不但不是非常不均衡,相反在我看來已經是非常均衡了。以前做比賽有處理過正負比1比10000的數據,我覺得這才叫不平衡,才需要使用類似上采樣,下采樣,以及SMOTE演算法(都用過),而且這樣的情況下recall,F1等指標的提升是顯著的。我覺得正負比例在1:1至1:100間差別都不會太大,需要根據具體問題做離線交叉驗證去找到最好的比例。
所以我建議你不用再糾結正負樣本比的問題,可以再回頭看一看你的數據集,一方面看一看代碼是否有誤?數據集是否太小?(總覺得你的數據集太小,而且測試集相對於訓練集太大)另外訓練集,測試集的劃分是否正確?或者重新劃分一下訓練測試集做一下交叉驗證看一看各項指標再具體研究。