分類/細分技術
首先,讓我說我在這裡有點超出我的深度,所以如果這個問題需要重新措辭或關閉為重複,請告訴我。可能只是因為我沒有合適的詞彙來表達我的問題。
我正在從事一項圖像處理任務,在該任務中我識別圖像中的特徵,然後根據它們的屬性(包括形狀、大小、暗度等)對其進行分類。我對其中的圖像處理部分非常有經驗,但認為我可以改進用於特徵分類的方法。
現在,我為每個測量的參數設置閾值,然後根據一些簡單的邏輯對特徵進行分類,即特徵跨越了哪些閾值。例如(實際的屬性和分組更複雜,但我試圖簡化我的項目中與這個問題無關的部分),假設我將功能分組到“大與暗”、“大與輕”組中和“小”。然後是一個特徵將在“大而黑暗”iff(大小()>sizeThreshold) & (黑暗度()>黑暗閾值)。
目標是使分類與專家級人類所做的分類一致,因此我可以設置閾值以在某些測試集上產生人類和計算機進行的分組之間的最佳匹配,然後希望分類有效新數據很好。
這已經很好地工作了,但是我看到了一種我認為可以修復的特定故障模式。讓我們說功能已知屬於“Big and Dark”。人類之所以這樣分類,是因為雖然只是勉強夠大,但它非常非常暗,這在一定程度上彌補了“大”的不足。我的算法無法正確分類這個特徵,因為分類是基於嚴格的二進制邏輯,並且需要跨越所有閾值。
我想通過使我的算法更好地模仿人類引導過程來改善這種失敗,其中一個參數的不足可以通過另一個參數的豐富來補償。為此,我想獲取我的特徵的每個基本屬性,並將它們轉換為某種分數,這將是該特徵所屬組的預測因子。我已經想到了很多方法來做到這一點,但它們大多是臨時的想法,基於我在向量微積分和物理學方面的背景。例如,我考慮將每個特徵視為特徵屬性的 ND 空間中的一個向量,併計算每個特徵沿某些向量的投影,每個向量都將衡量一個特徵屬於該組的程度。
我確信有一種更嚴格和更成熟的技術來做這類事情,但我的統計分析背景相對較弱,所以我正在尋找一個正確的方向。即使是技術的名稱,或教科書的鏈接也會有所幫助。
TL;DR: 在基於大量描述性參數對對象進行分類時,哪些技術很有用?
聽起來任何線性分類器都可以滿足您的需求。假設你有特徵和特徵的價值是. 然後線性分類器將計算一個分數
(在哪裡是偏移量)。那麼,如果(在哪裡是某個閾值),那麼該特徵屬於一個類(一個組),如果,那麼它不會。請注意,對整個分數(而不是單個特徵值)應用了一個閾值,因此確實可以通過另一個參數的豐度來彌補一個參數的不足。權重可以直觀地解釋,從某種意義上說,權重越高,該特徵越重要(或更具決定性)。 有很多現成的線性分類器可以做到這一點,包括 SVM、LDA(線性判別分析)、線性神經網絡等等。我會從運行線性 SVM 開始,因為它在很多情況下都能很好地工作,並且可以容忍有限的訓練數據。很多環境下也有很多包(比如Matlab和R),大家可以輕鬆試用。SVM 的缺點是計算量很大,所以如果你需要學習很多類,它可能不太合適。
如果您想保留您當前擁有的一些閾值行為,您可以通過 sigmoid 傳遞特徵值,閾值位於正確的位置。例如對於一個功能您當前使用的閾值,首先計算
然後使用學習線性分類器的而不是的。這樣,補償行為只會發生在閾值附近,而距離閾值太遠的東西無法得到補償(這有時是可取的)。 您可以嘗試的另一件事是使用概率分類器,例如樸素貝葉斯或 TAN。樸素貝葉斯幾乎就像一個線性分類器,除了它計算
所以仍然有一個權重之和。這些權重取決於特徵值,但不是像通常的線性分類器那樣通過乘法運算。在這種情況下,分數是對數概率,權重是各個特徵對該對數概率的貢獻。在您的情況下使用它的缺點是您將需要許多箱來存儲您的特徵值,然後學習可能會變得困難。有一些方法可以解決這個問題(例如,使用先驗),但由於您沒有這方面的經驗,因此可能會更加困難。 關於術語:在這種情況下,您所說的“測試集”通常稱為“訓練集”,而您所說的“新數據”則稱為“測試集”。
對於一本書,我會閱讀 Duda、Hart 和 Stork 的“模式識別”。第一章對初學者來說是一個很好的介紹。