আমার কাছে এটি সম্পূর্ণ পরিষ্কার নয় যে আপনি যা জিজ্ঞাসা করছেন তা আপনার সত্যিকারের প্রয়োজন: মেশিন লার্নিংয়ের একটি সাধারণ প্রিপ্রোসেসিং পদক্ষেপ হ'ল মাত্রা হ্রাস + হোয়াইটেনিং, যার অর্থ পিসিএ করা এবং উপাদানগুলি মানক করা, অন্য কিছুই নয়। তবে তবুও আপনার প্রশ্নটি যেমন প্রণয়ন করা হয়েছে তেমন ফোকাস করব, কারণ এটি আরও আকর্ষণীয়।
যাক হতে কেন্দ্রিক সারি এবং কলাম মধ্যে ভেরিয়েবল ডাটা পয়েন্ট সঙ্গে ডেটা ম্যাট্রিক্স। পিসিএর পরিমাণ একক মানের পচন যেখানে মাত্র মাত্রার উপাদান হ্রাস করার জন্য আমরা কেবল উপাদান রাখি । এই উপাদানগুলির একটি অর্থোগোনাল "ফ্যাক্টর রোটেশন" বোঝায় যে একটি অরথোগোনাল ম্যাট্রিক্স নেবে এবং এটিকে পচে যায়:এক্সn × d
এক্স =ইউ এস ভি⊤≈ইউটএসটভী⊤ট,
টকে × কেআরএক্স ≈ইউটএসটভী⊤ট=ইউটআর আর⊤এসটভী⊤ট=n - 1-----√ইউ⊤টআরআবর্তিতমানসম্পন্ন স্কোর⋅আর⊤এসটভী⊤ট/n - 1-----√ঘোরানো লোডিং⊤।
এখানে উপাদানগুলি ঘোরানো হয় এবং দ্বিতীয় শব্দটি ঘোরানো লোডগুলি ট্রান্সপোজডের প্রতিনিধিত্ব করে। ঘূর্ণনের পরে প্রতিটি উপাদানটির বৈচিত্রটি সংশ্লিষ্ট লোডিং ভেক্টরের স্কোয়ারের যোগফল দ্বারা দেওয়া হয়; আবর্তনের আগে এটি কেবল । আবর্তনের পরে এটি অন্যরকম কিছু।
n - 1-----√ইউটআরগুলি2আমি/ (এন-1)
এখন আমরা গাণিতিক শর্তে সমস্যাটি প্রস্তুত করতে প্রস্তুত: অবিরত লোডিংগুলি দেওয়া হয়েছে , ঘূর্ণন ম্যাট্রিক্স যেমন ঘোরানো লোডিং, find , প্রতিটি কলামে বর্গের সমান সমষ্টি হয়েছে।এল =ভীটএসট/n - 1-----√আরএল আর
এর সমাধান করা যাক। ঘোরার পরে বর্গাকার কলামের তির্যক উপাদানগুলির সমান এটি বোঝায়: ঘূর্ণনটি কেবল এই সূত্র অনুসারে পুনরায় বিতরণ করে যা মূলত তাদের মধ্যে দেওয়া হয়। আমাদের এগুলিকে পুনরায় বিতরণ করতে হবে তারা সকলেই তাদের গড় মান সমান হয়ে যায় ।
( এল আর)⊤এল আর =আর⊤এস2n - 1আর ।
গুলি2আমি/ (এন-1)μ
আমি মনে করি না যে এটির একটি বদ্ধ ফর্ম সমাধান আছে এবং বাস্তবে অনেকগুলি ভিন্ন সমাধান রয়েছে। তবে একটি সমাধান সহজেই অনুক্রমিক ফ্যাশনে তৈরি করা যেতে পারে:
- প্রথম উপাদান এবং তৃতীয় উপাদান নিন । প্রথমটির মধ্যে বৈকল্পিকতা রয়েছে এবং একটিতে বৈকল্পিক ।টσসর্বোচ্চ> μσসর্বনিম্ন< μ
- এই দুটি মাত্র ঘোরান যাতে প্রথমটির বৈকল্পিক সমান হয় । 2D মধ্যে ঘূর্ণন ম্যাট্রিক্স শুধুমাত্র পরামিতি এক উপর নির্ভর করে এবং এটি ডাউন সমীকরণ লিখতে এবং গনা প্রয়োজনীয় সহজ । প্রকৃতপক্ষে, এবং রূপান্তরের পরে প্রথম পিসি বৈকল্পিক যা থেকে আমরা অবিলম্বেμθθ
আর2D= (কোসাইন্θ- পাপθপাপθকোসাইন্θ)
কোসাইন্2θ ⋅σসর্বোচ্চ+ +পাপ2θ ⋅σসর্বনিম্ন=কোসাইন্2θ ⋅σসর্বোচ্চ+ ( 1 -কোসাইন্2θ ) ⋅σসর্বনিম্ন= μ ,
কোসাইন্2θ =μ -σসর্বনিম্নσসর্বোচ্চ-σসর্বনিম্ন।
- প্রথম উপাদানটি এখন সম্পন্ন হয়েছে, এতে বৈচিত্র রয়েছে ।μ
- পরবর্তীতম জুটিতে এগিয়ে যান, সবচেয়ে বড় বৈকল্পিকের সাথে অংশটি নিয়ে এবং এককটি ক্ষুদ্রতম বৈকল্পিকের সাথে। যান # 2।
এটি 2 ডি ঘূর্ণনের ক্রম দ্বারা সমস্ত রূপগুলি সমানভাবে পুনরায় বিতরণ করবে । এই সমস্ত ঘূর্ণন ম্যাট্রিক একসাথে গুণিত করা সামগ্রিক ফলন করবে ।( কে - 1 )আর
উদাহরণ
নিম্নলিখিত ম্যাট্রিক্সটি বিবেচনা করুন:গড় বৈকল্পিক । আমার অ্যালগরিদম নিম্নলিখিত হিসাবে এগিয়ে যাবে:এস2/ (এন-1)
⎛⎝⎜⎜⎜10000060000300001⎞⎠⎟⎟⎟।
5
ধাপ 1: ঘোরান PC1 এবং PC4 যাতে PC1 ভ্যারিয়েন্স পায় । ফলস্বরূপ, পিসি 4 ভেরিয়েন্স ।51 + ( 10 - 5 ) = 6
পদক্ষেপ 2: পিসি 2 (নতুন সর্বাধিক বৈকল্পিক) এবং পিসি 3 ঘুরান যাতে পিসি ভেরিয়েন্স হয় । ফলস্বরূপ, পিসি ভেরিয়েন্স ।53 + ( 6 - 5 ) = 4
পদক্ষেপ 3: পিসি 4 (নতুন সর্বাধিক বৈকল্পিক) এবং পিসি 3 ঘুরান যাতে পিসি ভেরিয়েন্স হয় । ফলস্বরূপ, পিসি 3 বৈকল্পিক ।54 + ( 6 - 1 ) = 5
সম্পন্ন.
আমি মাতলাব স্ক্রিপ্ট লিখেছি যা এই অ্যালগরিদম প্রয়োগ করে (নীচে দেখুন)। এই ইনপুট ম্যাট্রিক্সের জন্য, ঘোরার কোণগুলির ক্রম হ'ল:
48.1897 35.2644 45.0000
প্রতিটি পদক্ষেপের পরে উপাদানগুলির রূপগুলি (সারিগুলিতে):
10 6 3 1
5 6 3 6
5 5 4 6
5 5 5 5
চূড়ান্ত রোটেশন ম্যাট্রিক্স (তিনটি 2 ডি রোটেশন ম্যাট্রিক্সের পণ্য):
0.6667 0 0.5270 0.5270
0 0.8165 0.4082 -0.4082
0 -0.5774 0.5774 -0.5774
-0.7454 0 0.4714 0.4714
এবং চূড়ান্ত ম্যাট্রিক্স হল:( এল আর)⊤এল আর
5.0000 0 3.1623 3.1623
0 5.0000 1.0000 -1.0000
3.1623 1.0000 5.0000 1.0000
3.1623 -1.0000 1.0000 5.0000
কোডটি এখানে:
S = diag([10 6 3 1]);
mu = mean(diag(S));
R = eye(size(S));
vars(1,:) = diag(S);
Supdated = S;
for i = 1:size(S,1)-1
[~, maxV] = max(diag(Supdated));
[~, minV] = min(diag(Supdated));
w = (mu-Supdated(minV,minV))/(Supdated(maxV,maxV)-Supdated(minV,minV));
cosTheta = sqrt(w);
sinTheta = sqrt(1-w);
R2d = eye(size(S));
R2d([maxV minV], [maxV minV]) = [cosTheta sinTheta; -sinTheta cosTheta];
R = R * R2d;
Supdated = transpose(R2d) * Supdated * R2d;
vars(i+1,:) = diag(Supdated);
angles(i) = acosd(cosTheta);
end
angles %// sequence of 2d rotation angles
round(vars) %// component variances on each step
R %// final rotation matrix
transpose(R)*S*R %// final S matrix
পাইথনের কোডটি এখানে দেওয়া হয়েছে @ ফিলং দ্বারা:
def amoeba_rotation(s2):
"""
Parameters
----------
s2 : array
The diagonal of the matrix S^2.
Returns
-------
R : array
The rotation matrix R.
Examples
--------
>>> amoeba_rotation(np.array([10, 6, 3, 1]))
[[ 0.66666667 0. 0.52704628 0.52704628]
[ 0. 0.81649658 0.40824829 -0.40824829]
[ 0. -0.57735027 0.57735027 -0.57735027]
[-0.74535599 0. 0.47140452 0.47140452]]
http://stats.stackexchange.com/a/177555/87414
"""
n = len(s2)
mu = s2.mean()
R = np.eye(n)
for i in range(n-1):
max_v, min_v = np.argmax(s2), np.argmin(s2)
w = (mu - s2[min_v]) / (s2[max_v] - s2[min_v])
cos_theta, sin_theta = np.sqrt(w), np.sqrt(1-w)
R[:, [max_v, min_v]] = np.dot(
R[:, [max_v, min_v]],
np.array([[cos_theta, sin_theta], [-sin_theta, cos_theta]]))
s2[[max_v, min_v]] = [mu, s2[max_v] + s2[min_v] - mu]
return R
নোট করুন যে এই সমস্যাটি সম্পূর্ণরূপে নিম্নলিখিতটির সমতুল্য: প্রদত্ত সহ ভেরিয়েবলগুলি , একটি আবর্তন (অর্থাত্ একটি নতুন অরথোগোনাল ভিত্তিক) সন্ধান করুন যা সমান বৈকল্পিক সহ ভেরিয়েবলগুলি অর্জন করবে (তবে অবশ্যই এটি আর সম্পর্কযুক্ত নয়)।টσ2আমিট