2013-03-22 100 views
1

我在我的智能設備上實現k-最近鄰算法,以便從識別數據識別人類活動。我將解釋我將如何實施它。你們能否告訴我我正在採取的措施有什麼改進,並回答我可能會在途中詢問的任何問題?k-最近鄰算法

這些步驟如下:

  1. 我下載一個labelled dataset它們一起由來自加速度計的三軸加速度的與描述性的標籤。我將選擇這些數據集中的一些數據,僅記錄那些我希望認識的活動(在我的例子中是走路,坐着,站立)。
  2. 然後,我將從每個加速度計數據窗口(即從包含128個加速度計數據的數據集中的每個單個記錄)中提取特徵(來自我的情況的幅度加速度的平均值,最小值,最大值,標準偏差)數據集,我會將這些特徵與JSON格式的窗口標籤(作爲一條記錄)一起存儲在設備上的文本文件中。因此,訓練數據集中的一個記錄/樣本將由以下組成:平均值,最小值,最大值,標準偏差和標籤在分類步驟中,從收集的數據中,我還將獲得一個加速度計數據窗口,上面提到的4個功能。因此,我需要將收集的數據的4個特徵與訓練數據中的每個樣本進行比較。我應該如何找到它們之間的相似性,因爲一個記錄將包含4個特徵?

作爲第(3)點問題的一個解決方案,我想通過計算它們之間的差異,然後從每個特徵中挑出大多數來考慮每個特徵的k-最近鄰。你覺得怎麼樣?你可以提出任何優化?謝謝:)

+0

特徵空間是4維,你可能想要在4D中採用歐幾里得距離之前對每個軸進行歸一化。不是每個維度的距離。 – Memming 2013-03-22 14:21:26

+0

你是什麼意思?@Memming – user1135357 2013-03-22 14:26:01

+0

也許你可以'zscore'。 (或者,您可以使用Mahalanobis距離而不是標準化)。 – Memming 2013-03-22 16:36:05

回答

1

非常有趣和有趣的應用程序! ;-)

那麼,其中一個問題當然是知道什麼時候開始和停止計算這些功能,但我想你已經有一些解決方案(固定時間窗或按鈕...) 。 您當然可以使用knn分類器來做到這一點,但這當然不會是我的第一選擇,因爲它對異常值非常敏感(如果您的措施在單個培訓課程中搞砸了,它將永遠影響您的下一個分類)。 所以我寧願去一個高斯模型:

  1. 記錄大約10至20實施例爲每個活動
  2. 計算每個活動
  3. 平均向量和對角協方差矩陣(即,4個值的矢量)
  4. 在測試時,您計算高斯可能性,即您的新觀察向量由三個高斯模型之一生成,並且您選擇具有最大可能性的活動。
0

我會以不同的方式解決問題。我會在較長的時間內(比如1周)採集大量樣本,然後在其中找到聚類。之後,只要當前測量值接近其中一個羣集,用戶就可以標記羣集。集羣的數量應限制在少數活動中,以便用戶只需標記幾個集羣。

缺點:

  • 需要從用戶/沒有立即滿足訓練數據。
  • 實施起來比較複雜。

優點:

  • 爲用戶定製的。
  • 不受外部/非個人培訓數據的限制。
  • 使用其他數據(光照/溫度/ GPS /時間/聲音/相機)。
  • 可能更準確。
  • 算法的連續重新訓練是可能的。
  • 隨着更多數據的可用,準確性隨着時間而改善。
  • 可以將標籤數據上傳到中央服務器,並在未來版本的應用程序中使用它。