A. 回歸演算法有哪些
回歸演算法有:
線性回歸使用最佳的擬合直線(也就是回歸線)在因變數(Y)和一個或多個自變數(X)之間建立一種關系。
用一個方程式來表示它,即Y=a+b*X + e,其中a表示截距,b表示直線的斜率,e是誤差項。這個方程可以根據給定的預測變數(s)來預測目標變數的值。
邏輯回歸是用來計算「事件=Success」和「事件=Failure」的概率。當因變數的類型屬於二元(1 / 0,真/假,是/否)變數時,我們就應該使用邏輯回歸。這里,Y的值從0到1,它可以方程表示。
B. 分層回歸是邏輯回歸嗎
不屬於。
邏輯回歸屬於概率型的非線性回歸,分為二分類和多分類的回歸模型。分層回歸的理解其實是對兩個或多個回歸模型進行比較。分組數據的邏輯回歸模型也可以稱為分層邏輯回歸。
分層回歸將核心研究的變數放在最後一步進入模型,以考察在排除了其他變數的貢獻的情況下,該變數對回歸方程的貢獻。如果變數仍然有明顯的貢獻,那麼就可以做出該變數確實具有其他變數所不能替代的獨特作用的結論。
這種方法主要用於,當自變數之間有較高的相關,其中一個自變數的獨特貢獻難以確定的情況。常用於中介作用或者調節作用研究中。
概念
logistic回歸是一種廣義線性回歸(generalized linear model),因此與多重線性回歸分析有很多相同之處。它們的模型形式基本上相同,都具有w『x+b,其中w和b是待求參數,其區別在於他們的因變數不同,多重線性回歸直接將w『x+b作為因變數,即y =w『x+b。
而logistic回歸則通過函數L將w『x+b對應一個隱狀態p,p =L(w『x+b),然後根據p與1-p的大小決定因變數的值。如果L是logistic函數,就是logistic回歸,如果L是多項式函數就是多項式回歸。
logistic回歸的因變數可以是二分類的,也可以是多分類的,但是二分類的更為常用,也更加容易解釋,多類可以使用softmax方法進行處理。實際中最為常用的就是二分類的logistic回歸。
C. 怎樣正確理解邏輯回歸(logistic regression)
邏輯回歸通常用於解決分類問題,“分類”是應用邏輯回歸的目的和結果,但中間過程依舊是“回歸”。
結果P也可以理解為概率,換句話說概率大於0.5的屬於1分類,概率小於0.5的屬於0分類,這就達到了分類的目的。
邏輯回歸有什麼優點
LR能以概率的形式輸出結果,而非只是0,1判定。
LR的可解釋性強,可控度高(你要給老闆講的嘛…)。
訓練快,feature engineering之後效果贊。
因為結果是概率,可以做ranking model。
邏輯回歸有哪些應用
CTR預估/推薦系統的learning to rank/各種分類場景。
某搜索引擎廠的廣告CTR預估基線版是LR。
某電商搜索排序/廣告CTR預估基線版是LR。
某電商的購物搭配推薦用了大量LR。
某現在一天廣告賺1000w+的新聞app排序基線是LR。
D. 數據分析師—技術面試
數據分析師—技術面試
三月份開始找實習,到現在已經有半年的時間了,在這半年的時間中,該經歷的基本上都已經經歷,春招實習時候,拿到了7個offer,校招時候,成功的拿下一份心儀的工作,結束了我的秋招旅程。對於面試,技術層面即演算法、軟體等等,業務層面就是忽悠(畢竟沒有做過完整的項目),但是也要有自己的邏輯和思考方式(這方面我也有很大的欠缺),下面將自己的面試經歷梳理為技術層面和業務層面,來分享給大家。
技術面試
一、軟體
1. R語言的文件讀取:csv文件的讀取方式(read.csv),txt文件的讀取方式(read.table)
2. R語言中一些小函數的作用
①apply函數:1代表調用每一行的函數,0代表調用每一列的函數(注意其用法和Python的區別)
②runif函數:生成均勻分布的隨機數
③sample(,return = TRUE):隨機有放回的抽樣
3. Python中list列表和元組的最大區別:元組的值不可以改變,但是列表的值是可以改變的。
4.資料庫中表的連接方式
①內部連接:inner join
②外部連接:outer join
③左連接:left join
註:對於數據分析,建議大家無論是R,Python,sql都有自己一套流程化的體系,這一體系可以很好的幫助你解決實際中的問題。
二、演算法
對於演算法(分類,聚類,關聯等),更是建議大家有一套流程化的體系,在面試演算法的時候,是一個依次遞進的過程,不要給自己挖坑,相反,更要將自己的優勢發揮的淋漓盡致,把自己會的東西全部釋放出來。
下面我將自己的所有面試串聯起來,給大家分享一下,僅供參考。
面試官:小張同學,你好,看了你的簡歷,對相關演算法還是略懂一些,下面開始我們的面試,有這么一個場景,在一個樣本集中,其中有100個樣本屬於A,9900個樣本屬於B,我想用決策樹演算法來實現對AB樣本進行區分,這時會遇到什麼問題:
小張:欠擬合現象,因為在這個樣本集中,AB樣本屬於嚴重失衡狀態,在建立決策樹演算法的過程中,模型會更多的偏倚到B樣本的性質,對A樣本的性質訓練較差,不能很好的反映樣本集的特徵。
面試官:看你決策樹應該掌握的不錯,你說一下自己對於決策樹演算法的理解?
小張:決策樹演算法,無論是哪種,其目的都是為了讓模型的不確定性降低的越快越好,基於其評價指標的不同,主要是ID3演算法,C4.5演算法和CART演算法,其中ID3演算法的評價指標是信息增益,C4.5演算法的評價指標是信息增益率,CART演算法的評價指標是基尼系數。
面試官:信息增益,好的,這裡面有一個資訊理論的概念,你應該知道的吧,敘述一下
小張:香農熵,隨機變數不確定性的度量。利用ID3演算法,每一次對決策樹進行分叉選取屬性的時候,我們會選取信息增益最高的屬性來作為分裂屬性,只有這樣,決策樹的不純度才會降低的越快。
面試官:OK,你也知道,在決策樹無限分叉的過程中,會出現一種現象,叫過擬合,和上面說過的欠擬合是不一樣的,你說一下過擬合出現的原因以及我們用什麼方法來防止過擬合的產生?
小張:對訓練數據預測效果很好,但是測試數據預測效果較差,則稱出現了過擬合現象。對於過擬合現象產生的原因,有以下幾個方面,第一:在決策樹構建的過程中,對決策樹的生長沒有進行合理的限制(剪枝);第二:在建模過程中使用了較多的輸出變數,變數較多也容易產生過擬合;第三:樣本中有一些雜訊數據,雜訊數據對決策樹的構建的干擾很多,沒有對雜訊數據進行有效的剔除。對於過擬合現象的預防措施,有以下一些方法,第一:選擇合理的參數進行剪枝,可以分為預剪枝後剪枝,我們一般用後剪枝的方法來做;第二:K-folds交叉驗證,將訓練集分為K份,然後進行K次的交叉驗證,每次使用K-1份作為訓練樣本數據集,另外的一份作為測試集合;第三:減少特徵,計算每一個特徵和響應變數的相關性,常見的為皮爾遜相關系數,將相關性較小的變數剔除,當然還有一些其他的方法來進行特徵篩選,比如基於決策樹的特徵篩選,通過正則化的方式來進行特徵選取等。
面試官:你剛剛前面有提到預剪枝和後剪枝,當然預剪枝就是在決策樹生成初期就已經設置了決策樹的參數,後剪枝是在決策樹完全建立之後再返回去對決策樹進行剪枝,你能否說一下剪枝過程中可以參考的某些參數?
小張:剪枝分為預剪枝和後剪枝,參數有很多,在R和Python中都有專門的參數來進行設置,下面我以Python中的參數來進行敘述,max_depth(樹的高度),min_samples_split(葉子結點的數目),max_leaf_nodes(最大葉子節點數),min_impurity_split(限制不純度),當然R語言裡面的rpart包也可以很好的處理這個問題。
面試官:對了,你剛剛還說到了用決策樹來進行特徵的篩選,現在我們就以ID3演算法為例,來說一下決策樹演算法對特徵的篩選?
小張:對於離散變數,計算每一個變數的信息增益,選擇信息增益最大的屬性來作為結點的分裂屬性;對於連續變數,首先將變數的值進行升序排列,每對相鄰值的中點作為可能的分離點,對於每一個劃分,選擇具有最小期望信息要求的點作為分裂點,來進行後續的決策數的分裂。
面試官:你剛剛還說到了正則化,確實可以對過擬合現象來進行很好的調整,基於你自己的理解,來說一下正則化?
小張:這一塊的知識掌握的不是很好,我簡單說一下自己對這一塊的了解。以二維情況為例,在L1正則化中,懲罰項是絕對值之和,因此在坐標軸上會出現一個矩形,但是L2正則化的懲罰項是圓形,因此在L1正則化中增大了系數為0的機會,這樣具有稀疏解的特性,在L2正則化中,由於系數為0的機率大大減小,因此不具有稀疏解的特性。但是L1沒有選到的特性不代表不重要,因此L1和L2正則化要結合起來使用。
面試官:還可以吧!正則化就是在目標函數後面加上了懲罰項,你也可以將後面的懲罰項理解為范數。分類演算法有很多,邏輯回歸演算法也是我們經常用到的演算法,剛剛主要討論的是決策樹演算法,現在我們簡單聊一下不同分類演算法之間的區別吧!討論一下決策樹演算法和邏輯回歸演算法之間的區別?
小張:分為以下幾個方面:第一,邏輯回歸著眼於對整體數據的擬合,在整體結構上優於決策樹;但是決策樹採用分割的方法,深入到數據內部,對局部結構的分析是優於邏輯回歸;第二,邏輯回歸對線性問題把握較好,因此我們在建立分類演算法的時候也是優先選擇邏輯回歸演算法,決策樹對非線性問題的把握較好;第三,從本質來考慮,決策樹演算法假設每一次決策邊界都是和特徵相互平行或垂直的,因此會將特徵空間劃分為矩形,因而決策樹會產生復雜的方程式,這樣會造成過擬合現象;邏輯回歸只是一條平滑的邊界曲線,不容易出現過擬合現象。
面試官: 下面呢我們來聊一下模型的評估,演算法進行模型評估的過程中,常用的一些指標都有哪些,精度啊?召回率啊?ROC曲線啊?這些指標的具體含義是什麼?
小張:精度(precision),精確性的度量,表示標記為正例的元組占實際為正例的比例;召回率(recall),完全性的度量,表示為實際為正例的元組被正確標記的比例;ROC 曲線的橫坐標為假陽性,縱坐標為真陽性,值越大,表示分類效果越好。
(to be honest,這個問題第一次我跪了,雖然說是記憶一下肯定沒問題,但是當時面試的那個時候大腦是一片空白)
面試官:聚類分析你懂得的吧!在我們一些分析中,它也是我們經常用到的一類演算法,下面你介紹一下K-means演算法吧!
小張:對於K-means演算法,可以分為以下幾個步驟:第一,從數據點中隨機抽取K個數據點作為初始的聚類中心;第二:計算每個點到這K個中心點的距離,並把每個點分到距離其最近的中心中去;第三:求取各個類的均值,將這些均值作為新的類中心;第四:重復進行步驟二三過程,直至演算法結束,演算法結束有兩種,一種是迭代的次數達到要求,一種是達到了某種精度。
後記
面試的水很深,在數據分析技術面的時候問到的東西當然遠遠不止這些,因此在我們的腦子裡面一定要形成一個完整的體系,無論是對某一門編程語言,還是對數據挖掘演算法,在工作中都需要形成你的閉環,在面試中更是需要你形成閉環,如何更完美的包裝自己,自己好好總結吧!
附錄
R語言數據處理體系:數據簡單預處理個人總結
1、數據簡單查看
⑴查看數據的維度:dim
⑵查看數據的屬性:colnames
⑶查看數據類型:str
註:有一些演算法,比如說組合演算法,要求分類變數為因子型變數;層次聚類,要求是一個距離矩陣,可以通過str函數進行查看
⑷查看前幾行數據:head
註:可以初步觀察數據是不是有量綱的差異,會後續的分析做准備
⑸查看因子型變數的佔比情況:table/prop.table
註:可以為後續數據抽樣做准備,看是否產生類不平衡的問題
2、數據缺失值處理
⑴summary函數進行簡單的查看
⑵利用mice和VIM包查看數據缺失值情況,代表性函數: md.pattern、aggr
⑶caret包中的preProcess函數,可以進行缺失值的插補工作,有knn、袋裝、中位數方法
⑷missForest包中的missForest函數,可以用隨機森林的方法進行插補
⑸可以用回歸分析的方法完成缺失值插補工作
⑹如果樣本量很多,缺失的數據很少,可以選擇直接剔除的方法
3、數據異常值處理
⑴summary函數進行簡單的查看,比如:最大值、最小值等
⑵boxplot函數繪制箱線圖
4、數據抽樣
⑴sample函數進行隨機抽樣
⑵caret包中的createDataPartition()函數對訓練樣本和測試樣本進行等比例抽樣
⑶caret包中的createFold函數根據某一個指標進行等比例抽樣
⑷DMwR包中SMOTE函數可以解決處理不平衡分類問題
註:比如決策樹演算法中,如果樣本嚴重不平衡,那麼模型會出現欠擬合現象
5、變數的多重共線性處理
⑴結合業務,先刪除那些和分析無關的指標
⑵corrgram包的corrgram函數查看相關系數矩陣
⑶caret包中的findCorrelation函數查看多重共線性
⑷如果相關性太大,可以考慮刪除變數;如果變數比較重要,可以考慮主成分/因子分析進行降維處理
E. 機器學習的方法之回歸演算法
我們都知道,機器學習是一個十分實用的技術,而這一實用的技術中涉及到了很多的演算法。所以說,我們要了解機器學習的話就要對這些演算法掌握通透。在這篇文章中我們就給大家詳細介紹一下機器學習中的回歸演算法,希望這篇文章能夠幫助到大家。
一般來說,回歸演算法是機器學習中第一個要學習的演算法。具體的原因,第一就是回歸演算法比較簡單,可以讓人直接從統計學過渡到機器學習中。第二就是回歸演算法是後面若干強大演算法的基石,如果不理解回歸演算法,無法學習其他的演算法。而回歸演算法有兩個重要的子類:即線性回歸和邏輯回歸。
那麼什麼是線性回歸呢?其實線性回歸就是我們常見的直線函數。如何擬合出一條直線最佳匹配我所有的數據?這就需要最小二乘法來求解。那麼最小二乘法的思想是什麼呢?假設我們擬合出的直線代表數據的真實值,而觀測到的數據代表擁有誤差的值。為了盡可能減小誤差的影響,需要求解一條直線使所有誤差的平方和最小。最小二乘法將最優問題轉化為求函數極值問題。
那麼什麼是邏輯回歸呢?邏輯回歸是一種與線性回歸非常類似的演算法,但是,從本質上講,線型回歸處理的問題類型與邏輯回歸不一致。線性回歸處理的是數值問題,也就是最後預測出的結果是數字。而邏輯回歸屬於分類演算法,也就是說,邏輯回歸預測結果是離散的分類。而邏輯回歸演算法劃出的分類線基本都是線性的(也有劃出非線性分類線的邏輯回歸,不過那樣的模型在處理數據量較大的時候效率會很低),這意味著當兩類之間的界線不是線性時,邏輯回歸的表達能力就不足。下面的兩個演算法是機器學習界最強大且重要的演算法,都可以擬合出非線性的分類線。這就是有關邏輯回歸的相關事項。
在這篇文章中我們簡單給大家介紹了機器學習中的回歸演算法的相關知識,通過這篇文章我們不難發現回歸演算法是一個比較簡答的演算法,回歸演算法是線性回歸和邏輯回歸組成的演算法,而線性回歸和邏輯回歸都有自己實現功能的用處。這一點是需要大家理解的並掌握的,最後祝願大家能夠早日學會回歸演算法。
F. 邏輯回歸和線性回歸的區別 機器學習
邏輯回歸:y=sigmoid(w'x)
線性回歸:y=w'x
也就是邏輯回歸比線性回歸多了一個sigmoid函數,sigmoid(x)=1/(1+exp(-x)),其實就是對x進行歸一化操作,使得sigmoid(x)位於0~1
邏輯回歸通常用於二分類模型,目標函數是二類交叉熵,y的值表示屬於第1類的概率,用戶可以自己設置一個分類閾值。
線性回歸用來擬合數據,目標函數是平法和誤差
G. 數據挖掘核心演算法之一--回歸
數據挖掘核心演算法之一--回歸
回歸,是一個廣義的概念,包含的基本概念是用一群變數預測另一個變數的方法,白話就是根據幾件事情的相關程度,用其中幾件來預測另一件事情發生的概率,最簡單的即線性二變數問題(即簡單線性),例如下午我老婆要買個包,我沒買,那結果就是我肯定沒有晚飯吃;復雜一點就是多變數(即多元線性,這里有一點要注意的,因為我最早以前犯過這個錯誤,就是認為預測變數越多越好,做模型的時候總希望選取幾十個指標來預測,但是要知道,一方面,每增加一個變數,就相當於在這個變數上增加了誤差,變相的擴大了整體誤差,尤其當自變數選擇不當的時候,影響更大,另一個方面,當選擇的倆個自變數本身就是高度相關而不獨立的時候,倆個指標相當於對結果造成了雙倍的影響),還是上面那個例子,如果我丈母娘來了,那我老婆就有很大概率做飯;如果在加一個事件,如果我老丈人也來了,那我老婆肯定會做飯;為什麼會有這些判斷,因為這些都是以前多次發生的,所以我可以根據這幾件事情來預測我老婆會不會做晚飯。
大數據時代的問題當然不能讓你用肉眼看出來,不然要海量計算有啥用,所以除了上面那倆種回歸,我們經常用的還有多項式回歸,即模型的關系是n階多項式;邏輯回歸(類似方法包括決策樹),即結果是分類變數的預測;泊松回歸,即結果變數代表了頻數;非線性回歸、時間序列回歸、自回歸等等,太多了,這里主要講幾種常用的,好解釋的(所有的模型我們都要注意一個問題,就是要好解釋,不管是參數選擇還是變數選擇還是結果,因為模型建好了最終用的是業務人員,看結果的是老闆,你要給他們解釋,如果你說結果就是這樣,我也不知道問什麼,那升職加薪基本無望了),例如你發現日照時間和某地葡萄銷量有正比關系,那你可能還要解釋為什麼有正比關系,進一步統計發現日照時間和葡萄的含糖量是相關的,即日照時間長葡萄好吃,另外日照時間和產量有關,日照時間長,產量大,價格自然低,結果是又便宜又好吃的葡萄銷量肯定大。再舉一個例子,某石油產地的咖啡銷量增大,國際油價的就會下跌,這倆者有關系,你除了要告訴領導這倆者有關系,你還要去尋找為什麼有關系,咖啡是提升工人精力的主要飲料,咖啡銷量變大,跟蹤發現工人的工作強度變大,石油運輸出口增多,油價下跌和咖啡銷量的關系就出來了(單純的例子,不要多想,參考了一個根據遙感信息獲取船舶信息來預測糧食價格的真實案例,感覺不夠典型,就換一個,實際油價是人為操控地)。
回歸利器--最小二乘法,牛逼數學家高斯用的(另一個法國數學家說自己先創立的,不過沒辦法,誰讓高斯出名呢),這個方法主要就是根據樣本數據,找到樣本和預測的關系,使得預測和真實值之間的誤差和最小;和我上面舉的老婆做晚飯的例子類似,不過我那個例子在不確定的方面只說了大概率,但是到底多大概率,就是用最小二乘法把這個關系式寫出來的,這里不講最小二乘法和公式了,使用工具就可以了,基本所有的數據分析工具都提供了這個方法的函數,主要給大家講一下之前的一個誤區,最小二乘法在任何情況下都可以算出來一個等式,因為這個方法只是使誤差和最小,所以哪怕是天大的誤差,他只要是誤差和裡面最小的,就是該方法的結果,寫到這里大家應該知道我要說什麼了,就算自變數和因變數完全沒有關系,該方法都會算出來一個結果,所以主要給大家講一下最小二乘法對數據集的要求:
1、正態性:對於固定的自變數,因變數呈正態性,意思是對於同一個答案,大部分原因是集中的;做回歸模型,用的就是大量的Y~X映射樣本來回歸,如果引起Y的樣本很凌亂,那就無法回歸
2、獨立性:每個樣本的Y都是相互獨立的,這個很好理解,答案和答案之間不能有聯系,就像擲硬幣一樣,如果第一次是反面,讓你預測拋兩次有反面的概率,那結果就沒必要預測了
3、線性:就是X和Y是相關的,其實世間萬物都是相關的,蝴蝶和龍卷風(還是海嘯來著)都是有關的嘛,只是直接相關還是間接相關的關系,這里的相關是指自變數和因變數直接相關
4、同方差性:因變數的方差不隨自變數的水平不同而變化。方差我在描述性統計量分析裡面寫過,表示的數據集的變異性,所以這里的要求就是結果的變異性是不變的,舉例,腦袋軸了,想不出例子,畫個圖來說明。(我們希望每一個自變數對應的結果都是在一個盡量小的范圍)
我們用回歸方法建模,要盡量消除上述幾點的影響,下面具體講一下簡單回歸的流程(其他的其實都類似,能把這個講清楚了,其他的也差不多):
first,找指標,找你要預測變數的相關指標(第一步應該是找你要預測什麼變數,這個話題有點大,涉及你的業務目標,老闆的目的,達到該目的最關鍵的業務指標等等,我們後續的話題在聊,這里先把方法講清楚),找相關指標,標准做法是業務專家出一些指標,我們在測試這些指標哪些相關性高,但是我經歷的大部分公司業務人員在建模初期是不靠譜的(真的不靠譜,沒思路,沒想法,沒意見),所以我的做法是將該業務目的所有相關的指標都拿到(有時候上百個),然後跑一個相關性分析,在來個主成分分析,就過濾的差不多了,然後給業務專家看,這時候他們就有思路了(先要有東西激活他們),會給一些你想不到的指標。預測變數是最重要的,直接關繫到你的結果和產出,所以這是一個多輪優化的過程。
第二,找數據,這個就不多說了,要麼按照時間軸找(我認為比較好的方式,大部分是有規律的),要麼按照橫切面的方式,這個就意味橫切面的不同點可能波動較大,要小心一點;同時對數據的基本處理要有,包括對極值的處理以及空值的處理。
第三, 建立回歸模型,這步是最簡單的,所有的挖掘工具都提供了各種回歸方法,你的任務就是把前面准備的東西告訴計算機就可以了。
第四,檢驗和修改,我們用工具計算好的模型,都有各種假設檢驗的系數,你可以馬上看到你這個模型的好壞,同時去修改和優化,這里主要就是涉及到一個查准率,表示預測的部分裡面,真正正確的所佔比例;另一個是查全率,表示了全部真正正確的例子,被預測到的概率;查准率和查全率一般情況下成反比,所以我們要找一個平衡點。
第五,解釋,使用,這個就是見證奇跡的時刻了,見證前一般有很久時間,這個時間就是你給老闆或者客戶解釋的時間了,解釋為啥有這些變數,解釋為啥我們選擇這個平衡點(是因為業務力量不足還是其他的),為啥做了這么久出的東西這么差(這個就尷尬了)等等。
回歸就先和大家聊這么多,下一輪給大家聊聊主成分分析和相關性分析的研究,然後在聊聊數據挖掘另一個利器--聚類。
H. 邏輯回歸演算法原理是什麼
邏輯回歸就是這樣的一個過程:面對一個回歸或者分類問題,建立代價函數,然後通過優化方法迭代求解出最優的模型參數,測試驗證我們這個求解的模型的好壞。
Logistic回歸雖然名字里帶「回歸」,但是它實際上是一種分類方法,主要用於兩分類問題(即輸出只有兩種,分別代表兩個類別)回歸模型中,y是一個定性變數,比如y=0或1,logistic方法主要應用於研究某些事件發生的概率。
(8)邏輯回歸演算法屬於回歸演算法嗎擴展閱讀:
Logistic回歸與多重線性回歸實際上有很多相同之處,最大的區別就在於它們的因變數不同,其他的基本都差不多。正是因為如此,這兩種回歸可以歸於同一個家族,即廣義線性模型。這一家族中的模型形式基本上都差不多,不同的就是因變數不同。這一家族中的模型形式基本上都差不多,不同的就是因變數不同。