當前位置:首頁 » 操作系統 » 演算法怎麼選

演算法怎麼選

發布時間: 2022-06-02 14:51:17

A. 在實際編程中,如何選擇一種合適的演算法

這個要具體情況具體分析, 現實開發中, 尤其是在高級語言里, 通常不會遇到這種選擇困難, 因為有介面這種東西, 使得很多不同的結構可以使用同一種演算法

而具體的演算法, 因為數據本身的形態不同, 同一個演算法也會產生不同的性能, 關於這點一是靠對演算法本身的認識, 二就是靠經驗了

B. 演算法工程師如何選擇適合自己的方向

目前投了的有TX(offer) 海康威視(offer sp) DJI(offer sp) 頭條(掛) 阿里(ssp) MSRA(等消息,但hr透露不樂觀)我就介紹下我自己的一些感受,可能不一定對,但也許會幫到大家。我覺得一定要做演算法的話一定要明確下面幾點:

1. 不要一直盯著互聯網公司,很多硬體公司也需要演算法,而且是剛需。
2. 千萬不要認為視覺演算法就不用刷題了,這種必跪(我頭條就沒刷,就是例子)
3. 不是說搞dl的就不用管頻域那些傳統方法了。就比如我不止一次被問到canny演算法的具體實現方法(我還是做3D的)。 我感覺可能是真正落地的時候不可能讓你直接dl end2end的。dl只會是一個pipeline的核心的小部件,剩下的還是需要人為先驗更強的傳統方法的。
4. 最好能對一些論文里或者實驗中反直覺的方法有一些深刻的理解,最好能直接到硬體層面。舉個例子 mobilenet v2明明flops比 resnet18低那麼多,為啥電腦跑起來不會更快?又為啥放移動端就會快很多?
5. 我覺得比起論文,面試官更喜歡在知名排行榜上有個好名次的方法。
6. 實習真的很重要,尤其是大廠實習(比如阿裡面試官就說,他能撈我簡歷看上的根本不是啥paper啥排行榜。。人家是覺得MSRA培養的方法論很好。。)
7. 大家現在很多都過了那種刷論文,刷排行榜的階段了,都講落地。這意味著你要是不懂輕量級網路,剪枝蒸餾演算法的sota,你會很吃虧。同時,如果你有嵌入式經驗和cuda經驗,你會很加分。
8. 拉寬知識面。。沒事就去讀讀別的方向的paper總會有好處。
最後無論從事開發崗,還是在演算法領域,知識的更替速度快,不持續學習跟進前沿技術,就會被淘汰。演算法工程師本質上也是工程師,不要因為你是演算法而有所謂的優越感,數學模型技能只是一方面,沒有扎實的工程能力,也走不遠。尤其是AI近幾年的火爆,演算法的門檻也變低,造成越來越多的人湧入演算法崗。等到AI退潮之後,你扎實的基礎工程能力和業務能力才是生存下來的必要條件吧。

C. 機器學習中,怎樣分析數據結構來選擇演算法

在模型選擇方面,本身來說,個人覺得並沒有一種很確定的指導方式,更多的是從你數據的應用角度去考慮問題,然後才是你對數據的理解。

應用角度的問題就是你對模型的要求,如果你的要求是模型盡量是可解釋的,那麼選擇估計就只有決策樹,邏輯回歸等等這種簡單的模型。
數據的角度:這個角度其實更多的是從獲取某種先驗知識或者基於某種假設等等,然後你去選擇模型;
比如我有一個數據,我知道y-x>0則為1類,y-x<0則為0類別,這個是假設我知道的情況下,你會怎麼取選擇分類器呢,很明顯,直接用線性回歸就應該做的不錯,或許和你之後的會有點小偏差,但是就是應該不錯,那麼此時你會發現SVM的線性核應該可以是可以的,你的思路就會發現,其實基本上所有的線性分類器在這樣的數據集合上都應該不錯的;
然而你考慮一下Decision Tree,你會發現他做的不是很好,但是最差最差也能夠得到75%(假設我就分一次,x>0和x<0),這個時候你怎麼評估這個問題的好與壞呢,如果是賭場,這個效果是很好了,但是如果是指紋的識別,這個就不好了;再深入的考慮下去,你可能會否定Decision Tree,但是,其實這個問題,如果是用 Random Forest去做,他又會做的很好,因為在不斷的選取數據中,他會不斷的得到新的劃分點。
你也可以從wikipedia(Random forest)的介紹中感覺到,RF是可以做好的,因為他相當於是帶權的KNN;
所以我覺得在實際應用中,從簡單模型開始嘗試,或許會有新的對數據的認識,從而使你得到一些沒有的信息,如上述的問題中,你從linear regression就很容易發現這個效果,但是你如果一來就是NN或者SVM,或許你就發現不了這種關系了;
當然,如果你是為了快速的做出一個好的結果,那一來就嘗試復雜模型總會是稍微好點的,理由也是很簡單的,因為復雜模型的VC維比較高,當然就能解決更多的問題。

D. WAP演算法該選什麼

LINKSYS WRT54G 2種演算法都支持,隨便選一種就可以了.只要網卡也支持就行

TKIP:

在IEEE 802.11i規范中,TKIP: Temporal Key Integrity Protocol(暫時密鑰集成協議)負責處理無線安全問題的加密部分。TKIP在設計時考慮了當時非常苛刻的限制因素:必須在現有硬體上運行,因此不能使用計算先進的加密演算法。

TKIP是包裹在已有WEP密碼外圍的一層「外殼」。TKIP由WEP使用的同樣的加密引擎和RC4演算法組成。不過,TKIP中密碼使用的密鑰長度為128位。這解決了WEP的第一個問題:過短的密鑰長度。

TKIP的一個重要特性,是它變化每個數據包所使用的密鑰。這就是它名稱中「動態」的出處。密鑰通過將多種因素混合在一起生成,包括基本密鑰(即TKIP中所謂的成對瞬時密鑰)、發射站的MAC地址以及數據包的序列號。混合操作在設計上將對無線站和接入點的要求減少到最低程度,但仍具有足夠的密碼強度,使它不能被輕易破譯。

利用TKIP傳送的每一個數據包都具有獨有的48位序列號,這個序列號在每次傳送新數據包時遞增,並被用作初始化向量和密鑰的一部分。將序列號加到密鑰中,確保了每個數據包使用不同的密鑰。這解決了WEP的另一個問題,即所謂的「碰撞攻擊」。這種攻擊發生在兩個不同數據包使用同樣的密鑰時。在使用不同的密鑰時,不會出現碰撞。

以數據包序列號作為初始化向量,還解決了另一個WEP問題,即所謂的「重放攻擊(replay attacks)」。由於48位序列號需要數千年時間才會出現重復,因此沒有人可以重放來自無線連接的老數據包:由於序列號不正確,這些數據包將作為失序包被檢測出來。

被混合到TKIP密鑰中的最重要因素是基本密鑰。如果沒有一種生成獨特的基本密鑰的方法,TKIP盡管可以解決許多WEP存在的問題,但卻不能解決最糟糕的問題:所有人都在無線區域網上不斷重復使用一個眾所周知的密鑰。為了解決這個問題,TKIP生成混合到每個包密鑰中的基本密鑰。無線站每次與接入點建立聯系時,就生成一個新基本密鑰。這個基本密鑰通過將特定的會話內容與用接入點和無線站生成的一些隨機數以及接入點和無線站的MAC地址進行散列處理來產生。由於採用802.1x認證,這個會話內容是特定的,而且由認證伺服器安全地傳送給無線站。

AES
對稱密碼體制的發展趨勢將以分組密碼為重點。分組密碼演算法通常由密鑰擴展演算法和加密(解密)演算法兩部分組成。密鑰擴展演算法將b位元組用戶主密鑰擴展成r個子密鑰。加密演算法由一個密碼學上的弱函數f與r個子密鑰迭代r次組成。混亂和密鑰擴散是分組密碼演算法設計的基本原則。抵禦已知明文的差分和線性攻擊,可變長密鑰和分組是該體制的設計要點。

AES是美國國家標准技術研究所NIST旨在取代DES的21世紀的加密標准。

AES的基本要求是,採用對稱分組密碼體制,密鑰長度的最少支持為128、192、256,分組長度128位,演算法應易於各種硬體和軟體實現。1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選演算法。1999年3月完成了第二輪AES2的分析、測試。預計在2000年8月AES的最終結果將公布。

在應用方面,盡管DES在安全上是脆弱的,但由於快速DES晶元的大量生產,使得DES仍能暫時繼續使用,為提高安全強度,通常使用獨立密鑰的三級DES。但是DES遲早要被AES代替。流密碼體制較之分組密碼在理論上成熟且安全,但未被列入下一代加密標准。

我也講不清楚選哪個好了~

E. 作業調度演算法的選擇原則有哪幾個

批處理作業的調度演算法主要有以下幾種:
①先來先服務演算法。原則上按照作業進入輸入井的次序調度,如果作業的資源得不到滿足,將會推遲調度,它的資源得到滿足的時候會優先被調度進來。
優點:具有一定的公平性。
缺點:系統的吞吐率低,平均周轉時間長,有大作業到來的時,許多小作業推遲調度。
②計算時間短的作業優先.優先調度計算時間短的作業進行調度,資源不滿足的情況下推遲調度。在這種調度演算法下,要求用戶要對作業的計算時間預先有一個估計,調度以此為依據。
優點:由於被選中的作業計算時間,所以不能盡快地完成並退出系統,降低了作業的平均等待時間,提高了系統的吞吐率。
缺點:大作業會不滿意,而且極限情況下使得某些大作業始終得不到調度。
③響應比高者優先演算法。該演算法考慮了計算時間等待時間,既考慮了計算時間短的作業優先,又考慮了大作業長期等待的問題。所謂響應比是按照以下公式來定義的:
響應比R=等待時間/計算時間
這里的計算時間是估計的作業計算時間,從公式看,計算時間越短,響應比越高;而另一方面,大作業等待時間越長,響應比也會越大。一個作業完成以後,需要重新計算一下在輸入井中的各個作業的響應比,最高的將優先調度。
④優先數調度演算法。為每一個作業指定一個優先數,優先數高的作業先被調度。對於優先數相等的作業採用先來先服務的策略。優先數的制定原則是:作業的緩急程序,估計的計算時間,作業的等待時間,資源申請情況等因素綜合考慮。
⑤均衡調度演算法。使用不同資源的進程同時執行,減少作業等待同類設備而耗費的時間,加快作業的執行。

F. 如何正確選擇聚類演算法

作者 | Josh Thompson

來源 | 數據派THU

Choosing the Right Clustering Algorithm for your Dataset - KDnuggets

聚類演算法十分容易上手,但是選擇恰當的聚類演算法並不是一件容易的事。

數據聚類是搭建一個正確數據模型的重要步驟。數據分析應當根據數據的共同點整理信息。然而主要問題是,什麼通用性參數可以給出最佳結果,以及什麼才能稱為「最佳」。

本文適用於菜鳥數據科學家或想提升聚類演算法能力的專家。下文包括最廣泛使用的聚類演算法及其概況。根據每種方法的特殊性,本文針對其應用提出了建議。

四種基本演算法以及如何選擇

聚類模型可以分為四種常見的演算法類別。盡管零零散散的聚類演算法不少於100種,但是其中大部分的流行程度以及應用領域相對有限。

基於整個數據集對象間距離計算的聚類方法,稱為基於連通性的聚類(connectivity-based)或層次聚類。根據演算法的「方向」,它可以組合或反過來分解信息——聚集和分解的名稱正是源於這種方向的區別。最流行和合理的類型是聚集型,你可以從輸入所有數據開始,然後將這些數據點組合成越來越大的簇,直到達到極限。

層次聚類的一個典型案例是植物的分類。數據集的「樹」從具體物種開始,以一些植物王國結束,每個植物王國都由更小的簇組成(門、類、階等)。

層次聚類演算法將返回樹狀圖數據,該樹狀圖展示了信息的結構,而不是集群上的具體分類。這樣的特點既有好處,也有一些問題:演算法會變得很復雜,且不適用於幾乎沒有層次的數據集。這種演算法的性能也較差:由於存在大量的迭代,因此整個處理過程浪費了很多不必要的時間。最重要的是,這種分層演算法並不能得到精確的結構。

同時,從預設的類別一直分解到所有的數據點,類別的個數不會對最終結果產生實質性影響,也不會影響預設的距離度量,該距離度量粗略測量和近似估計得到的。

根據我的經驗,由於簡單易操作,基於質心的聚類(Centroid-based)是最常出現的模型。 該模型旨在將數據集的每個對象劃分為特定的類別。 簇數(k)是隨機選擇的,這可能是該方法的最大問題。 由於與k最近鄰居(kNN)相似,該k均值演算法在機器學習中特別受歡迎。

計算過程包括多個步驟。首先,輸入數據集的目標類別數。聚類的中心應當盡可能分散,這有助於提高結果的准確性。

其次,該演算法找到數據集的每個對象與每個聚類中心之間的距離。最小坐標距離(若使用圖形表示)確定了將對象移動到哪個群集。

之後,將根據類別中所有點的坐標平均值重新計算聚類的中心。重復演算法的上一步,但是計算中要使用簇的新中心點。除非達到某些條件,否則此類迭代將繼續。例如,當簇的中心距上次迭代沒有移動或移動不明顯時,聚類將結束。

盡管數學和代碼都很簡單,但k均值仍有一些缺點,因此我們無法在所有情景中使用它。缺點包括:

因為優先順序設置在集群的中心,而不是邊界,所以每個集群的邊界容易被疏忽。 無法創建數據集結構,其對象可以按等量的方式分類到多個群集中。 需要猜測最佳類別數(k),或者需要進行初步計算以指定此量規。

相比之下,期望最大化演算法可以避免那些復雜情況,同時提供更高的准確性。簡而言之,它計算每個數據集點與我們指定的所有聚類的關聯概率。用於該聚類模型的主要工具是高斯混合模型(GMM)–假設數據集的點服從高斯分布。

k-means演算法可以算是EM原理的簡化版本。它們都需要手動輸入簇數,這是此類方法要面對的主要問題。除此之外,計算原理(對於GMM或k均值)很簡單:簇的近似范圍是在每次新迭代中逐漸更新的。

與基於質心的模型不同,EM演算法允許對兩個或多個聚類的點進行分類-它僅展示每個事件的可能性,你可以使用該事件進行進一步的分析。更重要的是,每個聚類的邊界組成了不同度量的橢球體。這與k均值聚類不同,k均值聚類方法用圓形表示。但是,該演算法對於不服從高斯分布的數據集根本不起作用。這也是該方法的主要缺點:它更適用於理論問題,而不是實際的測量或觀察。

最後,基於數據密度的聚類成為數據科學家心中的最愛。

這個名字已經包括了模型的要點——將數據集劃分為聚類,計數器會輸入ε參數,即「鄰居」距離。因此,如果目標點位於半徑為ε的圓(球)內,則它屬於該集群。

具有雜訊的基於密度的聚類方法(DBSCAN)將逐步檢查每個對象,將其狀態更改為「已查看」,將其劃分到具體的類別或雜訊中,直到最終處理整個數據集。用DBSCAN確定的簇可以具有任意形狀,因此非常精確。此外,該演算法無需人為地設定簇數 —— 演算法可以自動決定。

盡管如此,DBSCAN也有一些缺點。如果數據集由可變密度簇組成,則該方法的結果較差;如果對象的位置太近,並且無法輕易估算出ε參數,那麼這也不是一個很好的選擇。

總而言之,我們並不能說選擇了錯誤的演算法,只能說其中有些演算法會更適合特定的數據集結構。為了採用最佳的(看起來更恰當的)演算法,你需要全面了解它們的優缺點。

例如,如果某些演算法不符合數據集規范,則可以從一開始就將其排除在外。為避免繁瑣的工作,你可以花一些時間來記住這些信息,而無需反復試驗並從自己的錯誤中學習。

我們希望本文能幫助你在初始階段選擇最好的演算法。繼續這了不起的工作吧!

G. 學習演算法 特徵的選擇演算法有哪些

一個演算法應該具有以下五個重要的特徵:
1、有窮性: 一個演算法必須保證執行有限步之後結束;
2、確切性: 演算法的每一步驟必須有確切的定義;
3、輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況,所謂0個輸入是指演算法本身定除了初始條件;
4、輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
5、可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成

H. 初學者如何選擇合適的機器學習演算法(附演算法

如何為分類問題選擇合適的機器學習演算法 若要達到一定的准確率,需要嘗試各種各樣的分類器,並通過交叉驗證選擇最好的一個。但是,如果你只是為你的問題尋找一個「足夠好」的演算法或者一個起點,以下准則有利於選擇合適的分類器:你的訓練集有多大?如果訓練集很小,那麼高偏差/低方差分類器(如樸素貝葉斯分類器)要優於低偏差/高方差分類器(如k近鄰分類器),因為後者容易過擬合。然而,隨著訓練集的增大,低偏差/高方差分類器將開始勝出(它們具有較低的漸近誤差),因為高偏差分類器不足以提供准確的模型。這可以認為這是生成模型與判別模型的區別。一些特定演算法比較樸素貝葉斯優點:簡單;如果樸素貝葉斯(NB)條件獨立性假設成立,相比於邏輯回歸這類的判別模型,樸素貝葉斯分類器將收斂得更快,所以你只需要較小的訓練集。而且,即使NB假設不成立,樸素貝葉斯分類器在實踐方面仍然表現很好。如果想得到簡單快捷的執行效果,這將是個好的選擇。缺點:不能學習特徵之間的相互作用(比如,它不能學習出:雖然你喜歡布拉德·皮特和湯姆·克魯斯的電影,但卻不喜歡他們一起合作的電影)。邏輯回歸優點:有許多正則化模型的方法,不需要像在樸素貝葉斯分類器中那樣擔心特徵間的相互關聯性。與決策樹和支持向量機 不同,有一個很好的概率解釋,並能容易地更新模型來吸收新數據(使用一個在線梯度下降方法)。如果你想要一個概率框架(比如,簡單地調整分類閾值,說出什麼時候是不太確定的,或者獲得置信區間),或你期望未來接收更多想要快速並入模型中的訓練數據,就選擇邏輯回歸。決策樹優點:易於說明和解釋,很容易地處理特徵間的相互作用,並且是非參數化的,不用擔心異常值或者數據是否線性可分(比如,決策樹可以很容易地某特徵x的低端是類A,中間是類B,然後高端又是類A的情況)。缺點:1)不支持在線學習,當有新樣本時需要重建決策樹。2)容易過擬合,但這也正是諸如隨機森林(或提高樹)之類的集成方法的切入點。另外,隨機森林適用於很多分類問題(通常略優於支持向量機)---快速並且可擴展,不像支持向量機那樣調一堆參數。隨機森林正漸漸開始偷走它的「王冠」。 SVMs 優點:高准確率,為過擬合提供了好的理論保證;即使數據在基礎特徵空間線性不可分,只要選定一個恰當的核函數,仍然能夠取得很好的分類效果。它們在超高維空間是常態的文本分類問題中尤其受歡迎。然而,它們內存消耗大,難於解釋,運行和調參 復雜,盡管如此,更好的數據往往勝過更好的演算法,設計好的特徵非常重要。如果有一個龐大數據集,這時使用哪種分類演算法在分類性能方面可能並不要緊;因此,要基於速度和易用性選擇演算法。

I. 試述排序演算法的一般選擇規則 求解答

當數據量不大時,選插入或選擇排序,不要用冒泡排序,當數據量大而又注重空間復雜性時選擇快速排序或堆排序。

選擇排序法就是在遍歷一組數據之前先選擇一個元素,如果後面的元素小於選擇的元素,則將後面的元素與選擇的元素進行交換,直到遍歷到最後一個元素,這樣經過一次遍歷後就會得到這組數據的最小的元素也就是有序數據的第一個元素。按照這樣的方式繼續選擇元素繼續遍歷,直到遍歷到這組數據完全有序。

(9)演算法怎麼選擴展閱讀:

注意事項:

非線性時間比較類排序:通過比較來決定元素間的相對次序,由於其時間復雜度不能突破O(nlogn),因此稱為非線性時間比較類排序。

線性時間非比較類排序:不通過比較來決定元素間的相對次序,可以突破基於比較排序的時間下界,以線性時間運行,因此稱為線性時間非比較類排序。

將待排序數組按照步長gap進行分組,然後將每組的元素利用直接插入排序的方法進行排序,每次將gap折半減小,循環上述操作,當gap=1時,利用直接插入,完成排序。

熱點內容
仔細的演算法 發布:2025-01-10 18:28:30 瀏覽:546
c語言判斷是否為迴文數 發布:2025-01-10 18:21:31 瀏覽:783
win7vhd加密 發布:2025-01-10 18:20:35 瀏覽:420
手機存儲空間里的其他怎麼清理 發布:2025-01-10 18:19:59 瀏覽:801
二手的電腦伺服器都怎麼處理了 發布:2025-01-10 18:19:05 瀏覽:906
定壓補水裝置如何配置 發布:2025-01-10 18:12:34 瀏覽:431
安卓是華為的什麼 發布:2025-01-10 18:12:27 瀏覽:541
pythonsetget 發布:2025-01-10 17:53:12 瀏覽:854
買腳本多少錢 發布:2025-01-10 17:52:34 瀏覽:936
文件夾萬能解密器破解版 發布:2025-01-10 17:48:12 瀏覽:465