瓜子網二手車筆試題

一、機器學習模型分類:

監督學習、非監督學習、半監督學習

1、監督學習

(1)監督學習:

從有標籤的訓練數據中學習模型,然後給定某個新數據,利用模型預測它的標籤。

(2)泛化能力:

將模型訓練出來後,適應於新樣本的能力稱爲**“泛化能力”**

(3)監督分類的類別:

根據目標預測變量的類型不同,監督學習大體可分爲迴歸分析分類分析

迴歸分析主要包括線性迴歸(linear regression)和邏輯迴歸(logistic regression),在某種程度上等價於函數的擬合,即選擇一條函數曲線,使其能很好的擬合已知數據,並較好的預測未知數據。

迴歸學習常用的“損失函數”是平方損失函數,在這種情況下,迴歸問題通常用最小二乘法(least Squares method,LSM)來求解。

邏輯迴歸中,若選0.5作爲閾值區分正負樣本,其決策平面是:
wx+b=0

(4)最小二乘法:

最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和尋找數據的最佳函數匹配。利用最小二乘法可以簡便地求得未知的數據,並使得這些求得的數據與實際數據之間誤差的平方和爲最小。最小二乘法還可用於曲線擬合。其他一些優化問題也可通過最小化能量或最大化熵用最小二乘法來表達。

在我們研究兩個變量(x,y)之間的相互關係時,通常可以得到一系列成對的數據(x1,y1.x2,y2… xm,ym);將這些數據描繪在x -y直角座標系中,若發現這些點在一條直線附近,可以令這條直線方程如(式1-1)。
Yj= a0 + a1 X (式1-1) ,其中:a0、a1 是任意實數
爲建立這直線方程就要確定a0和a1,應用《最小二乘法原理》,將實測值Yi與利用(式1-1)計算值(Yj=a0+a1X)的離差(Yi-Yj)的平方和〔∑(Yi - Yj)2〕最小爲“優化判據”。

(5)監督學習算法:

k-近鄰(k-nearest neighbor,knn)、支持向量機(support vector machine,svm)、樸素貝葉斯分類器(naive bayes)、決策樹(Decision tree)、BP反向傳播算法等。

(6)k-近鄰(KNN)算法

算法思想:給定某個待分類的測試樣本,基於某種距離(如歐幾里得距離)度量,找到訓練集合中與其最近的k個訓練樣本。然後基於這k個最近的“鄰居”(k爲正整數,通常很小),進行預測分類。

預測策略:
通常採用的是多數表決的“投票法”。也就是說,將這k個樣本中出現最多的類別,標記爲預測結果。

在這裏插入圖片描述
我們常說,物以類聚,人以羣分,判別一個人是一個什麼樣品質特徵的人,常常可以從他/她身邊的朋友入手,所謂觀其友,而識其人。我們不是要判別上圖中那個綠色的圓是屬於哪一類數據麼,好說,從它的鄰居下手。但一次性看多少個鄰居呢?從上圖中,你還能看到:

  • 如果K=3,綠色圓點的最近的3個鄰居是2個紅色小三角形和1個藍色小正方形,少數從屬於多數,基於統計的方法,判定綠色的這個待分類點屬於紅色的三角形一類。
  • 如果K=5,綠色圓點的最近的5個鄰居是2個紅色三角形和3個藍色的正方形,還是少數從屬於多數,基於統計的方法,判定綠色的這個待分類點屬於藍色的正方形一類。

k-近鄰算法的不足:
首先,“多數表決”分類會砸類別分佈偏斜時浮現缺陷,k的選取十分關鍵。
其次,“少數服從多數”原則也容易產生“多數人的暴政”問題。以多數人名義行使無限權力的情況,稱爲“多數人的暴政”。

解決方案:
權重:越靠近數據點的投票權重越高
距離計算:
常用的距離計算方式有歐式距離(Euclidean distance)、馬氏距離(mahalanobis distance)及海明距離(hamming distance)。

(7)距離計算方式

歐式距離
在這裏插入圖片描述
曼哈頓距離(Manhattan Distance):
在這裏插入圖片描述
切比雪夫距離 ( Chebyshev Distance ):
在這裏插入圖片描述
閔可夫斯基距離(Minkowski Distance):
在這裏插入圖片描述

馬氏距離:
在這裏插入圖片描述

(8)懶惰學習(lazy learning)和急切學習(eager learning):

懶惰學習:
是指他沒有顯式的訓練過程。此類學習方法,在訓練階段僅僅將樣本保存起來,所以訓練時間開銷爲0。待收到測試樣本時,纔開始處理。
k-近鄰算法是典型的懶惰學習。

急切學習:
是指在訓練階段就“火急火燎”的從訓練樣本中建模型、調參數的學習方法。

2、非監督學習

韓家煒教授曾說:“非監督學習,本質上就是聚類(cluster)的近義詞”

(1)非監督學習算法:

k均值聚類(k-means clustering)、關聯規則分析(association rule,如apriori算法)、主成分分析(principal components analysis,PCA)、隨機森林(random forests)、受限玻爾茲曼機(restricted boltzmann Machine, RBM)等。

在深度學習裏最有前景的無監督學習算法:生成對抗網絡(generative adversarial networks,GAN)。

(2)k均值聚類

由聚類所生成的簇(cluster)是一組數據對象的集合,這些對象的特性是,同一個簇中的對象彼此相似,而與其他簇中的對象相異,且沒有預先定義的類。

k均值聚類步驟:

K-means是一個反覆迭代的過程,算法分爲四個步驟:

1) 選取數據空間中的K個對象作爲初始中心,每個對象代表一個聚類中心;

2) 對於樣本中的數據對象,根據它們與這些聚類中心的歐氏距離,按距離最近的準則將它們分到距離它們最近的聚類中心(最相似)所對應的類;

3) 更新聚類中心:將每個類別中所有對象所對應的均值作爲該類別的聚類中心,計算目標函數的值;

4) 判斷聚類中心和目標函數的值是否發生改變,若不變,則輸出結果,若改變,則返回2)。

k均值聚類的缺點:

  • k值需要用戶事先給出
  • 聚類質量對初始聚類中心的選取有很強的依賴性
  • 對噪聲點比較敏感,聚類結果容易受噪聲點的影響
  • 只能發現球形簇,對於其他任意形狀的簇,頓感無力

3、半監督學習

半監督學習就是以“已知之認知(標籤化的分類信息)”,擴大“未知之領域(通過聚類思想將未知事物歸類爲已知事物)”

(1)半監督學習算法:

生成式方法、半監督支持向量機、圖半監督學習、半監督聚類等

4、強化學習

“強化學習”亦稱“增強學習”,但他與監督學習和非監督學習都有所不同。
強化學習強調的是:在一系列的情景下,選擇最佳決策,它講究通過多步恰當的決策,來逼近一個最優的目標,因此,它是一種序列多步決策的問題。

在這裏插入圖片描述
從圖上我們可以看到強化學習它由兩部分組成:智能體和環境。我們可以這樣理解:

俗話解釋一下:比如,我們從沙發旁走到門口,當我們起身之後,首先大腦獲取路的位置信息,然後我們確定從當前位置向前走一步,不幸運的是我們撞牆了,這明顯是個負反饋,因此環境會給我們一個負獎勵,告訴我們這是一個比較差的走路方式,因此我們嘗試換個方向走(走哪個方向比較好呢,後文會會講到隨機策略、確定性策略等策略決策《強化學習系列(3):強化學習策略講解》),就這樣不斷的和環境交互嘗試,最終找到一套策略,確保我們能夠從沙發旁邊走到門口。在這個過程中會得到一個最大的累計期望獎勵。

二、bootstrap數據是什麼意思?()

在這裏插入圖片描述
統計學中的方法:有放回的從樣本中抽取樣本

三、有效解決過擬合的方法是:

抑制過擬合的策略:

  • 數據增強
  • Early stopping
  • 增加噪聲
  • 簡化網絡結構
  • Dropout
  • 貝葉斯方法

過擬合:https://www.zhihu.com/question/59201590

四、神經網絡的激活函數

在這裏插入圖片描述
在深度學習中,常用的激活函數主要有:sigmoid函數,tanh函數,ReLU函數。

1、sigmoid函數

在這裏插入圖片描述
Sigmoid函數的特點是會把輸出限定在0~1之間,如果是非常大的負數,輸出就是0,如果是非常大的正數,輸出就是1,這樣使得數據在傳遞過程中不容易發散。

Sigmod有兩個主要缺點,一是Sigmoid容易過飽和,丟失梯度。從Sigmoid的示意圖上可以看到,神經元的活躍度在0和1處飽和,梯度接近於0,這樣在反向傳播時,很容易出現梯度消失的情況,導致訓練無法完整;二是Sigmoid的輸出均值不是0,基於這兩個缺點,SIgmoid使用越來越少了。

2、tanh函數

在這裏插入圖片描述
tanh是Sigmoid函數的變形,tanh的均值是0,在實際應用中有比Sigmoid更好的效果。
tanh函數的缺點同sigmoid函數的第一個缺點一樣,當 zz 很大或很小時,g′(z)g′(z) 接近於 00 ,會導致梯度很小,權重更新非常緩慢,即梯度消失問題。

3、ReLU函數

在這裏插入圖片描述
ReLU函數的優點:
  (1)在輸入爲正數的時候(對於大多數輸入 zz 空間來說),不存在梯度消失問題。
  (2) 計算速度要快很多。ReLU函數只有線性關係,不管是前向傳播還是反向傳播,都比sigmod和tanh要快很多。(sigmod和tanh要計算指數,計算速度會比較慢)
   
ReLU函數的缺點:
  (1)當輸入爲負時,梯度爲0,會產生梯度消失問題。

五、腦筋急轉彎

在這裏插入圖片描述

六、哈希表 (未解答)

設哈希表長m=14,哈希函數H(key)=key%11。表中已有4個結點:addr(15)=4,addr(38)=5,addr(61)=6,addr(84)=7,其餘地址爲空。如果用二次探測再散列處理衝突,關鍵字爲49的結點的地址是 9

七、二進制數據的運算

1、二進制的原碼、反碼、補碼

對於有符號數而言:
二進制的最高位是符號位:0表示正數(+),1表示負數(-)
正數的原碼、反碼、補碼都一樣
負數的反碼 = 它的符號位不變,其他位取反
負數的補碼 = 它的反碼 +1
0的反碼、補碼都是0

例題:X=+0111001,Y=+1001101,求[X-Y]補=11101100

解答:x原碼=0011 1001
x補碼=x原碼=0011 1001

y原碼=0100 1101
-y原碼=1100 1101
-y反碼=1011 0010
-y補碼=1011 0011

[x-y]補碼=x補碼-y補碼=x補碼+[-y]補碼=0011 1001 +1011 0011

2、十進制轉換爲二進制

除k取餘法:

例題:-125 的反碼是多少 1000 0010

解答:125除2取餘=0111 1101(2)
-125=1111 1101
-125反碼=1000 0010

八、赫夫曼樹 (未解決)

例題:以數據集{1,6,8,2,9,4}爲權值構造一棵赫夫曼樹,其帶權路徑長度爲 70

1、

九、數學題(未解答)

組成數字1到1234的所有數字的各位的總和是15895

解答:

十、完全二叉樹計算葉子節點

完全二叉樹有一個很有趣的性質:結點從1開始編號,層序。那麼分每一個結點(編號爲i)的左孩子結點是2i,右孩子結點編號是2i+1.
反之,根據孩子結點的編號可以推知父結點的編號:孩子結點編號的下取整。

下面是較聰明的應用:

一棵完全二叉樹有1001個結點。其中葉結點的個數是:501個。

分析:1001個結點,則最後一個結點的編號是1001,那麼它的父親結點編號是500,注意,這個並不一定是倒數第二層的最後一個結點。那麼從501號結點開始往後都是葉子結點,因此,葉子結點有501個。

完全一樣道理的題目:

若一棵二叉樹有768個結點,則該二叉樹葉子結點的個數是:384個。

分析:768個結點,那麼就意味着最後一個結點的父結點編號是384,從385號結點開始到最後一個全是葉子結點,因此共有384個葉子結點。

原文鏈接:https://blog.csdn.net/u011240016/article/details/52797592

例題:一顆完全二叉樹的節點數量爲666,那麼這棵樹上的葉子節點數爲333

解答:666爲偶數,2i=666,則i=333,則葉子節點爲666-333.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章