當前位置:首頁>職場>數據挖掘面試150道題(數據挖掘面試題分享)
發布時間:2024-01-24閱讀(16)
一、數據分析與挖掘方面:

(1)為什么會產生過擬合,有哪些方法可以預防或克服過擬合?
所謂過擬合(Overfit),是這樣一種現象:一個假設在訓練數據上能夠獲得比其他假設更好的擬合,但是在訓練數據外的數據集上卻不能很好的擬合數據。此時我們就叫這個假設出現了overfit的現象。
過擬合產生的原因:出現這種現象的主要原因是訓練數據中存在噪音或者訓練數據太少。
解決方法:
1、 增大數據量
2、 減少feature個數(人工定義留多少個feature或者算法選取這些feature)
3、 正則化(留下所有的feature,但對于部分feature定義其parameter非常小)
4、 交叉驗證,重采樣評價模型效能,K折交叉驗證
5、保留一個驗證數據集檢驗
注意:幾乎所有的集成模型都是為了防止過擬合的,他們的思想都可以拿來說
(2)無監督和有監督算法的區別?
監督學習(supervised learning):通過已有的訓練樣本(即已知數據以及其對應的輸出)來訓練,從而得到一個最優模型,再利用這個模型將所有新的數據樣本映射為相應的輸出結果,對輸出結果進行簡單的判斷從而實現分類的目的,那么這個最優模型也就具有了對未知數據進行分類的能力。包括所有的回歸算法分類算法,比如線性回歸、決策樹、KNN、SVM等
無監督學習(unsupervised learning):我們事先沒有任何訓練數據樣本,需要直接對數據進行建模。包括所有的聚類算法,比如k-means 、PCA、 GMM等
(3)tree-base模型是否了解,決策樹和隨機森林區別是什么,樹節點的分裂都有哪些策略(即節點的選擇)
直接說隨機森林是很多棵決策樹組成的,一定程度上能避免過擬合問題。
樹節點分裂:ID3 : 以信息增益大小來建立。
- C4.5 : 以信息增益率大小來建立。
- CART : 以基尼系數大小來建立。
決策樹的數據最好是離散型的吧?
ID3和C4.5是分類型決策樹,只處理離散型的,CART是分類回歸都可以做的決策樹,支持所有類型
(4)tf-idf的公式
TFIDF實際上是:TF * IDF
詞頻(term frequency,TF)指的是某一個給定的詞語在該文件中出現的頻率。
逆向文件頻率(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目。
這邊的例子以上述的數學公式來計算。詞頻 (TF) 是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語“母牛”出現了3次,那么“母牛”一詞在該文件中的詞頻就是3/100=0.03。一個計算文件頻率 (IDF) 的方法是文件集里包含的文件總數除以測定有多少份文件出現過“母牛”一詞。所以,如果“母牛”一詞在1,000份文件出現過,而文件總數是10,000,000份的話,其逆向文件頻率就是 lg10,000,000 / 1,000)=4。最后的TF-IDF的分數為0.03 * 4=0.12。
(5)維度怎么擴展?
比如時間,那我可能取分段區間。可能單取年份,可能取距離當今多久
(6)特征怎么選擇?
確定方差最大化,或者通過分類,尋找特征差異最大化。其他就是有具體看業務,要跟業務相結合,有統計性的(比如用tfidf轉換行為軌跡),有直接性的(教育、性別等)
(7)隨機森林里面用的哪種決策樹?
參數可選gini或者entropy,不用c4.5,因為會剪枝,隨機森林不需要剪枝
(8)對數據分析中關鍵指標的定義?
我回答:可解釋的指標都是可以的。比如:用戶網站點擊率,可以定義為單天的點擊次數,也可以定義為一個月的平均點擊次數,關鍵看可解釋業務性
(9)邏輯回歸與線性回歸的區別?
邏輯回歸:迭代求解
線性回歸:直接求解
(10)機器學習是方法,數據挖掘是應用
(11)最大似然估計和最小二乘法的區別
(12)假設一個房間有5個嬰兒,性別2男3女,現在加入一個性別未知的嬰兒。此時從這6個嬰兒中,隨機抽取一個,發現是男孩子。問后來加入嬰兒性別是男孩子的概率多大?
(把題目換成,很容易想到貝葉斯-- 假設一個房間有5個嬰兒,性別2男3女,現在加入一個性別未知的嬰兒(性別分布為男p女1-p)。此時從這6個嬰兒中,隨機抽取一個,發現是男孩子。問后來加入嬰兒性別是男孩子的概率多大?(用p表示)))
具體解題步驟:參考鏈接https://zhidao.baidu.com/question/264525694500522765.html
(13)例如:一座別墅在過去的 20 年里一共發生過 2 次被盜,別墅的主人有一條狗,狗平均每周晚上叫 3 次,在盜賊入侵時狗叫的概率被估計為 0.9,問題是:在狗叫的時候發生入侵的概率是多少?貝葉斯公式P(A∩B) = P(A)*P(B|A)=P(B)*P(A|B)。如上公式也可變形為:P(B|A) = P(A|B)*P(B) / P(A)。
我們假設 A 事件為狗在晚上叫,B 為盜賊入侵,則以天為單位統計,P(A) = 3/7,P(B) = 2/(20*365) = 2/7300,P(A|B) = 0.9,按照公式很容易得出結果:P(B|A) = 0.9*(2/7300) / (3/7) = 0.00058
(14)采用EM算法求解的模型有哪些?為什么不用牛頓法或者梯度下降法?
一般有混合高斯、協同過濾、k-means。算法一定會收斂,但是可能會收斂到局部最優。求和的項數會隨著隱變量的數目指數上升,會給梯度計算帶來麻煩。EM算法是一種非梯度優化算法。
(15)用EM算法推導解釋K-means
k-means算法是高斯混合聚類在混合成分方差相等,且每個樣本僅指派一個混合成分時候的特例。k-means算法與EM算法的關系是這樣的:
· k-means是兩個步驟交替進行:確定中心點,對每個樣本選擇最近中心點--> E步和M步。
· E步中將每個點選擇最近的類優化目標函數,分給中心距它最近的類(硬分配),可以看成是EM算法中E步(軟分配)的近似。
· M步中更新每個類的中心點,可以認為是在「各類分布均為單位方差的高斯分布」的假設下,最大化似然值;
(16)如何進行特征選擇?
https://www.zhihu.com/question/28641663/answer/41653367
(17)SVM和LR的區別
http://blog.csdn.net/yan456jie/article/details/52524942
(18)邏輯回歸為什么用sigmod,不用其他函數?
答:1、sigmod 本身的性質:
a、輸出范圍有限,數據在傳遞的過程中不容易發散。
b、輸出范圍為(0,1),所以可以用作輸出層,輸出表示概率。
c、抑制兩頭,對中間細微變化敏感,對分類有利。
2、之所以LR 用sigmod,不是因為LR 選擇了 sigmod ,而是用 指數簇分布和 最大熵原理 推導出來的形式,就是這個樣子,后來起名叫sigmod
(19):邏輯回歸的系數想要都是正數,應該怎能做?
答:比如你訓練好的模型是y = x1 - x2,這時候x2的系數是負數,然后你只要把樣本x2這個維度的數字全取-j就好了,重新再次訓練就全是正數了(大牛說這是一個sb操作)
(20):樣本不平衡處理方法?
答:
a、負樣本少,就復制到一定比例
b、或者把正樣本刪除一部分
c、分段逐一訓練(舉例:正樣本10000,負樣本1000,將正樣本隨機分成10份,每份1000,然后拿著負樣本的1000與正樣本的每一份進行訓練,最后進行融合選擇)
d、模型參數調權重(模型里面有個參數可以調整樣本權重)
e、交叉驗證
f、根據樣本隨機構造新的樣本
(21)連續值轉換為離散值,有什么辦法,比如年齡?
答:
根據業務知識區分
根據pandas下面qcut和cut方法進行等頻或等寬處理
風控中 可以根據woe和iv 或者卡方檢驗
用聚類來做最優化尺度(沒試過)
(22)現金貸團伙作案,你有什么算法或方法去識別
答:從規則角度上講:可以從ip,通訊錄共同聯系人,設備指紋等信息上分析
從模型角度講:根據上面的特征,可以通過聚類來分群
(23)關于風控的指標?woe和iv公式,評分卡原理
(24)假如現在有一個數據分析需求,你會怎么做?先跟需求方確認需求(需要達成一致),然后確定元數據缺失情況,確定缺失原因和補救方法,然后進行數據提取,分析,分析過程中可跟需求方保持溝通,然后分析完后將結果呈現給需求方,再次與需求方溝通,增刪改查。
(25)假如現在有一個項目需要你建模,你會怎么做?回答建模過程即可
(26)邏輯回歸的結果 0.8表示什么?這個面試官是個傻逼嗎,直接這么問,先問清楚是幾分類,然后問這個0.8是在哪個index上的。
(27)你在建模過程中遇到過什么困難?樣本不平衡問題(然后回答解決辦法),樣本過擬合問題(然后回答解決辦法),準確率不高(結合更換特征,模型調參,換模型等思路回答)
(28)Bagging和Boosting的區別:
參考鏈接:https://blog.csdn.net/shaiguchun9503/article/details/82700036
(29)某人對一目標進行射擊,每次命中率都是0.25,若使至少命中1次的概率不小于0.75,至少應射擊幾次?
解:設應該射擊n次,則在這n次射擊中,命中的次數用X表示,則
X服從B(n,0.25)的二項分布,則至少一次命中的概率
P=1-都不中的概率=1-0.75^n
解1-0.75^n>=0.75 得n>=5.所以應該射擊5次
二、數據分析方面:
(1)分析原因,某產品6月份的平均日活率比7月多很多,請問你會從哪幾方面分析?
回答 思路 方法(以某個信用app為例)
答:1、活動原因
(1)分析參與活動的用戶的后續行為
(2)分析未參與活動的用戶的同一時間的行為
(3)對比以上兩數據趨勢,如果發現(1)和(2)有明顯不同的趨勢(如1驟降),那可能是活動的原因
2、功能改版
(1)與往期用量對比
3、當期貸款需求變化(不好定,需要專業分析)
4、歷史同期趨勢對比(多個因素組合,可能說服力不強,但是大致可以看下趨勢)
(2)流失用戶怎么定義的?如何用數據做正確定義?
答:第一種方法:拐點理論:根據用戶留存判斷,即到多少天之后,留存用戶比例開始穩定,則這一段時間就是 流失用戶周期。用戶回訪率拐點(用戶回訪率 = 回訪用戶數 ÷ 流失用戶數 × 100%)
其他:
a、https://www.zhihu.com/question/68029067 此種方法可用于預測 一個用戶是否即將成為流失用戶
(3)用戶生命周期怎么定義?
答:參考鏈接:https://blog.csdn.net/k7Jz78GeJJ/article/details/79434904
(4)資源位推薦,假如一個app首頁,有一個九宮格,你知道每個九宮格的點擊率,付費用戶數,付費金額等相關指標,你會怎么做推薦?
答:首先需要關注評價指標,其次如果某一個九宮格的付費轉化率顯著高于其他的格子,則將用戶往這個格子推。其他情況另議。(沒有準確答案)
(5) 以淘寶為例,怎么分析一個店鋪運營了2-3年,仍然沒有很多流量(瀏覽量,成交量等指標都不高),前提是你可以拿到淘寶的所有數據?
答:1. 是否用了淘寶的運營手段(買流量、參與淘寶活動)
2. 當前店鋪的曝光量是多少,處于淘寶整個板塊的哪一列
3. 同類型店鋪比較分析,包括款式,質量,店鋪評價,好評率,價格,上新頻率,客服響應速度等等
……
主要可以嘗試控制變量,應該先羅列出全部的主要影響因素,控制住其他變量差不多的情況下,比入看看相似店鋪的流量是否受價格影響比較大。
接下去延伸一下新的問題,剛剛提到了控制變量,假變量是 流量分發、價格、店鋪外觀、店鋪年齡、好評率、店鋪產品豐富程度 等。
在實際問題中控制變量會碰到以下問題——
1. 外觀、產品豐富程度 等主觀因素如何量化評價;
2. 這么多因素,一旦控制變量進行篩選,很可能與你店鋪相似的一個也沒有或者只有少量幾個。這時候統計分析價值不大。
引申:
如何判斷是不是價格問題導致別人不買你的商品?
答:控制變量:在保持同樣品牌競爭力、功能、人工交流的情況下,觀察顧客買什么。
面試官給的回答:同一個產品,如果一個用戶在高價鏈接的頁面看了又看,看了很久,結果去價格低的那個鏈接買了,基本說明是價格問題。
(6)數據組給定一批用戶供運營做活動,結果是 這批用戶的充值金額提升10%,請問如何判斷是運營的功勞還是數據分析的功勞,怎么處理其他非特定用戶(是不是 其他非特定用戶 做相應活動,也能起到一定效果呢?是否需要一起做活動),(即在問需要控制哪些因素)
未想好怎么回答
三、數據庫方面:
(1)有什么sql調優的手段,了解多少
索引、條件先后等等,具體可自行百度sql調優方法
(2)sql,多個班級,取不同班級的每個班級的前3名
sql是rownumber:
SELECT * from
(select row_number() over (partition by class order by score desc) 排名,* from sc) t
where 排名<=3 order by class asc,score desc
mysql用定義變量的方式:
SELECT * from (
SELECT @x:=if(b.cla=@y,@x 1,1) rn,@y:= b.cla , b.* from
(SELECT @x:=0,@y:= )a
JOIN
(SELECT * from class order by cla,grade desc )b ) d where d.rn<4
(3)數據庫時間轉換函數
dataformat是時間轉字符串 unix_timestamp字符串時間轉時間戳 str_to_date字符串轉時間
(4)當出現數據重復時,用最簡單的方法查詢出哪些數據重復
數據量小時,group by count(1)大于1的
數據量大時,用rownumber(針對sql)
(5)什么情況下索引會失效,假設字段A加了索引?或者 了解mysql的索引嗎?(2次)
只要索引的字段A不是 A >,<,=之類的,都會失效。比如兩個字段 A 和 B,A上有索引,查詢條件如果是 where A = < > XXX就不會失效,即失效的意思是不用索引,不是異常等問題。當然,還有別的,,,比如索引不能這么寫 where B = xxx and A = 0,因為索引字段要優先被查找。(只有 [><]?= 這種模式)
而且>和<也只能在樹索引等有序索引上起作用,如果索引是hash索引,就只能用=
參考鏈接:https://www.cnblogs.com/shynshyn/p/7887742.html
(6)三張表,查詢部門薪水最高的?
#方法一
SELECT dname,sum(salary) s from (
SELECT a.*,b.salary from (
SELECT n.id,n.name,d.dname from ntable n ,dtable d where n.dpid = d.did )a,stable b where a.id = b.id)c GROUP BY dname ORDER BY s desc
#方法二 left join
SELECT dname,sum(salary) s from (
SELECT n.id,n.name,d.dname,s.salary from ntable n LEFT JOIN dtable d on n.dpid = d.did LEFT JOIN stable s on n.id = s.id)
a GROUP BY dname ORDER BY s desc
或者
SELECT d.dname,sum(s.salary)s from ntable n LEFT JOIN dtable d on n.dpid = d.did LEFT JOIN stable s on n.id = s.id
GROUP BY d.dname ORDER BY s desc
#方法三 inner join
SELECT d.dname,sum(s.salary) s FROM (ntable n INNER JOIN dtable d ON n.dpid =d.did) INNER JOIN stable s ON n.id=s.id GROUP BY d.dname ORDER BY s desc
#方法四 join
SELECT d.dname,sum(s.salary) s FROM (ntable n JOIN dtable d ON n.dpid =d.did) JOIN stable s ON n.id=s.id GROUP BY d.dname ORDER BY s desc
(7)mysql 關于join的用法與區別(left join right join 等)
舉個例子說明區別就可以
(8)主鍵重復插入更新
replace into 或者on duplicate key update
https://www.cnblogs.com/chenmh/p/5392540.html
(9)數據庫的外建的作用是什么?
聯表查詢
(10)什么是左連接,右連接?
Left join right join,具體可自行百度
數倉方面:
(11)數倉的過程,了解數倉嗎?數倉用什么搭建的?
關于數倉的問題,之后還會有個專題詳解哦
(12)Etl的緩慢數據維
http://blog.csdn.net/ye1142262478/article/details/58589078
四、數據開發方面:
(1)有序數組查找用什么方法?
二分查找,時間復雜度log2n,(是以2為底,n的對數)
(2)list和tuple的區別
List是可變對象,tuple是不可變,tuple的性能好,效率高
如果想了解更多數據挖掘相關知識,可以私信我:“資料”,可免費領取更多學習資料哦,歡迎分享轉載→http://www.avcorse.com/read-252529.html
下一篇:伊涵的含義是什么
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖