中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行FM算法原理分析與實踐

發布時間:2021-12-28 09:26:16 來源:億速云 閱讀:104 作者:柒染 欄目:大數據

本篇文章為大家展示了如何進行FM算法原理分析與實踐,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

簡介

FM是Steffen Rendle在2010年提出的,FM算法的核心在于特征組合,以此來減少人工參與特征組合工作。對于FM,其優勢可分以下三點: 

  1. FM能處理數據高度稀疏場景,SVM則不能;

  2. FM具有線性的計算復雜度,而SVM依賴于support vector。

  3. FM能夠在任意的實數特征向量中生效。


FM原理

FM的數據結構如下

如何進行FM算法原理分析與實踐

FM通過不同特征的組合,生成新的含義。然而,特征組合也隨之帶來一些問題: 

  1. 特征之間兩兩組合容易導致維度災難; 

  2. 組合后的特征未必有效,可能存在特征冗余現象; 

  3. 組合后特征樣本非常稀疏,如果原始樣本中不存在對應的組合,則無法學習參數,那么該組合就顯得無效。

雖然有這些缺點,但是也并不影響FM在廣告推薦領域的地位,每個算法都有風靡一時的過去,抱著敬畏之心的態度去學習是沒問題的。下面,來看看FM的算法原理。

目標函數

我們知道,線性模型的目標函數為:

如何進行FM算法原理分析與實踐

分類模型

FM可以用來進行分類,為了方便,這里使用sklearn里面的iris數據集作為實驗數據,將target等于2的作為正樣本,其余作為負樣本,并采用train_test_split方法劃分訓練集與測試集,然后通過FM構建分類模型,并通過測試集驗證FM的效果。完整Demo代碼如下

from sklearn.datasets import load_irisfrom sklearn.model_selection import train_test_splitfrom pyfm import pylibfmfrom sklearn.feature_extraction import DictVectorizer
def load_data():    """    調用sklearn的iris數據集,篩選正負樣本并構造切分訓練測試數據集    """    iris_data = load_iris()    X = iris_data['data']    y = iris_data['target'] == 2    data = [ {v: k for k, v in dict(zip(i, range(len(i)))).items()}  for i in X]    X_train,X_test,y_train, y_test = train_test_split(data,y, test_size=0.3, random_state=0)    return X_train,X_test,y_train, y_test
X_train,X_test,y_train, y_test = load_data()
v = DictVectorizer()X_train = v.fit_transform(X_train)X_test = v.transform(X_test)
fm = pylibfm.FM(num_factors=2,                num_iter=200,                verbose=True,                task="classification",                initial_learning_rate=0.001,                learning_rate_schedule="optimal")
fm.fit(X_train, y_train)
y_preds = fm.predict(X_test)y_preds_label = y_preds > 0.5from sklearn.metrics import log_loss,accuracy_scoreprint ("Validation log loss: %.4f" % log_loss(y_test, y_preds))print ("accuracy: %.4f" % accuracy_score(y_test, y_preds_label))

實驗結果

通過上面代碼,跑出的結果如下(注:每次實驗結果不一定相同):

Training log loss: 0.12161Validation log loss: 0.1868accuracy: 0.9778

上述內容就是如何進行FM算法原理分析與實踐,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宝兴县| 合阳县| 平乡县| 丰城市| 蛟河市| 三河市| 贵州省| 张家港市| 兰溪市| 镇巴县| 鄂托克旗| 普兰县| 河北省| 吉安市| 祁阳县| 西贡区| 武川县| 涟水县| 张家界市| 绿春县| 谢通门县| 南京市| 法库县| 克什克腾旗| 凤城市| 图木舒克市| 同德县| 泽库县| 仁化县| 黄梅县| 临西县| 榆中县| 碌曲县| 资源县| 石家庄市| 阜康市| 广丰县| 青海省| 章丘市| 靖边县| 安图县|