[LeetCode] Maximum Product Subarray的4種解法php
(2)數學題或者"智力"題。html
若是一個女生說,她集齊了十二個星座的前男朋友,咱們應該如何估計她前男朋友的數量?算法
如何理解矩陣的「秩」?:網絡
矩陣低秩的意義?:低秩表徵着一種冗餘程度。
秩越低表示數據冗餘性越大,由於用不多幾個基就能夠表達全部數據了。相反,秩越大表示數據冗餘性越小。app
一個m*n的矩陣,若是秩很低(秩r遠小於m,n),則它能夠拆成一個m*r矩陣和一個r*n矩陣之積(相似於SVD分解)。後面這兩個矩陣所佔用的存儲空間比原來的m*n矩陣小得多。dom
如何理解矩陣特徵值?:機器學習
VD的效果就是..用一個規模更小的矩陣去近似原矩陣...
這裏A就是表明圖像的原矩陣..其中的尤爲值得關注,它是由A的特徵值從大到小放到對角線上的..也就是說,咱們能夠選擇其中的某些具備「表明性」的特徵值去近似原矩陣!函數
導數的幾何意義可能不少人都比較熟悉: 當函數定義域和取值都在實數域中的時候,導數能夠表示函數曲線上的切線斜率。 除了切線的斜率,導數還表示函數在該點的變化率。大數據
將上面的公式轉化爲下面圖像爲:
(3)機器學習基礎
這兩種算法都是基於迴歸的概念。
邏輯迴歸相對容易理解,就是經過Sigmoid函數將線性方程ax+b對應到一個隱狀態P,P=S(ax+b),而後根據發生機率(p)與沒有發生機率(1-p)的大小決定因變量的取值,0或者1。具體操做就是p除以1-p再取對數,這個變換增長了取值區間的範圍;改變了函數值與自變量間的曲線關係,根據大量實驗數據,這個變換每每能使函數值和自變量之間呈線性關係。
SVM則是經過一個非線性映射p,把樣本空間映射到一個高維乃至無窮維的特徵空間中(Hilbert空間),使得在原來的樣本空間中非線性可分的問題轉化爲在特徵空間中的線性可分的問題.簡單地說,就是升維和線性化。做爲分類、迴歸等問題來講,極可能在低維樣本空間沒法線性處理的樣本集,在高維特徵空間中卻能夠經過一個線性超平面實現線性劃分(或迴歸)。通常的升維都會帶來計算的複雜化,但SVM方法巧妙地應用核函數的展開定理簡化了計算,不須要知道非線性映射的顯式表達式
。簡單來講,SVM是在高維特徵空間中創建線性學習機,幾乎不增長計算的複雜性,而且在某種程度上避免了「維數災難」,這一切要歸功於核函數的展開和計算理論.
綜上所述,邏輯迴歸和SVM均可以用於分類問題的解決,其主要區別就在於映射函數選擇上的不一樣,邏輯迴歸經常使用於處理大數據,而SVM則正好相反。
SVM的處理方法是隻考慮support vectors,也就是和分類最相關的少數點,去學習分類器。
而邏輯迴歸經過非線性映射,大大減少了離分類平面較遠的點的權重,相對提高了與分類最相關的數據點的權重,二者的根本目的都是同樣的。
svm考慮局部(支持向量),而logistic迴歸考慮全局,
1,LR和SVM都是分類算法。
2,若是不考慮核函數,LR和SVM都是線性分類算法,即分類決策面都是線性的。
3,LR和SVM都是監督學習算法。
不一樣點:
1,本質上是其loss function不一樣。
2,支持向量機只考慮局部的邊界線附近的點,而邏輯迴歸考慮全局(遠離的點對邊界線的肯定也起做用)。
線性SVM不直接依賴於數據分佈,分類平面不受一類點影響;LR則受全部數據點的影響,若是數據不一樣類別strongly unbalance,通常須要先對數據作balancing。
3,在解決非線性問題時,支持向量機採用核函數的機制,而LR一般不採用核函數的方法。
這個問題理解起來很是簡單。分類模型的結果就是計算決策面,模型訓練的過程就是決策面的計算過程。經過上面的第二點不一樣點能夠了解,在計算決策面時,SVM算法裏只有少數幾個表明支持向量的樣本參與了計算,也就是隻有少數幾個樣本須要參與覈計算(即kernal machine解的係數是稀疏的)。然而,LR算法裏,每一個樣本點都必須參與決策面的計算過程,也就是說,假設咱們在LR裏也運用核函數的原理,那麼每一個樣本點都必須參與覈計算,這帶來的計算複雜度是至關高的。因此,在具體應用時,LR不多運用核函數機制。
4,線性SVM依賴數據表達的距離測度,因此須要對數據先作normalization,LR不受其影響。
5,SVM的損失函數就自帶正則!!!(損失函數中的1/2||w||^2項),這就是爲何SVM是結構風險最小化算法的緣由!!!而LR必須另外在損失函數上添加正則項!!!
本節來自算法比較-SVM和logistic迴歸,該博客裏有些寫的並不許確,具備參考價值。
在Andrew NG的課裏講到過:
1. 若是Feature的數量很大,跟樣本數量差很少,這時候選用LR或者是Linear Kernel的SVM
2. 若是Feature的數量比較小,樣本數量通常,不算大也不算小,選用SVM+Gaussian Kernel
3. 若是Feature的數量比較小,而樣本數量不少,須要手工添加一些feature變成第一種狀況
各類機器學習的應用場景分別是什麼?例如,k近鄰,貝葉斯,決策樹,svm,邏輯斯蒂迴歸和最大熵模型。
主成分分析,奇異值分解
PCA是一種無監督學習,其存在的假設是:方差越大信息量越多。可是信息(方差)小的特徵並不表明表對於分類沒有意義,可能正是某些方差小的特徵直接決定了分類結果,而PCA在降維過程當中徹底不考慮目標變量的作法會致使一些關鍵但方差小的分類信息被過濾掉。
隨機森林,GBDT, 集成學習
爲何說bagging是減小variance,而boosting是減小bias?
基於樹的adaboost和Gradient Tree Boosting區別?
爲何在實際的 kaggle 比賽中 gbdt 和 random forest 效果很是好?
過擬合
1 獲取更多數據,2 數據加強&噪聲數據3 簡化模型.
提早終止,L1和L2正則化
正則化的一個最強大最知名的特性就是能向損失函數增長「懲罰項」(penalty)。所謂『懲罰』是指對損失函數中的某些參數作一些限制。最多見的懲罰項是L1和L2:
Dropout-深度學習
機器學習中使用「正則化來防止過擬合」究竟是一個什麼原理?爲何正則化項就能夠防止過擬合?
(4)深度學習基礎
卷積神經網絡,循環神經網絡,LSTM與GRU,梯度消失與梯度爆炸,激活函數,防止過擬合的方法,dropout,batch normalization,各種經典的網絡結構,各種優化方法
卷積神經網絡的複雜度分析:時間和空間,以及影響。
CNN(卷積神經網絡)、RNN(循環神經網絡)、DNN(深度神經網絡)的內部網絡結構有什麼區別?
sgd有多種改進的形式(rmsprop,adadelta等),爲何大多數論文中仍然用sgd?
你有哪些deep learning(rnn、cnn)調參的經驗?
深度學習中 Batch Normalization爲何效果好?